漏洞简介:
PHP文件包含漏洞中,如果找不到可以包含的文件,我们可以通过包含临时文件的方法来拿到权限。因为临时文件名是随机的,如果目标网站上存在phpinfo,则可以通过phpinfo来获取临时文件名,进而进行包含。
漏洞利用原理:
在给PHP发送POST数据包时,如果数据包里包含文件区块,无论你访问的代码中有没有处理文件上传的逻辑,PHP都会将这个文件保存成一个临时文件(通常是/tmp/php[6个随机字符]),文件名可以在$_FILES变量中找到。这个临时文件,在请求结束后就会被删除。同时,因为phpinfo页面会将当前请求上下文中所有变量都打印出来,所以我们如果向phpinfo页面发送包含文件区块的数据包,则即可在返回包里找到$_FILES变量的内容,自然也包含临时文件名。在文件包含漏洞找不到可利用的文件时,即可利用这个方法,找到临时文件名,然后包含之。
漏洞复现:
漏洞环境是用docker搭建的,直接在docker上拉取环境。
进入漏洞所在文件目录,启动环境:Docker-compose up -d
环境启动后,访问http://your-ip:8080/phpinfo.php即可看到一个phpinfo页面
访问http://your-ip:8080/lfi.php?file=/etc/passwd,可见的确存在文件包含漏洞。
用exp.py脚本来不断的上传数据,利用条件竞争来实现包含文件。当成功包含临时文Php file_put_contents('/tmp/g ','<?p/g', '<?=eval($_REQUEST[1])?>')?>,写入一个新的文件/tmp/g目录,这个文件会被保留在目标机器上。
运行python2 exp.py your-ip 8080 100
可以看到用了411个数据包的时候就写入成功了,之后就可以配合lfi.php执行任意命令,然后配合之前存在文件包含漏洞的php文件,就可以任意命令执行。
文章来源地址https://www.toymoban.com/news/detail-602100.html
文章来源:https://www.toymoban.com/news/detail-602100.html
到了这里,关于PHP文件包含漏洞(利用phpinfo)复现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!