LFI Exploitation 技巧

LFI(Local File Include本地文件包含漏洞) 简单举例

我们通过逐个增加“../”的方式访问以下链接

就有可能得到/etc/passwd文件中内容

可以先通过 index.php?page=news.php >> index.php?page=./news.php来预先试验是不是存在这样的漏洞

多数情况下,对这种漏洞的过滤方式如下

这时我们就可以通过null字节来欺骗php说文件名已经结束,从而绕过这种过滤

假设现在我们得到了一个LFI漏洞,应该怎么利用

可以试着获取以下重要信息

the access.log

不用说,访问日志很重要,可以在 apache/httpd配置文件中查看访问日志的具体名字

/proc/self/environ

    这个文件通常会有一些可以控制的变量,比方说可能会有HTTP_USER_AGENT=Mozilla/5.0,这样我们可以通过设置HTTP_USER_AGENT为<?php phpinfo();?>,或者改成一句话,我们就能直接得到一个webshell

The PHP Sessions Exploitation.

    包含 sess_[your phpsessid value]这个文件,可能会在/tmp或者 /var/lib/php5/目录下

比如:

The upload

找到能上传东西的地方有什么作用就不言而喻了。

读取文件:

如果直接给出一个文件名的话,反馈给我们的文件内容会是执行完的代码,可以通过一下技巧来得到base64编码后的文件

上述代码的功能与 index.php?page=config一样,唯一区别就是base64编码了,然后不会被当做php文件执行了

(译者注:关于php://filter可以参考php支持的协议可封装协议http://www.php.net/manual/zh/wrappers.php)

 

特殊情况:

有时候即使我们能得到一个文件不一定是LFI漏洞。有可能是通过readfile()读取的文件,这时候就不会执行php代码了

不能执行php文件,会是一个缺憾

不过我们可以读取配置文件

index.php?page=./forum/config

 

判断文件夹是否存在:

我们可以通过以下代码来判断是否存在某个文件夹

 

防御方法:

可以通过动态包含的方式来防御,代码举例如下

 

文章来源:http://ddxhunter.wordpress.com/2010/03/10/lfis-exploitation-techniques/

 

日币奖励:

本文为译文且为原创、首发,属科普类,给予日币奖励共4枚。

 

AD:本站开放投稿及积分(日币),日币可兑换实物奖励,每月top3可获得礼品一份。

详情请看:积分规则日币超市