绕过PHP readfile中的字符串concat进行LFD攻击
我正在学习一门关于软件安全性的课程,并介绍了以下场景: 服务器上运行的PHP代码:绕过PHP readfile中的字符串concat进行LFD攻击,php,file-io,exploit,Php,File Io,Exploit,我正在学习一门关于软件安全性的课程,并介绍了以下场景: 服务器上运行的PHP代码: 我需要知道是否可以利用此漏洞在服务器上获取任意文件(而不是*/remove/this.txt) 我尝试使用空字节(%00),但它不起作用(apache服务器在Ubuntu上运行PHP5.3) 我也试着用它来创造php://filter, php://input等等,什么都没有。这里的问题是指令的最后一部分是资源 路径截断似乎也不起作用。现在我唯一能做的就是使用?var= 我刚刚运行了一个简单的测试,可以说没有
我需要知道是否可以利用此漏洞在服务器上获取任意文件(而不是*/remove/this.txt)
我尝试使用空字节(%00),但它不起作用(apache服务器在Ubuntu上运行PHP5.3)
我也试着用它来创造php://filter, php://input等等,什么都没有。这里的问题是指令的最后一部分是资源
路径截断似乎也不起作用。现在我唯一能做的就是使用?var= 我刚刚运行了一个简单的测试,可以说没有一个单个字符利用此漏洞来删除最后一个文件名部分。例如:
我只是分析了实现。如果字符串中有NUL字节,它将失败。除此之外,没有机会。只有php://filter
;最愚蠢的部分是/resource=
部分需要位于字符串的末尾。。。唯一关键的是,攻击者可以访问通常不暴露于外部网络的服务器。(通过http://
)@bwoebi确切地说,你完全理解这个问题,虽然我还没有准备好放弃。例如,我在玩游戏时发现,在Windows中“\\localhost-xxx/whatevertext”产生的结果与“\\localhost”相同;显然,这并不能解决任何问题,但我的观点是,如果我们努力寻找并发挥创造力,我们可能会找到一些东西。你试过了吗?也许它已经安装。@Gumbo非常聪明,但它给了我以下信息:“警告:readfile():找不到包装器“expect”-配置PHP时忘记启用它了吗?@LorenzoWills。。。该提交引入了该检查,但它仅为5.4(及更新版本)。你说你正在运行PHP5.3,所以,NUL字节应该可以工作,我想??是的,我也这么做了,即使有两个字符,下面的代码是:代码太长了。无论如何,我认为解决方案,如果有的话,将不会依赖于打破道路。。。也许有点像php://filter 最后一个论点可以忽略的地方我做得很好,涵盖了一些选项。不错的帖子和讨论,但没有解决方案。另一件事是,涵盖了更多选项。我不能让他们中的任何一个工作,但提供了一些更多的想法。
<pre>
<?php
for($i=0;$i<=255;$i++){
$chr = chr($i);
readfile("B.txt{$chr}A.txt");
}