LFI漏洞成因及利用

转载
自己实验了一波。

一.漏洞原因

主要是php文件里include, require, include_once, require-once 函数不恰当使用引起的。

LFI.php:
LFI.php<br/>
<?php
echo "1"."<br>"; 
include($_GET["include"]);
echo "2"."<br>";
require $_GET["require"];
echo "3"."<br>";
include_once $_GET["include1"];
echo "4"."<br>";
require_once $_GET["require1"];
echo "5"."<br>";
?>

func1.php
<?php 
echo "iam func1<br/>";
?>

还有func2.php类似于func1.php。
访问http://127.0.0.1/LFI.php?include=func1.php
返回结果如下:

Snipaste_2017-08-15_21-48-29.png

发现require之后的代码确实没有执行。
访问http://127.0.0.1/LFI.php?include=func1.php&require=func2.php&include1=func1.php&require1=func2.php
返回结果如下:
Snipaste_2017-08-15_21-53-09.png

可以发现 require执行了, 但是include_once 和require_once 由于前面已经包含了php文件, 就没有再执行该部分代码。

二.漏洞利用

看多少记多少吧, 都是骚操作。

1.使用php://filter 协议和base64编码去访问本地文件得到源码

访问http://127.0.0.1/LFI.php?include=php://filter/read=convert.base64-encode/resource=func1.php
结果如下:

Snipaste_2017-08-15_22-21-00.png

可以发现返回了func1.php 的base64 编码, 在通过将base64 字符串解码, 就可以得到源码。

2. 使用zip:// 协议去访问压缩文件中的文件

这就意味着可以直接绕过后缀名。
比如访问'http://127.0.0.1/LFI.php?include=zip://func1.jpg#func1.php',其中fun1.jpg 是改了后缀的压缩文件。

3.使用phar://协议去读取服务器端的phar文件, 执行 phar 文件中的php 脚本或者其他。这需要事先本地创建一个phar文件再上传到目标站点。

创建phar 文件代码, 其中phar 文件里只包含一个 createwebshell.php 文件。

<?php
$phar = new Phar('webshell4.phar');
$phar->addFile('createwebshell.php', 'cws.php');
?>

phar文件就相当于 java 里的jar 文件, 只不过phar 文件不可以用压缩文档打开, 可以用编辑器打开, 会发现phar 文件拥有特别的格式。
通过访问http://127.0.0.1/LFI.php?include=phar://webshell.phar/cws.php 可以执行cws脚本, 其中webshell.phar 的后缀可以随意更改以便绕过后缀检查。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http://tieba.baidu.com/p/2310282657 什么是”远程文件包含漏洞”?服务器通过ph...
    查无此人asdasd阅读 6,200评论 0 2
  • PHP:include()``include_once()``require()``require_once() ...
    寻梦xunm阅读 4,302评论 1 4
  • 一、什么才是”远程文件包含漏洞”? 回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来...
    喜欢吃栗子阅读 7,657评论 1 4
  • (源自摘抄整理)https://www.91ri.org/11494.html Webshell实现与隐藏探究 一...
    JackyTsuuuy阅读 21,130评论 2 13
  • 一套实用的渗透测试岗位面试题,你会吗? 1.拿到一个待检测的站,你觉得应该先做什么? 收集信息 whois、网站源...
    g0阅读 10,428评论 0 9

友情链接更多精彩内容