漏洞实例,vulhub的文件包含漏洞(利用phpinfo)

(162条消息) PHP文件包含漏洞(利用phpinfo)_Li-D的博客-CSDN博客_php文件包含漏洞

(162条消息) PHP文件包含漏洞利用phpinfo写入webshell_ADummy_的博客-CSDN博客

(162条消息) PHP文件包含漏洞(利用phpinfo)_小 白 萝 卜的博客-CSDN博客

vulhub/README.zh-cn.md at master · vulhub/vulhub (github.com)

利用方法简述

在给PHP发送POST数据包时,如果数据包里包含文件区块,无论你访问的代码中有没有处理文件上传的逻辑,PHP都会将这个文件保存成一个临时文件(通常是/tmp/php[6个随机字符]),文件名可以在$_FILES变量中找到。这个临时文件,在请求结束后就会被删除。

同时,因为phpinfo页面会将当前请求上下文中所有变量都打印出来,所以我们如果向phpinfo页面发送包含文件区块的数据包,则即可在返回包里找到$_FILES变量的内容,自然也包含临时文件名(关键因素)。

在文件包含漏洞找不到可利用的文件时,即可利用这个方法,找到临时文件名,然后包含它。

但文件包含漏洞和phpinfo页面通常是两个页面,理论上我们需要先发送数据包给phpinfo页面,然后从返回页面中匹配出临时文件名,再将这个文件名发送给文件包含漏洞页面,进行getshell。在第一个请求结束时,临时文件就被删除了,第二个请求自然也就无法进行包含。

这个时候就需要用到条件竞争,具体流程如下:

  1. 发送包含了webshell的上传数据包给phpinfo页面,这个数据包的header、get等位置需要塞满垃圾数据
  2. 因为phpinfo页面会将所有数据都打印出来,1中的垃圾数据会将整个phpinfo页面撑得非常大
  3. php默认的输出缓冲区大小为4096,可以理解为php每次返回4096个字节给socket连接
  4. 所以,我们直接操作原生socket,每次读取4096个字节。只要读取到的字符里包含临时文件名,就立即发送第二个数据包
  5. 此时,第一个数据包的socket连接实际上还没结束,因为php还在继续每次输出4096个字节,所以临时文件此时还没有删除
  6. 利用这个时间差,第二个数据包,也就是文件包含漏洞的利用,即可成功包含临时文件,最终getshell

原理是组合漏洞:

在给PHP发送POST数据包时,如果数据包里包含文件区块,无论你访问的代码中有没有处理文件上传的逻辑,PHP都会将这个文件保存成一个临时文件(通常是/tmp/php[6个随机字符]),文件名可以在$_FILES变量中找到。这个临时文件,在请求结束后就会被删除。

不管你接受与否,php都会存储这个缓存。因此我们发送大额数据包,导致缓存来不及删除,接着再去找到一个文件包含漏洞,然后包含这个临时的缓存文件,就这一瞬间给包含掉,本身而言不是phpinfo的漏洞。

个人觉得其他php文件也是可以达到同样的要求,区别就在于:phpinfo会打印$_FILES的内容,让我们知道临时文件名的路径,理论而言这样的组合型漏洞是成立的。

