freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

phpstorm+vulhub远程调试
ywfndy 2021-05-18 18:03:24 136341

前言

在做代码审计或者复现漏洞的过程中,通常都需要搭建环境,代码调试来定位漏洞触发的地方。复现一些靶场漏洞的时候,尤其是PHP代码的漏洞,需要先在虚拟机中搭建漏洞环境,再通过本地搭建调试环境。靶场搭建方便了,但是调试起来异常麻烦。俗话说“搭建环境两小时,漏洞复现两分钟”。
因此本文就简单说明一下如何使用PHPSTORM远程调试vulhub靶场中的漏洞项目。
在开始之前,需要docker、docker-compose、vulhub的安装、使用,由于本文重点不在这里,因此希望有需要的朋友移步:使用Vulhub一键搭建漏洞测试靶场
关于使用过程中不明白的地方,建议大家查阅官方手册。

测试环境

宿主机:WIN10 192.168.18.4Phpstorm2021.1.2x64
虚拟机:VMWare+CentOSmin(192.168.109.100NAT模式 VMnet8 子网:192.168.109.0)
Docker:vulhub
本文中搭建的漏洞环境为:
Drupal Core8 PECL YAML 反序列化任意代码执行漏洞

一、启动Docker

[root@192 ~]# cd your_vulhub_path/drupal/CVE-2017-6920
[root@192 ~]# docker-compose up -d 
[root@192 ~]# docker exec it CONTAINER_ID /bin/bash

image

二、安装xdebug

由于docker为了简便、易移植的原因,所以很多linux系统命令是没有安装的,我们在登录之后,需要先将里面的安装源给更新一下,方便后面其它命令的安装:

root@2337778741cc:/# apt-get update
root@2337778741cc:/# apt-get upgrade

由于xdebug与php的版本有对应关系,我们需要知道自己的调试环境对应的xdebug版本是多少。因此输出搭建网站的phpinfo的信息,并将源码放入 xdebug版本测试,便可以测试出合适的xdebug版本信息。
然后下载合适的xdebug.tgz版本。
我的PHP版本是7.1的,对应的xdebug是2.9.8版,下载 xdebug-2.9.8.tgz
通过xftp将 xdebug-2.9.8.tgz放入虚拟机中。
image再通过docker cp命令将压缩文件移至docker容器中:

[root@192 ~]# docker cp xdebug-2.9.8.tgz 2337778741cc:/

在容器中安装xdebug扩展:

root@2337778741cc:/# apt-get groupinstall "Development tools" && apt-get install php-devel autoconf automake
root@2337778741cc:/# tar -xvzf xdebug-2.9.8.tgz
root@2337778741cc:/# cd xdebug-2.9.8
root@2337778741cc:/# phpize
root@2337778741cc:/# ./configure
root@2337778741cc:/# make
root@2337778741cc:/# cp modules/xdebug.so /usr/local/lib/php/extensions/no-debug-non-zts-20160303
root@2337778741cc:/# touch /usr/local/etc/php/php.ini
root@2337778741cc:/# echo 'zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so' >> /usr/local/etc/php/php.ini

然后退出容器,重启:

root@2337778741cc:/# exit
[root@192 ~]# docker restart CONTAINER_ID

再次通过宿主机访问phpinfo,可以看到xdebug添加成功:image由于docker没有安装vim,安装vim:

root@2337778741cc:/var/www/html# apt-get install vim

接下来,在容器中进行xdebug的调试配置,修改php.ini配置文件:

root@2337778741cc:/var/www/html# cd /usr/local/etc/php/
root@2337778741cc:/usr/local/etc/php# ls
conf.d    php.ini
root@2337778741cc:/usr/local/etc/php# vi php.ini

在php.ini中写入:

zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
;开启远程调试
xdebug.auto_trace=On
xdebug.remote_enable = 1
;宿主机IP
xdebug.remote_host="192.168.18.4"
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
;idekey区分大小写
xdebug.idekey="PHPSTORM"
xdebug.remote_connect_back = 1
;xdebug.profiler_enable = off
;xdebug.profiler_enable_trigger = off
;xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "/tmp/xdebug.log"

重启apache服务(如果docker内重启失败,就重启容器),再次查看phpinfo信息:
image可以看到,添加成功!
xdebug配置成功,接下来配置PHPSTORM。

三、PHPSTORM配置

首先,我们还是通过docker cp 命令,把容器中的网站源码拖到虚拟机中

[root@192 ~]# docker cp 2337778741cc:/var/www/html root:/

再通过xftp 将项目拖至宿主机,用PHPSTORM打开。
image打开File->Settings(快捷键(Ctrl + Alt + S)),
记得把勾给选上,然后路径填写一定要正确:
imageDebug配置,这里需要设置xdebug监听的端口和php配置中的一致:
image点击Run->Edit configurations,进行配置:
image进行configurations:配置,选择PHP Web Page,其余配置参考界面:
imageimage
image然后就可以愉快的进行调试啦!

后记

有什么不对的地方,恳请大家指出。或者有什么不明白的地方,欢迎大家分享交流!

# web安全 # 漏洞分析
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 ywfndy 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
ywfndy LV.2
这家伙太懒了,还未填写个人描述!
  • 2 文章数
  • 1 关注者
Drupal YAML 反序列化代码执行漏洞(CVE-2017-6920)复现及分析
2021-05-19
文章目录