【web安全】文件包含漏洞详细整理

前言

菜某的笔记总结,如有错误请指正。

本文用的是PHP语言作为案例

文件包含漏洞的概念

开发者使用include()等函数,可以把别的文件中的代码引入当前文件中执行,而又没有对用户输入的内容进行充分的过滤,所以导致用户可以通过改变输入访问任何文件。

危害

单单一个文件包含的话,并不能有什么大的威胁,但是他像艾滋病一样,他不会干掉你,但是他能让其他的漏洞危害无限放大,让其他漏洞干掉你。

最大功能:不管什么形式的文件,只要里面有PHP代码,就能带入当前文件中执行。

1.配合文件上传:让原本解析不了的文件通过文件包含直接解析。

2.读取网站中的敏感信息,一些储存在文件中的敏感信息,甚至可以跳出网站的文件夹看本盘的文件。

3.自我构建漏洞:即使没有漏洞,也可以直接写一个漏洞上传上去,然后用文件包含去执行。比如SQL注入和远程命令执行。从而实现攻击数据库和操作系统。

4.作为跳板机攻击内网或者其他网站:上传一个ssrf漏洞的代码,然后用文件包含去执行它。让这个服务器去访问其他资源。

有了他你就拥有了一切~

所以这个漏洞大大的强大。

类型

本地包含:包含本地文件

远程包含:包含远程的文件,这个是需要在PHP中进行配置的,可以从phpinfo中看到

最下面的,但是默认是这个off的状态。

这个怎么开百度一下吧,开启之后就可以输入想要包含文件的url,在自己网站上写一些漏洞或者后门让目标网站去包含就可以了。

 文件包含漏洞的基础案例演示

环境为本地搭建

文件位置以及源代码

【web安全】文件包含漏洞详细整理_第1张图片

【web安全】文件包含漏洞详细整理_第2张图片 

利用方法

【web安全】文件包含漏洞详细整理_第3张图片

可以看到我们用这个漏洞访问了show.txt.

文件包含漏洞的检测方法

白盒:代码审计

黑盒:

1.扫描工具

2.cms平台的公开漏洞

3.根据URL判断

根据URL的判断方法

1.看传参,很明显这里能看出来他包含了show的文件

2.把传参去除看看页面是否一致,再或者访问一下show看看界面是否一致。

3.看英语含义,因为代码大多是用英语简写写的,传参的时候,id一般就是序号,file一般就是文件,file的话一般可能是包含的文件。

文件包含的防御方法

1.固定文件名的后缀

2.升级PHP防止%00的截断

3.使用waf

4.使用白名单,规定部分文件

5.上传的文件进行重命名,防止被读取

 文件包含的部分绕过

绕过固定后缀

源代码和文件

【web安全】文件包含漏洞详细整理_第4张图片

包含的文件强制添加了html后缀

【web安全】文件包含漏洞详细整理_第5张图片

 访问html正常

【web安全】文件包含漏洞详细整理_第6张图片但是无法访问我们想要访问的txt文件了 【web安全】文件包含漏洞详细整理_第7张图片

绕过方法

%00截断法

前提:对方PHP版本小于5.3.4

因为我的版本比较高,所以就不演示了。

原理就是%00后面的内容会被截掉,.html就不起作用了。

下面这个有一定争议哈

长度截断法

当名称长过了一定限制之后,后面的就全没用了,所以.html在最后面就不起作用。

截断长度:windows长于256,linux长于4096

具体还是要看版本而定。

思路就是添加一些符号,但是系统会把这些符号过滤掉,但是长度过长。后缀限制也给移除了。

但是实测,我发现。。。我的并没有截断,但是有人能截断,这个还是看个人情况吧

文件包含的一些花活案例演示

配合文件上传进行攻击

这里我修改了pikachu靶场的文件上传模块让他含有文件包含漏洞

pikachu文件的修改如下

我在文件上传的部分添加了一个include和file的文件其中include包含了文件上传漏洞。

【web安全】文件包含漏洞详细整理_第8张图片

include代码

file中的代码

【web安全】文件包含漏洞详细整理_第9张图片

 首先我们看到文件包含漏洞是可以利用的

【web安全】文件包含漏洞详细整理_第10张图片

接下来开始文件上传操作

文件上传处只允许上传图片,假设这里过滤十分严谨没有能解析成PHP的可能。

但是我们利用文件包含漏洞

上传一个png文件里面写有一句话木马

上传毫无阻拦

【web安全】文件包含漏洞详细整理_第11张图片

这里利用文件包含漏洞去执行图片代码。

【web安全】文件包含漏洞详细整理_第12张图片

用蚁剑去连接

【web安全】文件包含漏洞详细整理_第13张图片

日网站成功!

跳出网站文件夹,包含上级文件

文件位置如下

【web安全】文件包含漏洞详细整理_第14张图片

包含文件路径如上

e盘中存在lookme.txt

我们需要向上跨越三级去包含这个文件。

【web安全】文件包含漏洞详细整理_第15张图片

成功日站。

伪协议

使用前提

【web安全】文件包含漏洞详细整理_第16张图片

各脚本的支持情况

【web安全】文件包含漏洞详细整理_第17张图片

 几个特殊的伪协议

php://协议

常用

php://filter用于读取源码

储存在PHP文件中,包含经常会直接运行,用这个协议可以读取源码。

让他返回一个base64的文件,然后解码。

语法:php://filter/convert.base64-encode/resource=文件路径


php://input用于执行php代码

把post请求中的数据作为代码执行

语法:php://input + [POST DATA]

post写法:

phar://、zip://、bzip2://、zlib://

用来访问压缩包中的文件

语法案例:

zip://[压缩包绝对路径]#[压缩包内文件]

一般现在都是高版本的PHP了,所以这个用的还是很舒服的

还有一些其他的可以看一下这个

https://www.cnblogs.com/endust/p/11804767.html

总结

嗯,总之就是很强大。

你可能感兴趣的:(网络安全总结,web安全,安全)