Xdebug+宝塔+PHPStudy+VScode PHP

上次写了篇 macOS 下优雅地配置 PHP 代码审计环境 里面主要讲解了使用 MAMP PRO 配合 PHPStorm 来进行代码审计,但是这个环境有点臃肿了,而且并不是很多人都用 macOS,所以本节主要介绍一下轻量级的代码审计环境的配置,而且可以在 Windows 下也有不错的体验。

宝塔

宝塔官网介绍宝塔支持 Linux 以及 Windows 版本,而且 Linux 版本也支持了 CentOS、Ubuntu、Deepin、Debian、Fedora,基本上覆盖了主流的操作系统了,Linux 下系统兼容性顺序:Centos8.x > Centos7.x > Ubuntu18.04 > Debian10 > Ubuntu 20.04 > 其它系统。

关于怎么安装宝塔国光这里就不再过多的赘述了,国光的宝塔搭(这两个字好像啊 这么巧)建在公司的内网中,访问对应的网站受到修改 HOST 文件即可,很是方便,哪怕 IP 更换了也不影响网站的正常访问,因为有些网站的 URL 是固定写死的,所以国光这里也建议大家使用修改 HOST 的方法来搭建本地测试网站:

安装 Xdebug

宝塔封装了 Xdebug,这让我们安装的过程就变得很简单,因为工作特性国光这里几乎安装了所以可以安装的 PHP 版本:

其中只有非常古老的 PHP 5.2 版本没有 Xdebug 扩展,其他版本安装起来就很简单。

首先找到「软件商店」-「对应的 PHP 版本」-「设置」-「安装扩展」-「xdebug」-「安装」只需要简单这基本,鼠标点击一下即可安装:

配置 Xdebug

安装完成之后必须受到修改配置文件,才可以让 Xdebug 生效 「软件商店」-「对应的 PHP 版本」-「设置」-「配置文件」然后末尾添加如下内容即可,下面是国光使用 PHP 7.3 的配置情况:

[XDebug]
; 如果大家要配置这个的话,可以模仿一下下面的规则,去对应的版本目录下找到对应的 xdebug.so 文件即可
zend_extension=/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so

; 开启远程调试功能
xdebug.remote_enable=1

; 远程调试地址
xdebug.remote_host=localhost

; 远程调试端口
xdebug.remote_port=9000

; 每次执行脚本都会启动 xdebug 调试
xdebug.remote_autostart = 1

; 每次请求都会生成一个性能报告文件
xdebug.profiler_enable = 1

; 在 IDE 上等待确认传入调试连接以的时间(毫秒)
xdebug.remote_timeout=2000

; debug 调试的日志位置
xdebug.remote_log = /tmp/xdebug.log

修改完配置文件之后,得重载一下配置文件:

然后写一个 phpinfo() 访问一下,搜索一下看看 xdebug 字样是否出现:

设置请求时间

默认配置的话,如果我们编辑器一直处于 Debug 状态,这个时候浏览器访问的网站就会超时出现 502 的错误,这是因为我们 PHP Debug 的时间太长了,浏览器因为服务器挂掉了,所以我们需要配置一下,增加 PHP Debug 的等待时间,下面以宝塔面板自带的 PHP 7.3 版本为例,只需要编辑如下文件:

vim /www/server/php/73/etc/php-fpm.conf

修改 request_terminate_timeout时间为 0 即可:

request_terminate_timeout = 0

那么就可以愉快的 Debug 审计了。

PHPStudy

PHPStudy 是 Windows 平台上面经典的 PHP 集成开发环境,国内用户量也巨大,所以 PHPStudy 每次爆出后门的时候,都会搞一个大新闻出来。国光比较喜欢用老版本的 PHPStudy 2018 版本(没错就是历史上爆出后门的那边版本)

安装 Xdebug

PHPStudy 官方也是封装好了 Xdebug 的,下面是存在 Xdebug 版本对应扩展文件的默认位置情况:

C:\PhpStudy\PHPTutorial\php\php-5.3.29-nts\ext\php_xdebug.dll
C:\PhpStudy\PHPTutorial\php\php-5.4.45\ext\php_xdebug.dll
C:\PhpStudy\PHPTutorial\php\php-5.4.45-nts\ext\php_xdebug.dll
C:\PhpStudy\PHPTutorial\php\php-5.5.38\ext\php_xdebug.dll
C:\PhpStudy\PHPTutorial\php\php-5.6.27-nts\ext\php_xdebug.dll
C:\PhpStudy\PHPTutorial\php\php-7.0.12-nts\ext\php_xdebug.dll

