嗨,大家好,
现在,让我们从几个更有趣且经常被忽视的 Web 应用程序漏洞开始。
1. RE-DOS :正则表达式 DOS
为了理解这个漏洞,我们必须回到我们的工程时代,并修改有限自动机的概念。
有限自动机(FA)是最简单的识别模式的机器。它用于表征常规语言。
现在我们需要了解 DFA 和 NFA(确定性有限自动机和非确定性有限自动机)之间的区别。
在下图中,您可以看到 NFA 和 DFA 的示例。
NFA:它将在第一个进程上循环,无论给它什么输入(a或b)。
DFA:与NFA不同,DFA并不总是在一个永无止境的过程中循环。
我希望这是有道理的,现在 Re-DOS 攻击发生在由于开发人员实现的错误正则表达式提供的棘手输入而实现 NFA 状态时。
为了达到一定的影响,正则表达式应该是服务器端的。由于客户端正则表达式匹配只会导致自我 DOS。
现在假设应用程序中有一个输入字段,并且该输入字段的服务器端正则表达式为 /A(B|C+)+D/。
让我们理解这个正则表达式:/A(B|C+)+D/
该值应以 A 开头,后跟 B 或后跟 n 个 C 数字,以 D 结尾。
与正则表达式匹配的输入示例:
ABD, ACCCCCCCCCCCD, ACD
但是,如果假设如果向输入字段提供了一个无效的字符串,如ACCCCCCCCCCCCCCCCCC....(C一万次),那么它将消耗大量时间来进行检查,因为模式以A开头,然后是10000个Cs,正则表达式将在C上继续循环,以便继续找到D以结束检查。因此,为正则表达式 /A(B|C+)+D/ 将导致 Re-DOS 攻击,因为正则表达式匹配消耗了太多时间。
您可以通过输入不同的值并观察响应来猜测服务器端正则表达式。
2. 通过前端代码进行私人账号信息泄露
这个漏洞是在我的黑客目标上发现的。
该应用程序的用户个人资料包含详细信息,例如指向他的社交媒体帐户和个人网站的链接。当个人资料隐私是公开的时,其他用户可以看到用户的社交媒体链接/个人网站,但当设置为私有时,没有人可以看到它们。在下图中可以看出,没有社交媒体按钮,因为个人资料隐私设置为私密。
开发人员以这样一种方式设计了一种配置,即当配置文件是私有的时,社交媒体 URL 不会出现在用户配置文件上,但他们忘记从前端代码中删除信息。
查找此类漏洞的步骤非常简单:
步骤 1。检查应用程序是否有 private-profile 选项。
第2步。如果是,请观察一旦个人资料设为私有,哪些详细信息会被隐藏。
第 3 步。尝试在这些页面的前端代码中找到这些详细信息,只需在浏览器中执行查看源和搜索即可。
3. 社交媒体按钮上的参数污染
有许多应用程序允许在社交媒体平台上分享他们的文章,为此,他们在文章页面上提供了社交媒体按钮,通过这些按钮可以直接在社交媒体上分享文章及其链接。
下面是一个示例:
假设 artcile URL 已 https://article.com/blog/artcile123,当它通过 facebook 按钮在 facebook.com 上共享时,它会触发以下 URL:
https://facebook.com/dialog/feed?app_id=1234&link=https://site.com/blog/文章123
如果应用程序容易受到此功能上的参数污染,则攻击者可以在 URL 中附加一个额外的“链接”参数,并将其发送给受害者,如下所示:
https://site.com/blog/article123?&链接=https://evil.com
当受害者打开 URL 并尝试在他的社交媒体上分享文章时,触发的 facebook URL 将如下所示:
https://facebook.com/dialog/feed?app_id=1234&link=https://site.com/blog/article123&link=https://evil.com
除了合法文章 URL,受害者还将在他的社交媒体帐户上分享攻击者的 URL。
4. 网页缓存欺骗攻击
与 Web Cache Poisoing 不同,缓存欺骗是一种有针对性的攻击。用户的身份验证信息缓存在非现有端点上,任何远程攻击者都可以看到该端点。
让我们假设下面的 Web 应用程序在 url https://in.virtuosity.com/spidacalc 上显示用户名 (vishal bb) 和购物车项目
现在打开一个不存在的URL,例如 https://in.virtuosity.com/spidacalc/nonexisting.css 您可以看到页面抛出的错误,但您也可以看到用户名和购物车详细信息在404错误页面上仍然可见。
现在,如果攻击者在未经身份验证的浏览器窗口中打开此 URL,并且详细信息在那里也可见,则该应用程序容易受到 Web 缓存欺骗。
发生这种情况是因为在这种情况下,包含其身份验证信息的特定用户的响应会缓存在该链接上。
5. 二阶子域名接管
当网站使用外部域获取文件并且该域/子域容易受到接管时,就会出现此漏洞。
您需要做的就是查看页面的源代码,并检查外部域/子域是否提供 404。如果是,则检查其 CNAME 条目是否已过期。
外部域可以是任何东西,也可以是云服务存储桶,例如 s3 存储桶。
假设您的目标是 example.com 当您查看 www.example.com/index.html 页面的源时,它会显示一些外部链接,其中一个是 info.evil.com/somejavascript.js。
现在让我们假设 info.evil.com 容易受到子域接管,然后攻击者可以声称它并制作一个恶意的 JS 文件,名称如somejavascript.js并在 info.evil.com/somejavascript.js 上托管它(在同一路径上)。
该应用程序将在页面上运行攻击者的恶意 JS 代码index.html。
要自动检测二阶子域接管,您可以 https://www.deadlinkchecker.com 使用该工具。
6. 从 Archive.org 中提取敏感信息
Web 应用程序有时会在 GET 方法上处理敏感参数,例如登录凭据、登录令牌、信用卡号等。
除了参数,它还在 GET 方法上处理一些敏感文件。
这是一种有风险的行为,因为以 GET 方法发送的数据可能会被爬虫抓取并保存在存档引擎中。
您可以使用像这样的存档引擎来检查目标的存档数据:
https://web.archive.org/cdx/search/cdx?url=*。YOURTARGET.COM&fl=original&collapse=url键
攻击者可以通过搜索名称、代码、令牌、手机号码、信用卡等密钥来提取这些信息。这可能会产生巨大的影响,具体取决于泄漏的内容。如果通过此技术获得有效的访问令牌或密码,则将导致对用户帐户或系统的未经授权的访问。这就是为什么不能通过 GET 方法发送敏感数据的原因。
今天就到这里。如果您喜欢阅读,请不要忘记鼓掌。
很快再见,再写一篇有趣的文章。
快乐的黑客;)
原文始发于微信公众号(安全狗的自我修养):寻找被大多数 Bug 赏金猎人忽略的漏洞
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论