美文网首页
小白的跨方向IoT DIR850L-A1固件漏洞分析

小白的跨方向IoT DIR850L-A1固件漏洞分析

作者: Cyc1e | 来源:发表于2019-10-25 09:46 被阅读0次

    固件下载

    我是到官网的查询下载的,下载地址:http://support.dlink.com.cn/ProductInfo.aspx?m=DIR-850L
    也可以直接到ftp服务器上下载:ftp://ftp2.dlink.com/PRODUCTS/DIR-850L/REVA/DIR-850L_REVA_FIRMWARE_1.14.B07_WW.ZIP

    固件解压

    下载的bin文件利用binwalk进行解压

    binwalk -Me DIR850L_FW113WWb01_f4if.bin
    

    起文件系统的路径为

    /_DIR850L_FW113WWb01_f4if.bin.extracted/squashfs-root
    

    其中web服务放置于htdocs中,我是进行白盒跟着早前的分析文章进行分析,所以将文件夹打包到本地查看代码。

    漏洞分析

    漏洞分析得前提是要会用ida逆向cgi文件来分析web服务调用逻辑。
    0x01 getcfg.php 任意文件读取
    查看\htdocs\web\getcfg.php的源代码👇

    这个代码逻辑特别简单了,就是SERVICES参数的值传入变量$GETCFG_SVC中,最后拼接到了变量$file中,利用dophp函数给load出来了,也就是说我们可以控制SERVICES的值,即可以控制file指向的文件,虽然说后面拼接了'.xml.php',不过虽然事小白的我也知道后缀为'.xml.php'有管理员信息的文件~,不过显然这是一个else条件触发的代码,所以看一下前面的if条件👇

    这里需要判断一个AUTHORIZED_GROUP的值和CACHE,CACHE的简单,不输入或者不为True就好了,AUTHORIZED_GROUP这个就要涉及到分析cgi的事了,其中cgibin文件是负责解析php的,参考https://www.anquanke.com/post/id/175625来进行分析(毕竟一个IoT小白得先跟着一步一步来)👇

    通过sess_validate来解析验证AUTHORIZED_GROUP变量值,并通过sprintf处理作为全局变量,之后调用了sobj_add_string和sobj_add_char,由于在调用 sobj_add_char 函数时,会用换行符来分隔参数,也就是说构造 %0aAUTHORIZED_GROUP=1 即AUTHORIZED_GROUP会当作参数处理,处理后并作为全局变量,所以也就可以用来绕过is_power_user函数的身份检验,所以payload可以为👇

    SERVICES=DEVICE.ACCOUNT&[随便啥都行]=%0aAUTHORIZED_GROUP=1
    

    就可以触发相关逻辑代码,实现任意文件读取。

    0x02 fatlady.php 任意文件读取
    由于用户向hedwig.cgi发送xml数据时,hedwig.xml会调用fatlady.php 文件进行处理,查看fatlady.php文件代码,路径\htdocs\webinc\fatlady.php👇

    同理,service直接拼接到了变量$target上,之后调用dophp进行load,导致直接读取任意以php为后缀的文件,同上,我们可以读取DEVICE.ACCOUNT.xml.php文件,即利用service进行跨目录读取,例如构造service的值为../../../htdocs/webinc/getcfg/DEVICE.ACCOUNT.xml,这里POST 数据包中 xml 数据带上 postxml标签即可,如👇

    <?xml version "1.0" encoding "utf-8"><postxml><module><service>../../../htdocs/webinc/getcfg/DEVICE.ACCOUNT.xml</service></module></postxml>
    

    发送xml数据,将header中的Content-Type设置为text/xml即可。

    未完待续。。。。。。

    相关文章

      网友评论

          本文标题:小白的跨方向IoT DIR850L-A1固件漏洞分析

          本文链接:https://www.haomeiwen.com/subject/vafjvctx.html