5. 文件上传漏洞
5.1 原理
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。
一句话木马
<?php @eval($_POST['666']);?>
5.2 常见上传点
编辑器
5.3 上传条件
(1)木马上传成功,未被杀;
(2)知道木马的路径在哪;蚁剑连接需要路径 能够访问到
(3)上传的木马能正常运行。
上传过程检测
才能成功入侵
5.4 Webshell
Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。
黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起
然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境
以达到控制网站服务器的目的。
先上传小马(代码短,免杀效果好),没问题再上传大马(可以实现很多功能)
5.4.1 一句话木马
1、标记脚本语言的开始
2、执行后面请求到的数据
3、请求用户端数据
可以执行系统命令,通过系统命令执行其他操作
5.4.2 管理工具
功能:实现webshell的连接
5.5 上传流程
5.5.1 信息搜集
信息搜集接触面广,可以找到对应的中间件版本
比如
iis 5.x 6.x
(1)找中间件
中间件有三种解析方式
1、格式解析
限制不能上传.php、.jsp、.asp的文件
但是可以上传asa、cer、cdx的格式(等价,会当成asp执行)
2、目录解析
前提是可以上传目录
有些编辑器可以上传
我们需要先新建一个目录,命名为1.php
然后我们上传1.txt没问题,1.png也没问题,那么这两个文件就被放在目录下
只需要在1.txt中写一个脚本,就可以被执行
3、分号解析
比如在上传1.php文件时,可以用
1.php;.jpg上传
后缀没问题,可以上传,但是上传到服务器会把分号去除,还是一个脚本
注意:在重命名的情况下不能用
上传1.php到服务器
上传后重命名为2.php
2.PHP文件失效
利用中间件的特征,找一个上传点
iis 7.0以上的漏洞
1、/.php
2、找上传点 图片码
先找到一个.asp的网站,打开其中的图片,在图片地址后面加一个/.php,
如果出现乱码,就有解析漏洞
(2)找上传点
前端编辑的地方,资料上传的地方
字典爆破
会员中心 头像资料 评论 反馈 。。。
upload/
/upload.jsp
editor/
ewebeditor/
fckeditor/
(3)上传绕过
首先要知道文件上传有哪几种上传方式
黑名单检测 & 白名单检测 & 文件内容
黑名单:限制不能上传的类型
白名单:;只能上传文件的类型
文件内容:图片中写入一段代码,以图片形式存在
1、黑名单绕过
1、大小写 php .PhP .JSP
2、空格
3、点
php.
4、双写
5、::$DATA
2、白名单绕过
1、%00 00截断
1.php%00.jpg
结合目录使用
upload/1.php%00
5.5.2 上传文件方式
总结:删除/禁用JS、修改MIME、等价扩展名、大小写、
htaccess、双写、空格、点、::$DATA、%00截断、0x00截断、图片马、条件竞争等等。
6. 文件包含漏洞
6.1 原理
文件包含,是一个功能。
在各种开发语言中都提供了内置的文件包含函数,可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。
由于没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。
1、本地文件包含漏洞(LFI):仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击者更多的会包含一些固定的系统配置文件,从而读取系统敏感信息。
2、远程文件包含漏洞(RFI):能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况很严重。
6.2 利用条件
利用条件:
(1)allow_url_include=On&&allow_url_fopen=On(两个选项同时开启)
(2)用户可以动态控制变量
6.3 包含函数
结合函数特性去利用
文件包含函数:
PHP:Include()、Require()、Include_once()、Require_once() https://www.kancloud.cn/sunwei056/phpbase/312803
读取配置信息
6.4 伪协议
出现漏洞时,利用伪协议做一些特殊的操作
file:// 访问本地系统