0x00 漏洞描述

D-Link DIR-859设备LAN层中出现未经身份验证的命令执行漏洞(CVE-2019-17621)

附件:

cgibin 160576

0x01 漏洞分析

这个漏洞是在SSDP协议处理过程中造成的,我们向D-Link发送http请求报文,报文的HTTP头字段都会存储到环境变量中,这意味着getenv所获取到的值都是我们可控的。

如下,HTTP_ST是可控的,最终参数传入了lxml_dc_system中进行命令执行

我们使用破壳平台进行漏洞检测该种模式的漏洞。

0x03 漏洞检测

首先按照source点是getenv的返回值,sink点是lxmldbc_system来进行分析,根据此编写规则

MATCH (n:identifier) WHERE n.callee = "getenv" AND n.index=-1 WITH collect(id(n)) as sourceSet
MATCH (n:identifier) WHERE n.callee = "lxmldbc_system" AND (n.index=2 or n.index=3 or n.index=4) WITH sourceSet,collect(id(n)) as sinkSet 
call VQL.taintPropagation(sourceSet,sinkSet) YIELD taintPropagationPath RETURN taintPropagationPath

最后结果应为

点击第一个查看详细路径

寻找到了这条漏洞触发路径。