代码审计环境配置

主要针对mac下的php、java代码审计环境写一个配置记录

Xdebug工作原理

IDE集成了一个遵循DBGp的Xdebug插件,当开启它时,会在本地开启xdebug调试服务,默认监听9000端口

当浏览器发送带有XDEBUG_SESSION_START的参数,服务器接收到会将其转发到后端php处理,如果php开启了xdebug模块,则会将debug信息转发到IDE调试端口

PHPSTORM

MAMP PRO

点击右箭头,可以打开相应的php.ini文件

在最后面将xdebug的配置修改为:

1
2
3
4
5
6
7
8
9
[xdebug]
MAMP_Xdebug_MAMPzend_extension="/Applications/MAMP/bin/php/php7.0.33/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.profiler_enable=0
xdebug.profiler_output_dir="/Applications/MAMP/tmp"
xdebug.idekey = 'key'

然后重启server,查看phpinfo可以找到xdebug相关的配置,说明xdebug开启成功

PHPStorm

1.MAMP中的php可执行文件的路径位于:

1
/Applications/MAMP/bin/php/phpx.x/bin/php

打开phpstorm,点击左上角->preference->语言和框架,选择php,然后选择cli 解释器,选择刚刚开启xdebug插件的php的版本:

会发现上面显示的debugger未开启,phpstorm是从/Applications/MAMP/bin/php/php7.0.33/conf/php.ini加载php配置,而mamp是从/Library/Application Support/appsolute/MAMP PRO/conf/加php配置的,那么修改phpstorm的这个配置文件:

1
2
3
4
5
6
7
8
9
[xdebug]
zend_extension="/Applications/MAMP/bin/php/php7.0.33/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.profiler_enable=0
xdebug.profiler_output_dir="/Applications/MAMP/tmp"
xdebug.idekey = 'key'

然后保存,显示xdebug版本说明成功了

2.选择preference->语言和框架->php->调试->DBGp代理,填写IDE key为上面配置文件的key,host为localhost,端口为9000

3.点击preference->语言和框架->php->调试,点击预配置第一步验证,然后填写源码路径和对应的URL,点击右下角验证,如下图则验证成功:

4.点击preference->语言和框架->php->服务器,填写名称和主机端口,保存

5.回到主页面,点击上方运行->编辑配置,点击左上角的+添加PHP Web页面,然后填写名称、服务器、网站URL,浏览器选择默认或者chrome:

完成后,点击右上角的“电话”按钮开始监听,浏览器下载xdebug插件并开启,然后点击右上角调试图标进入调试模式:

点击箭头步过,会跳过函数内部的执行,点击箭头步入,会进入到函数内部执行

上面配合浏览器可以使用,但单独使用就会出现无法连接的错误,,,枯了,而且感觉配置这个超级麻烦,还是用vscode吧。。

VSCODE

使用vscode配置xdebug

电脑自带的apache的www路径为:

/Library/WebServer/Documents

创建php文件写入phpinfo();

修改自带的php的配置:

sudo mv /etc/php.ini.default /etc/php.ini

编辑该文件,最后添加:

xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
zend_extension="/usr/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so"

重启apache:

sudo apachectl restart

之后便可下断点,浏览器刷新进行调试

数据库监控工具

黑盒测试时方便查看执行的数据库操作语句

1
2
https://github.com/TheKingOfDuck/MySQLMonitor.git
https://github.com/40t/go-sniffer

第一个工具只能监测mysql,编辑config.ini,然后用sudo权限运行(mysql8)。

第二个功能更强,mysql,redis,http,mongodb etc protocol等都能抓。

windows下的seay也含有数据库监控功能

先配好php,过些天继续学java在更java的环境配置


参考自:https://www.sqlsec.com/2020/07/macphp.html#toc-heading-1