配置 Xdebug

安装完成之后必须受到修改配置文件,才可以让 Xdebug 生效,下面以 PHP 5.6 版本为例,首先找到 php.ini 配置文件的位置:

C:\PhpStudy\PHPTutorial\php\php-5.6.27-nts\php.ini

搜索找到Xdebug 栏,然后在下面添加如下内容即可:

zend_extension="C:\PhpStudy\PHPTutorial\php\php-5.6.27-nts\ext\php_xdebug.dll"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart = 1
xdebug.profiler_enable = 1
xdebug.remote_timeout=2000

关于每个选项对应的解释,可以直接参考上面 宝塔章节 里面的注释情况

配置文件修改完成后记得重启一下服务。 重启后写一个 phpinfo() 文件访问一下,搜索一下看看 xdebug 字样是否出现:

VSCode

首先准备一段简单代码,待会用来检验是否可以成功 Debug:

<?php
error_reporting(0);

function add($x,$y)
{
    $total=$x+$y;
    return $total;
}

$a = $_REQUEST['a'];
$b = $_REQUEST['b'];

if(isset($a) && isset($b)){
    echo "$a + $b = " . add($a,$b);
}else{
    echo "www.sqlsec.com";
}

?>

本地调试

如果你是 Windows 系统,并且参考上面了 PHPStudy 章节的话,那么 VSCoide 只需要安装一个 「PHPDebug 」扩展即可:

VSCode 打开本地的 PHPStudy 根目录,编辑器打开想要调试的 PHP 文件,然后点击左侧的 Debug 图标:

接着继续点击 「创建 lanunch.json 文件」:

选择环境为 PHP:

因为我们上面配置的 Xdebug 的远程端口也是 9000 端口,所以这里的默认配置文件不需要修改就可以直接使用了:

保存一下配置文件,然后点击左上角的「Listen for XDebug」接着下一个断点,然后浏览器访问一下这个文件,就可以愉快地进行调试了:

远程调试

远程调试的话,除了像上面章节那样安装「PHPDebug 」扩展以外:

如果配置使用 PHP Debug 参考上面的 本地调试 小节

还需要安装「Remote - SSH」扩展:

这两个扩展配置安装完成以后,那么下面开始准备来远程调试宝塔里面的 PHP 程序吧。

首先点击左下角的远程图标,然后选择第一个 连接远程服务器的选项:

输入远程服务器的 IP 地址,然后输入密码即可连接成功,连接成功的效果如下:

点击左上角的「Listen for XDebug」接着下一个断点,然后浏览器访问一下这个文件,就可以愉快地进行远程调试宝塔了:

参考资料

打赏

本文没啥技术含量,但是精心截图贴图全篇写下来硬是花了1个多小时,我有时候不知道这样做的意义是啥,我自己用的舒服不就可以了吗,为啥非要写出来,浪费自己的时间呢。在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态,而且白嫖抄袭党也很多,哪怕是转载标明一下出处也是好呀。所以如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)

微信 支付宝

没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光


文章作者: 国光
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 国光 !
自从点了 👇 广告,腰也不酸了,腿也不疼了
点一下 👆 玩一年 装备不花一分钱!
 上一篇
国光的安全随笔记录 国光的安全随笔记录
国光我从 15 年开始接触到信息安全到现在已经快 5 年了,但是总感觉自己的成长速度太慢了,也亲眼看着后辈们从小菜鸡快速地成长为比自己还要厉害的大佬,越发感叹信息安全行业里面真的是“逆水行舟,不进则退!”啊。特此写下此文记录一下心路历程,希
2020-10-08
下一篇 
深信服终端检测响应平台 EDR 代码审计 深信服终端检测响应平台 EDR 代码审计
今年 HW 深信服的 EDR 爆出了一些很低级的漏洞,也看到网上不少人再吐槽,国光也忍不住来分析复现看看。 基本配置信息网上地下流传的深信服的 EDR ISO 文件实际上是 CentOS7 镜像,下面国光简单分享记录一下相关信息,然
2020-08-28
  目录