欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

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

来源: 作者: 时间:2019-02-24 21:51 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

漏洞信息

本系列中的前三篇文章参考如下:
通过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台设备,主要用户分布于美国和马其顿.

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

漏洞分析
本次分析使用固件的是TEW751DR_FW103B03.
Binwalk解包后找到getcfg.php,位置如图
当AUTHORIZED_GROUP>=0的时候,getcfg就正常执行代码功能.

POC中传入的参数为SERVICES=DEVICE.ACCOUNT
$file最后可以拼接为/htdocs/webinc/getcfg/DEVICE.ACCOUNT.xml.php
打开这个文件,可以看到它能读取设备的各种信息包括用户名和密码

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


使用如下脚本调试存在漏洞的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

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

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

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

漏洞信息

本系列中的前三篇文章参考如下:
通过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台设备,主要用户分布于美国和马其顿.

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

www.wnhack.com



漏洞分析
本次分析使用固件的是TEW751DR_FW103B03.
Binwalk解包后找到getcfg.php,位置如图
当AUTHORIZED_GROUP>=0的时候,getcfg就正常执行代码功能.

POC中传入的参数为SERVICES=DEVICE.ACCOUNT
$file最后可以拼接为/htdocs/webinc/getcfg/DEVICE.ACCOUNT.xml.php
打开这个文件,可以看到它能读取设备的各种信息包括用户名和密码

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

copyright 无奈人生




使用如下脚本调试存在漏洞的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
www.wnhack.com
sub_405AC0调用后可以看已经把”AUTHORIZED_GROUP=1”存入全局变量

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

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

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。