phpinfo为关键的getshell方法相关推荐

  1. 【NLP】让AI读懂法律文书:一种基于多分类的关键句识别方法

    法律领域是近年来在 NLP 社区兴起的一个研究场景,许多研究者从不同的角度对其进行了大量研究,例如对当事人的情感分析.提取案件当事人信息,提取侦破案件的关键判决信息,预测案件的结果等等. 近日,来自斯 ...

  2. mysql进行getshell方法

    一. into outfile 利用条件 1. 此方法利用的先决条件 web目录具有写权限,能够使用单引号 知道网站绝对路径(根目录,或则是根目录往下的目录都行) secure_file_priv没有 ...

  3. C#实现软键盘的几个关键技术实现方法

    在嵌入式应用和一些安全软件中经常需要不通过物理键盘输入,虽然微软提供了也一个软键盘,但这个软件盘不能定制界面不能自动感应当前光标是否处于输入状态,所以有时候我们还是需要自己来实现这个软键盘.本文将讲解 ...

  4. 关键链项目管理方法的缓冲区管理

    关键链方法里边最有价值的是缓冲区管理(Buffer Management).项目过程中进度落后的时候,如果不采取措施追赶进度,可能会导致整个项目延期,如果采取措施追赶进度,加入加班,通常会增加成本,降 ...

  5. xp 无法关闭计算机,xp系统关机时一直显示正在关机状态却无法关键的解决方法...

    小编以前遇到这个状况:关机之后总显示正在关机,屏一直亮着.一开始小编想一定是里面的程序在更新所以关机慢了点.所以就将电脑放在那放了一夜,但还没关掉.但是处于关机页面又不能百度搜索方法,小编只能长按电源 ...

  6. win10开始菜单和cortana无法工作怎么办 win10关键错误解决方法

    有些用户在从Win7/Win8.1用户在升级到Win10正式版后会遇到"关键错误开始菜单和cortana无法工作"的问题,然后你无论怎么重启注销都不会修复. 今日,中国微软件社区就 ...

  7. php Wrapper LFI,PHP安全之LFI漏洞GetShell方法大阅兵

    Author:LengF   Blog:www.81sec.com 0x00 题外话 关于PHP中LFI(Local File Include,本地文件包含)漏洞很多朋友都不是很熟悉,其实网络上有很多 ...

  8. 渗透测试-getshell方法总结

    一.管理员权限拿shell 需要有管理员权限才可以拿shell 通常需要登录后台执行相关操作直接上传拿shell国内多对上传类型进行了限制,需要在进行绕过操作 1.织梦cms后台为例子 进入后台 写入 ...

  9. win centos php语法,linux(centos5.5)/windows下nginx开启phpinfo模式功能的配置方法分享

    经过志文工作室测试有效的相关配置主要内容如下: location ~ \.php(.*)$ { fastcgi_pass   unix:/tmp/php-cgi.sock; fastcgi_index ...

最新文章

  1. html display 显示,CSS display显示
  2. 问题 F: 分盒子(经典)
  3. 一步一步学NUnit
  4. Android 系统(254)---Android libphonenumber Demo 手机号码归属地
  5. PS基础教程[1]如何制作微信泡泡
  6. DICM和BMP图像的显示及转换
  7. java sql语句中文乱码_PL/SQL执行语句中文乱码
  8. 使用VMware10虚拟机安装Linux系统(能力工场)
  9. 华为HCIP-DATACOM391-420(821)
  10. 【官方教程】使用Quick-Cocos2d-x搭建一个横版过关游戏(四)
  11. Windows系统下的IE浏览器降级
  12. 解读:大硕德乡饮耆宾贠尚忠翁芳行碑
  13. matlab diag函数生成矩阵,Matlab矩阵运算函数-blkdiag函数
  14. 大前端时代的乱流:带你了解最全面的 Flutter Web
  15. OpenWrt之DHCP(动态主机配置协议)
  16. 设备管理器上不显示集成显卡(核显)问题解决
  17. PPT设计制做关键提炼——Metro风格
  18. fedora 笔记本安装_漂亮的超薄笔记本电脑,令Fedora焕发光芒
  19. Android Arcgis入门(12)、加载天地图
  20. XenApp / XenDesktop 7.6 初体验九 Director

热门文章

  1. 物联网传输技术——ZigBee协议概论
  2. 《算法之美》— — 看开普勒是如何用37%法则,找到情场出手的时机
  3. 举例讲解H3C配置三层交换机4个步骤详细用法
  4. hbo流媒体地址大全_为什么HBO有这么多的流媒体服务?
  5. Day 5高斯随机过程 平稳随机过程通过线性系统
  6. ssh: Could not resolve hostname gitee.com: Name or service not knownfatal: Could not read from remo
  7. 系统稳定性设计原则:简单、冗余、标准化、健壮
  8. C语言--面向对象编程之多态
  9. 使用js动态控制html页面缩放
  10. LeetCode笔记:Biweekly Contest 75