Web安全攻防 学习笔记

一、绕过黑名单验证(基本都用到 BurpSuite)



1.1、基于文件后缀名验证

        对于文件上传模块来说,尽量避免上传可执行的脚本文件。为了防止上传脚本需要设置对应的验证 方式。最简单的就是设置文件后缀名验证。

  • 验证方式的分类
    (1)基于白名单验证:只针对白名单中有的后缀名,文件才能上传成功。
    (2)基于黑名单验证:只针对黑名单中没有的后缀名,文件才能上传成功。


1.2、基于黑名单验证代码分析

        对于黑名单中的后缀名筛选。绕过黑名单可以通过寻找 “漏网之鱼” ,寻找某些可以被作为脚本执行 同时也不在黑名单中。


1.3、BurpSuite 绕过黑名单验证

1. 开启 BurpSuite 
	2. 上传文件
	3. BurpSuite 截取到数据包

java黑名单域名_上传


java黑名单域名_上传_02


java黑名单域名_后缀名_03


java黑名单域名_后缀名_04


java黑名单域名_上传_05



1.4、大小写绕过黑名单验证

  1. Windows 系统下,对于文件名中的大小写不敏感。例如:test.php 和 TeSt.PHP 是一样的。
  2. 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

  1. WeBaCoo 生成 Webshell: webacoo -g -o a.php
  2. 上传 Webshell
  3. 连接 Webshell:webacoo -t -u "上传的 Webshell 的地址"
  4. WeBaCoo 这个工具功能好像不太强,似乎只能访问 Webshell 所在的文件夹

java黑名单域名_Web_06


java黑名单域名_Web_07


java黑名单域名_后缀名_08



2.2、生成并上传 Webshell

  1. 生成:weevely generate 密码 要保存的路径/文件名.后缀名
  2. 上传
  3. 连接:weevely shell文件地址 密码,地址获取方法和上面一样
  4. 这个工具貌似比 WeBaCoo 强,因为可以执行的命令更多(例如访问上一级目录,查看数据库系统信息)

java黑名单域名_上传_09


java黑名单域名_上传_10