Web安全攻防 学习笔记
一、绕过黑名单验证(基本都用到 BurpSuite)
1.1、基于文件后缀名验证
对于文件上传模块来说,尽量避免上传可执行的脚本文件。为了防止上传脚本需要设置对应的验证 方式。最简单的就是设置文件后缀名验证。
- 验证方式的分类
(1)基于白名单验证:只针对白名单中有的后缀名,文件才能上传成功。
(2)基于黑名单验证:只针对黑名单中没有的后缀名,文件才能上传成功。
1.2、基于黑名单验证代码分析
对于黑名单中的后缀名筛选。绕过黑名单可以通过寻找 “漏网之鱼” ,寻找某些可以被作为脚本执行 同时也不在黑名单中。
1.3、BurpSuite 绕过黑名单验证
1. 开启 BurpSuite
2. 上传文件
3. BurpSuite 截取到数据包
1.4、大小写绕过黑名单验证
- Windows 系统下,对于文件名中的大小写不敏感。例如:test.php 和 TeSt.PHP 是一样的。
- Linux 系统下,对于文件名中的大小写敏感。例如: test.php 和 TesT.php 就是不一样的。
1.5、空格绕过黑名单验证
Windows 系统下,对于文件名中空格会被作为空处理,程序中的检测代码却不能自动删除空格。从而绕过黑名单。
针对这样的情况需要使用 BurpSuite 截断 HTTP 请求之后,修改对应的文件后缀名添加空格。(具体位置可以看上面 " 绕过 MIME-Type 验证 "
修改的位置)
1.6、点号绕过黑名单验证
Windows 系统下,文件后缀名最后一个点会被自动去除。Linux 系统下,文件后缀名最后一个点不会被自动去除。
利用 BurpSuite 工具截断 HTTP 请求,上传文件后缀名加 .
绕过上传。
1.7、双写绕过黑名单验证
代码编写过程中,只对黑名单中的内容进行空替换,因为只替换一次所以造成双写绕过。
Pass-09 测试: 在 kali 下使用 BurpSuite 修改文件名,上传 1.pphphp
文件。
1.8、路径拼接绕过黑名单验证
在没有对上传的文件进行重命名的情况下,用户可以自定义文件名并在服务器中上传新建,就会造成对应的绕过黑名单。例如: 用户新建 1.php.空格
,一个 . 空格
不行就再加一个试试。
Pass-09 测试: 在 kali 下使用 BurpSuite 修改文件名,上传 1.php. .
文件。
二、生成并上传 Webshell
2.1、WeBaCoo 生成并上传 Webshell
- WeBaCoo 生成 Webshell:
webacoo -g -o a.php
- 上传 Webshell
- 连接 Webshell:
webacoo -t -u "上传的 Webshell 的地址"
- WeBaCoo 这个工具功能好像不太强,似乎只能访问 Webshell 所在的文件夹
2.2、生成并上传 Webshell
- 生成:
weevely generate 密码 要保存的路径/文件名.后缀名
- 上传
- 连接:
weevely shell文件地址 密码
,地址获取方法和上面一样 - 这个工具貌似比 WeBaCoo 强,因为可以执行的命令更多(例如访问上一级目录,查看数据库系统信息)