路由器漏洞复现分析第四弹:CVE-2018-7034 – 作者:kczwa1

漏洞信息

路由器漏洞复现分析第4弹:CVE-2018-7034

本系列中的前三篇文章参考如下:

通过CVE-2017-17215学习路由器漏洞分析,从入坑到放弃

路由器漏洞复现分析第二弹:CNVD-2018-01084

路由器漏洞复现分析第三弹:DVRF INTRO题目分析

TrendNET路由器权限绕过漏洞,攻击者通过设置$AUTHORIZED_GROUP >= 1绕过权限验证

漏洞参考信息:https://blogs.securiteam.com/index.php/archives/3627

受影响的路由器版本

TEW-751DR – v1.03B03

TEW-752DRU – v1.03B01

通过zoomeye搜索,能找到508台设备,主要用户分布于美国和马其顿.

路由器漏洞复现分析第4弹:CVE-2018-7034

使用curl -d “SERVICES=DEVICE.ACCOUNT%0aAUTHORIZED_GROUP=1” http://[IP]/getcfg.php 命令可以直接获取到路由器的用户名和密码

路由器漏洞复现分析第4弹:CVE-2018-7034

漏洞分析

本次分析使用固件的是TEW751DR_FW103B03.

Binwalk解包后找到getcfg.php,位置如图

当AUTHORIZED_GROUP>=0的时候,getcfg就正常执行代码功能.

路由器漏洞复现分析第4弹:CVE-2018-7034

POC中传入的参数为SERVICES=DEVICE.ACCOUNT

$file最后可以拼接为/htdocs/webinc/getcfg/DEVICE.ACCOUNT.xml.php

打开这个文件,可以看到它能读取设备的各种信息包括用户名和密码 

路由器漏洞复现分析第4弹:CVE-2018-7034

造成验证漏洞的函数在htdoc/cgibin的 phpcgi_main函数,当cgibin_parse_request函数处理http请求的时候,sub_405AC0函数会获取AUTHORIZED_GROUP并存下来, 之后再调用sess_validate()作验证,因此可以非授权用户可以直接给AUTHORIZED_GROUP赋值来绕过验证

路由器漏洞复现分析第4弹:CVE-2018-7034

路由器漏洞复现分析第4弹:CVE-2018-7034

使用如下脚本调试存在漏洞的cgibin:

chroot . ./qemu  -0"phpcgi" -E REQUEST_METHOD="POST"  -EREQUEST_URI="getcfg?AUTHORIZED_GROUP=1" -E CONTENT_LENGTH=18 -ECONTENT_TYPE="application/x-www-form-urlencoded" -g $PORT -EREMOTE_ADDR="127.0.0.1"   -strace ./htdocs/cgibin "kkkkkkkkkkkk"

cgibin_parse_request中的parse_uri函数会调用sub_405AC0,此处从request_uri中取”?”后的字符,作为参数传入sub_403864

路由器漏洞复现分析第4弹:CVE-2018-7034

sub_405AC0调用后可以看已经把”AUTHORIZED_GROUP=1”存入全局变量

路由器漏洞复现分析第4弹:CVE-2018-7034

再继续执行到sess_validate()执行完毕

路由器漏洞复现分析第4弹:CVE-2018-7034

后面再将得到的这个值写入/var/run/xmldb_sock

路由器漏洞复现分析第4弹:CVE-2018-7034

*本文作者:kczwa1,转载请注明来自FreeBuf.COM

来源:freebuf.com 2018-03-26 10:00:39 by: kczwa1

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论