1. 首页
  2. 渗透测试

【原创】文件包含结合phpinfo反弹交互shell

【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。

1.简介

在PHP文件包含漏洞中,当我们找不到用于触发RCE的有效文件时,如果存在PHPINFO(它可以告诉我们临时文件的随机生成的文件名及其位置),我们可能可以包含一个临时文件来利用它。

当向PHP发送POST请求并且请求包含一个文件块时,PHP会将所发送的文件保存到一个临时文件中(通常是/tmp/PHP[6个随机数字]),文件名可以在$u FILES变量中找到。请求结束后将删除此临时文件。

同时,PHPINFO页面打印上下文中的所有变量,包括$u文件。因此,如果我们将POST请求发送到PHPINFO页面,则可以在响应中找到临时文件的名称。

这样,LFI漏洞就可以升级为RCE,而不需要存在可用的本地文件。

文件包含和PHPINFO通常位于不同的网页中。理论上,我们需要在PHPINFO页面的文件上传请求的响应中检索文件名后,将文件名发送到文件包含页面。但是,在第一个请求完成后,文件将从磁盘中删除,因此我们需要赢得比赛。
2.步骤:

1.将文件上载请求发送到带有页眉的PHPINFO页,并获取包含大量垃圾数据的字段。

2.响应内容将是巨大的,因为PHPINFO将打印出所有数据。

3.PHP的默认输出缓冲区大小为4096字节。可以理解为PHP在套接字连接期间每次返回4096字节。

4.所以我们使用原始套接字来实现我们的目标。每次我们读取4096字节并在得到文件名后将其发送到LFI页面。

5.当我们得到文件名时,第一个套接字连接还没有结束,这意味着临时文件仍然存在。

6通过利用时间间隔,可以包含并执行临时文件。

详细参考这个文档 https://dl.packetstormsecurity.net/papers/general/LFI_With_PHPInfo_Assitance.pdf

前几天有个同学 写了篇文章 可以去看下 https://www.moonsec.com/archives/1248

3.测试反弹交互shell

按照上面的方法可以写入一个php 但是感觉有些不方便 最好是直接弹一个交互shell

准备一个文件包含漏洞的环境。

【原创】文件包含结合phpinfo反弹交互shell

网站存在phpinfo.php

【原创】文件包含结合phpinfo反弹交互shell

修改脚本

【原创】文件包含结合phpinfo反弹交互shell

修改包含文件页面和ip地址

kali 上监听 nc -lvnp 8080

执行exp

【原创】文件包含结合phpinfo反弹交互shell

得到交互shell

【原创】文件包含结合phpinfo反弹交互shell

4.脚本下载

原版脚本

修改后的脚本

原创文章,作者:moonsec,如若转载,请注明出处:https://www.moonsec.com/1257.html

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息