代码审计PHP项目注入&搜索&调试&SQL监控
Posted 遗憾zzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码审计PHP项目注入&搜索&调试&SQL监控相关的知识,希望对你有一定的参考价值。
一、PhpStorm+Xdebug环境搭建&代码审计思路
PhpStorm配置
注意每一步配置完后,需要apply一下
每次配置完php.ini都需要重启apache生效
php.ini配置文件中;是注释符
添加php解释器,这里选择php5.6.9版本的
添加php.exe可执行文件路径,添加xdebug方便后续调试程序。
配置xdebug
在php.ini中配置xdebug
在文件尾部添加如下配置(部分路径需自己修改)
[XDebug]
xdebug.profiler_output_dir="C:\\phpstudy\\PHPTutorial\\tmp\\xdebug" ;optional
xdebug.trace_output_dir="C:\\phpstudy\\PHPTutorial\\tmp\\xdebug" ;optional
zend_extension="D:\\phpstudy_pro\\Extensions\\php\\php5.6.9nts\\ext\\php_xdebug.dll" ;xdebug扩展的位置,每个人可能不一样,必须确定的
xdebug.remote_enable=On ;启动远程调试,必须确定
xdebug.remote_host=127.0.0.1 ;需要调试的远程主机
xdebug.remote_port=9001 ;远程主机与phpstorm通信的端口,必须确定
xdebug.remote_handler=dbgp ;通信协议,optional
xdebug.auto_trace=on ;启用代码自动跟踪,optional
xdebug.idekey=PhpStorm,optional
xdebug.collect_return=On ;收集返回值,optional
xdebug.collect_params=On ;收集参数,optional
配置完后,重启apache服务
返回到PhpStorm的设置中进行xdebug相关的配置
配置Debug,Debug port 和之前php.ini中的配置保持一致。
配置servers
验证xdebug是否有效
至此配置都OK嗷
参考的博客:https://blog.csdn.net/Claming_D/article/details/108115639
代码审计思路
sql注入漏洞挖掘
可控变量 和 特定函数
可控变量对应 : 构造恶意的payload进行攻击
如:数据库函数去操作变量就可能会形成sql注入漏洞
代码审计:关键字搜索,根据特定漏洞经常会使用到的函数或接受变量方式进行特定定位挖掘
SQL监控:监控数据库执行的语句、日志等,根据执行的sql语句去定位到代码块,可控变量进行分析
功能点:网站行业分类、应用功能,分析可能存在的安全问题,定位代码
二、Bluecms源码系统-关键字搜索-(无过滤)
直接快捷键 ctrl+shift+F
接着我们定位变量进行代码审计
分析得出这里接受一个get传参赋值给了变量$ad_id,如果满足正确的条件则执行sql语句:
$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);
接着继续定位getone()这个自定义函数
可以看到它自定义的一些操作数据库的函数,接着我们审计得出:
$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);
这个语句可能存在sql注入,那么直接尝试构造用sqlmap进行验证
直接验证得出存在sql注入
三、某Q业务源码系统-数据库监控(无过滤)
直接使用Seay源代码审计系统的插件,mysql监控
这里有数据库监控发现一个可疑带有参数的sql语句
SELECT * FROM `dd` WHERE `ip` LIKE '127.0.0.1'LIMIT 0 , 30
这里查询 dd这个表然后条件为ip 匹配 127.0.0.1的sql语句,那么ip很有可能就是注入点,定位代码
可以看到它定义了一个函数function ywdd($ip)
里面接收的是变量ip
接着定位
就可以很明显的这里是服务端直接接受的ip访问,那么这里ip可控,并且带入数据库查询了就可能存在sql注入
数据库监控确实监控到了修改的ip,接着我们构造sql语句
第二种数据库监控脚本
四、某QQ业务源码系统-本地断点调试(执行流程)
直接通过phpstorm+xdebug进行断点调试分析
一步一步的调试分析
五、74CMS招聘源码系统-功能点分析(有过滤)
这里还是用sql数据库监控,去监控sql语句
可以看到这个cms就多了很多sql语句以及参数
然后这里要看一下cms框架定义的过滤
接着继续分析由于cms的框架会过滤掉sql语句,那么在sql注入中,二次注入就有可能能绕过,于是在cms功能点中找二次注入
先在创建简历处,创建一个
一直到教育经历这里。在学校名称处插入我们的sql注入语句
aa',`fullname` =version()#
返回我创建的简历就可以看到在真实姓名处,把数据库的版本号注入了出来
这里的注入相当于在插入的时候虽然被过滤,但是在更新的时候值被数据库显示出来
以上是关于代码审计PHP项目注入&搜索&调试&SQL监控的主要内容,如果未能解决你的问题,请参考以下文章
10-PHP代码审计——thinkphp3.2.3 update注入漏洞
12-PHP代码审计——ThinkPHP5.0.15 update注入分析
12-PHP代码审计——ThinkPHP5.0.15 update注入分析