笔记目录
CTF-Web(2)SQL注入
CTF-Web(3)文件上传漏洞
1.WebShell介绍
(1)一句话木马定义
一种网页后门,以asp、php、jsp等网页文件形式存在的一种命令执行环境,而
一句话木马往往只有一行WebShell代码。
作用:
-
攻击获得网站控制权限
-
查看、修改、删除网站数据
-
通过提权漏洞可获得主机权限
(2)一句话木马工作原理
(3)一句话木马(多整理防止被过滤运行不成功)
2.文件上传漏洞介绍
(1)原理
由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致攻击者能够向某个可通过 Web 访问的目录上传恶意文件,并被脚本解析器执行,这样就可以在远程服务器上执行恶意脚本
(2)文件上传流程:
①A 客户端javascript 检测 (
客户端,通常检测扩展名)
②B 服务端MIME 类型检测 (请求Content-Type 内容)
③C 服务端目录路径检测 (检测跟path 参数相关的内容)
④D 服务端文件扩展名检测(检测跟文件extension 相关的内容)
⑤E 服务端文件内容检测(检测内容是否合法,如检测十六进制内容)
(3)漏洞分类
注:如果随便上传奇怪文件后缀,不允许上传为文件白名单(只允许几种后缀通过),否则为黑名单 (只允许几种后缀不通过)
(4)漏洞类型判断流程
3.漏洞分类(upload-labs靶场)
(1)JS前端验证突破(pass-01)
①原理
如客户端上传文件时,可能现在本地JS验证文件类型是否正确再上传
②攻击方式
(2)MIME验证实例(pass-02)
①原理
服务端对上传文件的Content-Type类型进行检测,判断
是否在
白名单规定内
②攻击方式
注意:文件后缀名变更可能需要修改Content-Type类型,否则
(3)黑名单--特殊后缀名(pass-03)
①原理
服务端对上传文件名后缀进行检测,判断
是否为禁止文件类型
②攻击方式
(4)黑名单--.htaccess(pass-04)
①原理
htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法
②攻击方式
###如所有jpg文件解析为php文件
setHandler application/x-httpd-php
(5)黑名单-- .user.ini(pass-05)
①原理
php5.3版支持.ini代替.htaccess
,
此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
②攻击方式
<script language='php'>echo 'a.jpg success'; @eval($_POST['pass']);</script>
【当.user.ini不在白名单中,无法上传】
(6)文件名绕过
①
.[空格].
②大小写绕过
(pass-06
,限Linux
)
③黑名单-加空格
(pass-07
,限windows
)
④黑名单-加点
(pass-08
)
由于没有代码:
$file_name = deldot($file_name);//删除文件名末尾的点,因此可加点
⑤黑名单-双写绕过
(pass-11
)
此处将黑名单文件替换为空字符串,
php → pphphp
⑥黑名单-数据流
(pass-09
)
没有代码,
$file_ext = str_ireplace('::$DATA', '', $file_ext); //去除字符串::$DATA
(7)白名单-%00截断null(GET)
(pass-12,待实现
)
原理:URL遇到%00自动丢弃 %00+后面字符,因为%00 url解码为null
此处白名单检测,只允许上传'jpg','png','gif'格式的文件。
但是上传路径是可以控制的,可以使用%00
截断。
更改地址栏中的上传路径,将后面处理过的文件名进行截断。只能用于php版本低于5.3的。
(8)文件头请求
思路:首先上传一张简单的图片,然后抓包修改文件名后缀php,并在文件内注入木马(修改文件名+添加代码)。
如果能上传则成功