php漏洞exp利用方法
[漏洞分析]thinkphp5.x全版本任意代码执行分析全记录
![[漏洞分析]thinkphp5.x全版本任意代码执行分析全记录](https://img.taocdn.com/s3/m/1c9cf8ec534de518964bcf84b9d528ea81c72f04.png)
[漏洞分析]thinkphp5.x全版本任意代码执⾏分析全记录0x00 简介2018年12⽉10⽇中午,thinkphp官⽅公众号发布了⼀个更新通知,包含了⼀个5.x系列所有版本存在被getshell的⾼风险漏洞。
吃完饭回来看到这个公告都傻眼了,整个tp5系列都影响了,还是getshell。
(以下截图为后截图,主要是想讲⼀下从⽆到有,如何分析漏洞,整个过程是怎么样的。
)0x01 漏洞原理下午睡醒,赶紧起来分析漏洞。
结合官⽅公告说的由于对控制器名没有⾜够的检测,再查看官⽅git commit信息拉⼀个tp下来,⽤的是tp 5.1.29的版本,windows+phpstudy ⼀把梭,搭建好环境。
在官⽅修改的地⽅加断点(thinkphp\library\think\route\dispatch\Module.php),加载默认的控制器来分析。
请求:http://127.0.0.1/index.php/index/index/index命中断点。
⼀步步跟进controller的⾛向,发现在同⽂件下的 exec函数,实例化控制器跟进controller⽅法,thinkphp\library\think\App.php使⽤parseModuleAndClass⽅法来解析,继续跟进分析⼀下代码,发现会有⼀个判断,当控制器名中包含了反斜杠,就会直接返回,继续跟踪。
此处没有包含,所以会进⼊下⾯的判断,最后使⽤parseClass来解析,跟如parseClass函数发现进过parseName之后index变成了⾸字母⼤写,原因是经过了命名风格转换。
最后会将命名空间等进⾏拼接返回我们带命名空间的完整类名。
跟进,回到了controller⽅法,此时判断类是否存在,不存在会触发⾃动加载类。
之后就是实例化类,使⽤反射来调⽤类的相应⽅法了。
(偷懒省略掉了,主要是介绍⼀下分析的过程)⼤概流程摸清楚了,那么这个漏洞是怎么触发的呢?在跟踪的时候我们发现,类名都是带有完整的命名空间的,⽽命名空间恰好就是使⽤反斜杠来划分,结合那⼀个判断代码:反斜杠是否存在,直接返回类名的操作。
python exp编写总结

python exp编写总结编写Python的exp(exploit)可以帮助发现和利用软件或系统的漏洞,从而获取非法访问权限或执行恶意代码。
以下是编写Python exp的一般步骤:1. 收集信息:首先,需要收集目标系统或软件的相关信息,如版本号、配置文件路径、服务端口等。
可以通过查阅文档、分析软件或系统的源代码、使用工具如nmap进行端口扫描等方式来获取这些信息。
2. 漏洞分析:接下来,需要对目标系统或软件的漏洞进行详细分析。
可以通过分析源代码、查看公开的漏洞报告、使用工具如ida进行逆向分析等方式来了解漏洞的原理和影响范围。
3. 编写Payload:根据漏洞的原理和影响,编写相应的Payload,即用于利用漏洞的代码段。
Payload的内容可以包括恶意代码、Shellcode等。
4. 搭建开发环境:为了测试和调试Payload,需要搭建合适的开发环境。
可以使用虚拟机或容器技术来搭建目标系统的复制品,以便在不影响真实环境的情况下进行测试。
5. 编写Exploit代码:使用Python编写Exploit代码,将漏洞分析和Payload组合起来,通过对目标系统发送恶意请求或输入来利用漏洞并执行Payload。
6. 调试和测试:对编写的Exploit代码进行调试和测试。
可以通过打印日志、调试器等方式来跟踪代码的执行过程,以寻找潜在的问题或错误。
7. 优化和改进:根据测试结果和反馈,对Exploit代码进行优化和改进。
可以考虑添加错误处理机制、提高代码的可读性和可维护性等。
8. 撰写文档:最后,撰写详细的文档,包括漏洞的分析过程、Payload的实现细节、Exploit代码的使用说明等。
这样可以方便其他安全研究人员或渗透测试人员参考和使用。
总结:编写Python exp需要对漏洞的原理和影响进行深入分析,同时具备良好的编程技巧和安全意识。
除了掌握Python编程语言,还需要熟悉目标系统或软件的相关知识和工具的使用。
php文件包含伪协议文件上传漏洞相关说明

php⽂件包含伪协议⽂件上传漏洞相关说明1.上传⽂件过滤了后缀名和MIME类型,$_FILES['pic']['type']是由浏览器传输的⽂件类型决定,但是mime_content_type()是由php 内置⽅法判断⽂件类型;⽀持⽂件类型为application/zip,⽀持上传zip压缩⽂件,后缀名还是要改成.jpg或.gif,上传后将该名为随机数字(1499394959).jpg格式$name1=substr($name,-4);if(($name1!==".gif") and ($name1!==".jpg")){echo "<script language=javascript>alert('上传照⽚只能是JPG或者GIF!');history.go(-1)</script>";exit;}if(mime_content_type($tmpName)!=="image/jpeg"&&mime_content_type($tmpName)!=="image/gif"&&mime_content_type($tmpName)!=="application/zip") {echo mime_content_type($tmpName);echo "<script language=javascript>alert('上传照⽚只能是JPG或者GIF!');history.go(-1)</script>";exit;}2.任意⽂件包含$f = $_GET['f'];include_once('sys/config.php');include($f);利⽤zip或phar伪协议读取压缩包中的⽂件/about.php?f=phar://./images/1499394959.jpg/1.php/about.php?f=zip://./images/1499394959.jpg%231.php上传webshell完成扩展:php伪协议:file:// — 访问本地⽂件系统http:// — 访问 HTTP(s) ⽹址ftp:// — 访问 FTP(s) URLsphp:// — 访问各个输⼊/输出流(I/O streams)zlib:// — 压缩流data:// — 数据(RFC 2397)glob:// — 查找匹配的⽂件路径模式phar:// — PHP 归档ssh2:// — Secure Shell 2rar:// — RARogg:// — ⾳频流expect:// — 处理交互式的流。
PHP漏洞原理范文

PHP漏洞原理范文PHP是一种通用的开源脚本语言,被广泛用于服务器端网页开发。
然而,由于PHP的弱类型和灵活的特性,它也面临着一些安全风险和漏洞。
本文将介绍一些常见的PHP漏洞原理。
1.跨站脚本攻击(XSS)XSS攻击是最常见的PHP漏洞之一、它的原理是攻击者向网站输入恶意代码,使其被插入到页面内容中。
当其他用户访问包含恶意代码的页面时,他们的浏览器会执行该代码,并可能导致盗取用户敏感信息、篡改页面内容等安全问题。
XSS攻击通常通过以下方式实现:-反射型XSS:攻击者将恶意代码作为参数传递给网站,然后网站将该参数包含到响应中,并由用户的浏览器执行代码。
-存储型XSS:攻击者将恶意代码存储在网站的数据库中,并在用户访问特定页面时将其执行。
为了防止XSS攻击,可以对用户输入进行过滤和转义,以确保任何输入的内容都不会被执行。
2.SQL注入SQL注入是另一个常见的PHP漏洞,它允许攻击者通过构造恶意的SQL查询来执行未经授权的操作。
原理是攻击者通过将恶意的SQL代码插入到用户提供的输入中,然后将其发送到服务器执行。
攻击者可以利用SQL注入漏洞执行以下操作:-删除或修改数据库中的数据。
-暴露敏感数据。
-绕过身份验证和授权。
为了防止SQL注入,可以使用预编译查询、参数化查询等安全措施,以确保用户输入不会被解释为可执行的SQL代码。
3.文件包含漏洞文件包含漏洞是由于对用户提供的文件名或路径未进行适当验证而产生的。
攻击者可以通过构造恶意的文件名或路径来访问并执行服务器上的敏感文件,从而获取敏感信息或执行恶意代码。
为了防止文件包含漏洞,可以对用户提供的文件名或路径进行验证和过滤,只允许访问可信的文件。
4.代码注入漏洞代码注入漏洞是指攻击者能够向服务器注入并执行任意代码。
这可能导致整个服务器被控制,攻击者可以执行任意操作。
代码注入漏洞通常发生在动态构建代码或执行动态代码的情况下,例如 eval( 函数或反序列化操作。
phpinfo页面的利用方法

phpinfo页面的利用方法
phpinfo页面是一个用于显示PHP配置信息的特殊页面,它可以帮助开发人员了解PHP的当前配置情况,同时也可以检查服务器的环境和安装情况。
利用phpinfo页面进攻的方法有如下几种:
1. 获取敏感信息:黑客可以通过查看phpinfo页面来获取服务器的IP地址、操作系统、PHP版本、数据库类型和版本等敏感信息,从而进行进一步的攻击。
2. 识别漏洞:黑客可以通过分析phpinfo页面中列出的各种扩展、配置和参数等信息,来寻找可能存在漏洞的线索和攻击点,比如PHP配置错误、未修补的漏洞等问题。
3. 伪装攻击:黑客可以创建一个伪造的phpinfo页面,用于欺骗服务器管理员
和系统管理员,以此进行钓鱼、诈骗或利用其他漏洞入侵等攻击。
为了避免phpinfo页面被黑客利用,建议在生产环境中关闭phpinfo函数的访问权限,只在开发或测试环境中启用,同时也要定期检查服务器配置和漏洞情况,保持系统的安全性。
thinkphp综合利用工具用法

thinkphp综合利用工具用法
ThinkPHP综合利用工具是一个用于对ThinkPHP框架进行渗透测试和漏洞利用的工具。
它可以帮助安全研究人员和渗透测试人员发现并利用ThinkPHP框架中可能存在的安全漏洞。
使用ThinkPHP综合利用工具的一般步骤如下:
1. 下载和安装工具:首先,你需要从合法和可信赖的来源下载和安装ThinkPHP综合利用工具。
2. 收集目标信息:在使用工具之前,你需要收集目标系统的相关信息,包括使用的ThinkPHP版本、网站URL等。
3. 执行漏洞扫描:运行工具,并选择相应的模块执行漏洞扫描。
工具会自动检测目标系统中是否存在已知的ThinkPHP漏洞。
4. 分析扫描结果:仔细分析工具输出的扫描结果,查看发现的漏洞和其影响程度。
5. 利用漏洞:对于已发现的漏洞,你可以根据工具提供的利用模块进行进一步的漏洞利用。
这可能涉及到执行命令、获取敏感信息、上传恶意文件等操作。
6. 验证漏洞修复:如果成功利用了漏洞,建议进行漏洞修复验证,确保目标系统已经修补了相应的漏洞。
需要注意的是,使用ThinkPHP综合利用工具需要遵守法律和道德规范。
在进行渗透测试之前,你应该获得合法的授权,并且只在法律允许的范围内使用该工具。
此外,你应该始终尊重他人的隐私和数据安全,确保不会对目标系统造成损害。
PHP反序列化漏洞详解(魔术方法)

PHP反序列化漏洞详解(魔术⽅法)⽂章⽬录⼀、PHP⾯向对象编程在⾯向对象的程序设计(Object-oriented programming,OOP)中,对象是⼀个由信息及对信息进⾏处理的描述所组成的整体,是对现实世界的抽象。
类是⼀个共享相同结构和⾏为的对象的集合。
每个类的定义都以关键字class开头,后⾯跟着类的名字。
创建⼀个PHP类:<?phpclass TestClass //定义⼀个类{//⼀个变量public $variable = 'This is a string';//⼀个⽅法public function PrintVariable(){echo $this->variable;}}//创建⼀个对象$object = new TestClass();//调⽤⼀个⽅法$object->PrintVariable();>public、protected、privatePHP 对属性或⽅法的访问控制,是通过在前⾯添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
public(公有):公有的类成员可以在任何地⽅被访问。
protected(受保护):受保护的类成员则可以被其⾃⾝以及其⼦类和⽗类访问。
private(私有):私有的类成员则只能被其定义所在的类访问。
注意:不同修饰符序列化后的值不⼀样访问控制修饰符的不同,序列化后属性的长度和属性值会有所不同,如下所⽰:public:属性被序列化的时候属性值会变成属性名protected:属性被序列化的时候属性值会变成\x00*\x00属性名private:属性被序列化的时候属性值会变成\x00类名\x00属性名其中:\x00表⽰空字符,但是还是占⽤⼀个字符位置魔术⽅法(magic函数)PHP中把以两个下划线__开头的⽅法称为魔术⽅法(Magic methods)类可能会包含⼀些特殊的函数:magic函数,这些函数在某些情况下会⾃动调⽤。
论PHP常见的漏洞WooYun知识库

论PHP 常见的漏洞WooYun 知识库首先拿到一份源码 肯定是先install 上。
而在安装文件上又会经常出现问题。
一般的安装文件在安装完成后 基本上都不会自动删除这个安装的文件 我遇到过的会自动删除的好像也就qibocms 了。
其他的基本都是通过生成一个lock 文件 来判断程序是否安装过了 如果存在这个lock 文件了 就会退出了。
这里首先 先来说一下安装文件经常出现的问题。
根本无验证。
这种的虽然不多 但是有时还是会遇到个。
在安装完成后 并不会自动删除文件 又不会生成lock 来判断是否安装过了。
导致了可以直接重装过例子: WooYun: PHPSHE B2C 重装。
安装file因为install 一般都会有step 步骤啥的。
Step 1 check 啥啥 step 2 是安装啥的。
而一些cms 默认step 是1 而step 又是GET 来的 而他check lock 的时候就是在step1里面。
这时候如果我们直接用GET 提交step 2 那么就直接进入下一步了 就没check lock 了。
例如某cms 中的安装文件1 2 3 4 5 6 7 8 9 if (empty ($step)){$step = 1;//当用户没有提交step 的时候 赋值为1}require_once ("includes/inc_install.php");$gototime = 2000;/*------------------------显示协议文件------------------------*/10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 if ($step == 1) //当1才检测lock{if (file_exists('installed.txt')){echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head><body>你已经安装过该系统,如果想重新安装,请先删除install 目录下的 installed.txt 文件,然后再安装。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最近php出了些问题,害得许多用php写的程序都出了很多漏洞,在sebug上每天都可以看到许多,漏洞的exp(exploit,也就是漏洞利用)是用php写的,QQ 上每天都有许多叉子问我php的exp该怎么用,问得我头都大了,我现在就来给大家讲一下php写的exp的利用方法。
首先我们来在本地装一下php的运行环境。
打开php-installer,一切设置都默认(我安装的目录是D盘的php),一路next就可以了,如图1。
10月1日的时候我朋友NetHacKar刚发现了一个phpcms的注入漏洞,就用它来做演示吧,他在sebug上已经公布出了完整的exp,如图2。
可是这些php代码我们该怎么利用呢?大家别急,先把这段代码用记事本保存下来,我保存在D:/php/phpcms.php这里了。
现在我们打开cmd来到D:/php/目录下用php.exe运行一下刚才我们保存的那个exp文件,如图3。
我们看见了返回的结果,他给出了利用的格式:php phpcms.php localhost / ,在这里localhost 我们可以改成对方的域名,/就是对方的phpcms系统的目录(如果是根目录就直接/,如果是phpcms目录就写/phpcms/),注意一下,这里有个空格。
我找到了一个目标:,我们拿他来测试一下,在cmd里php phpcms.php /。
我们来看一下结果,如图4。
已经成功的破出了它的管理员的账号和密码的32位md5值。
账号是admin,密码的md5是21232f297a57a5a743894a0e4a801fc3,我们把它拿到上来解密一下,得到的
密码也是admin,如图5,我们来到后台
/admin.php?mod=phpcms&file=login,登上去,如图6这样,
摘要:对于不懂脚本编写的朋友,看到大牛写的exp都是远观而不会玩。
很多人都看到过一些关于PHP的EXP程序,但都不会利用。
其实这种漏洞利用程序利用起来很简单的。
下面来看看利用方法吧!...
很多人都看到过一些关于PHP的EXP程序,但都不会利用。
其实这种漏洞利用程序利用起来很简单的。
首先我们来在本地装一下php的运行环境。
打开php-installer,一切设置都默认(我安装的目录是D盘的php),一路next就可以了
我们用PHPCMS的一个漏洞来做演示。
我们可以发现这些EXP都是PHP的代码,这怎么弄呢?大家别急,先把这段代码用记事本保存下来,我保存在D:/php/phpcms.php这里了。
现在我们打开cmd来到D:/php/目录下用php.exe运行一下刚才我们保存的那个exp文件
我们看见了返回的结果,他给出了利用的格式:php phpcms.php localhost / ,在这里localhost 我们可以改成对方的域名,/就是对方的phpcms系统的目录(如果是根目录就直接/,如果是phpcms目录就写/phpcms/),注意一下,这里有个空格。
我找到了一个目标:,我们拿他来测试一下,在cmd里php phpcms.php /。
我们来看一下结果,如图4。
已经成功的破出了它的管理员的账号和密码的32位md5值。
账号是admin,密码的md5是21232f297a57a5a743894a0e4a801fc3,我们把它拿到cmd5上来解密一下,得到的密码也是admin,
我们来到后台,登上去,这样,我们就利用成功了。
每个用php写的exp其实都可以这样利用的。
标签分类:脚本渗透
本文转自☆★黑白前线★☆- 转载请注明出处,侵权必究!
原文链接:/a/Special/wlgf/jbst/2009/1111/1530.html。