Web Hacking 101 中文版 九、应用逻辑漏洞(一)

简介: 九、应用逻辑漏洞 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0应用逻辑漏洞不同于其他我们讨论过的类型。

九、应用逻辑漏洞

作者:Peter Yaworski

译者:飞龙

协议:CC BY-NC-SA 4.0

应用逻辑漏洞不同于其他我们讨论过的类型。虽然 HTML 注入、HTML 参数污染和 XSS 都涉及到提交一些类型的潜在恶意输入,应用落地及漏洞实际上涉及到操纵场景和利用 Web APP 代码中的 Bug。

这一类型攻击的一个值得注意的例子是 Egor Homakov 对 Github 的渗透,Github 使用 RoR 编写。如果你不熟悉 Rails,他是一个非常流行的 Web 框架,在开发 Web 站点时,它可以处理很多繁杂的东西。

在 2012 年 3 月,Egor 通知了 Rails 社区,通常,Rails 会接受所有提交给它的参数,并使用这些值来更新数据库记录(取决于开发者的实现。Rails 核心开发者的想法是,使用 Rails 的 Web 开发者应该负责填补它们的安全间隙,并定义那个值能够由用户提交来更新记录。这个行为已经在社区内人人皆知了,但是 Github 上的线程展示了很少的人能够鉴别出来它带来的风险(https://github.com/rails/rails/issues/5228)。

当核心开发者不同意他的时候,Egor 继续利用 Github 上的认证漏洞,通过猜测和提交参数值,它包含创建日期(如果你熟悉 Rails 并且知道多数数据库记录包含创建和更新日期列,它就不太困难)。因此,它在 Github 上穿件了一个票据,日期的年份是未来。它也设法更新 SHH 访问密钥,这可以使他访问 Github 官方的代码仓库。

之前提到了,这个渗透通过 Github 后端代码实现,它并没有合理验证 Egor 所做的事情,这在随后可用于更新数据库记录。这里,Egor 发现了叫做大量赋值漏洞的东西。

应用逻辑漏洞,即发现前面讨论的这种类型的攻击,更加有技巧性,因为它们依赖代码判定的创造丁思渭,并且并不仅仅是提交潜在的恶意代码,开发者没有转义它。(不要尝试在这里简化其它类型的漏洞,一些 XSS 攻击也很复杂!)

使用 Github 的例子,Egor 知道了系统基于 Rails 以及 Rails 如何处理用户输入。在其他例子中,它涉及直接编程调用 API 来测试应用的行为,就像 Shopify 的管理员权限绕过那样。或者,它涉及重复使用来自验证 API 调用的返回值,来进行后续的API 调用,本不应该允许你这么做。

示例

1. Shopify 管理员权限绕过

难度:低

URL:shop.myshopify.com/admin/mobile_devices.json

报告链接:https://hackerone.com/reports/100938

报告日期:2015.11.22

奖金:$500

描述:

Shopify 是一个巨大并健壮的平台,它包含 Web UI 以及受支持的 API。这个例子中,API 不验证一些权限,而 Web UI 明显会这么做。因此,商店的管理员,它们不被允许接受邮件提醒,可以通过操作 API 终端来绕过这个安全设置,在它们的 Apple 设备中收到提醒。

根据报告,黑客只需要:

  • 使用完全访问权限的账号登录 Shopify 移动应用
  • 拦截POST /admin/mobile_devices.json的请求
  • 移除该账号的所有权限
  • 移除添加的移动端提醒
  • 重放POST /admin/mobile_devices.json的请求

这样做之后,用户可以接收到所有商店处的订单的移动端提醒,因此忽略了商店配置的安全设置。

重要结论

这里有两个重要结论。首先,并不是所有东西都涉及代码注入。始终记住使用代码并观察向站点传递了什么信息,并玩玩它看看什么会发生。这里,所有发生的事情是,移除 POST 参数来绕过安全检查。其次,再说一遍,不是所有攻击都基于 HTML 页面。API 终端始终是一个潜在的漏洞区域,所以确保你考虑并测试了它们。

2. 星巴克竞态条件

难度:中

URL:Starbucks.com

报告链接:http://sakurity.com/blog/2015/05/21/starbucks.html

报告日期:2015.5.21

奖金:无

描述:

如果你不熟悉竞态条件,本质上它是两个潜在的进程彼此竞争来完成任务,基于一个厨师场景,它在请求被执行期间变得无效。换句话说,这是一个场景,其中你拥有两个进程,它们本应该是互斥的,不应该同时完成,但是因为它们几乎同时执行,它们被允许这么做了。

这里是一个例子:

  1. 你在手机上登录进了你的银行站点,并请求将 500500 的账户转到另一个账户。

  2. 这个请求花费很长时间(但是仍然处理),所以你在你的笔记本上登录,并且再次执行了相同请求。

  3. 笔记本的请求几乎立即完成了,但是你的手机也是这样。

  4. 你刷新了银行账户,并发现你的账户里有 1000500。

虽然这个很基础,理念都是一样的,一些条件存在于请求开始,在完成时,并不存在了。

所以,回到这个例子,Egor 测试了从一个星巴克的卡中转账,并且发现他成功触发了竞态条件。请求使用 CURL 程序几乎同时创建。

重要结论

竞态条件 是个有趣的攻击向量,它有时存在于应用处理一些类型的余额的地方,例如金额、积分,以及其他。发现这些漏洞并不总是发生在第一次尝试的时候,并且可能需要执行多次重复同时的请求。这里,Egor 在成功之前执行了 6 次请求。但是要记住在测试它的时候,要注意流量负荷,避免使用连续的测试请求危害到站点。

3. Binary.com 权限提升

难度:低

URL:binary.com

报告链接:https://hackerone.com/reports/98247

报告日期:2015.11.14

奖金:$300

描述:

这真是一个直接的漏洞,不需要过多解析。

本质上,在这个场景下,用户能够登录任何账户,代表被黑的用户账户,并查看敏感信息,或执行操作,并且一切只需要知道用户的 UID。

在你渗透之前,如果你登录了Binary.com/cashier,并查看了页面的 HTML,你会注意到有个<iframe>标签包含 PIN 参数。这个参数实际上就是你的账户 ID。

下面,如果你编辑了 HTML,并且插入了另一个 PIN,站点就会自动在新账户上执行操作,而不验证密码或者任何其他凭据。换句话说,站点会将你看做你所提供的账户的拥有者。

同样,所需的一切就是知道某人的账户号码。你甚至可以在出现在iframe中的时间修改为PAYOUT,来触发另一个账户的付款操作。但是,Bianry.com表示,所有取款都需要手动人工复查,但是这并不是说,这就一定会被发现。

重要结论

如果你寻找机遇漏洞的验证,要留意凭据传递给站点的地方。虽然这个漏洞通过查看页面源码来实现,你也可以在使用代理拦截器的时候,留意传递的信息。

如果你的确发现了被传递的一些类型的凭据,但他们看起来没有加密时,要注意了,并且尝试玩玩它们。这里,PIN 是CRXXXXXX而密码是0e552ae717a1d08cb134f132。显然 PIN 没有解密,但是密码加密了。未加密的值是一个非常好的地方,你可以从这里下手。

相关文章
|
11月前
|
安全 测试技术 程序员
web渗透-文件包含漏洞
文件包含漏洞源于程序动态包含文件时未严格校验用户输入,导致可加载恶意文件。分为本地和远程包含,常见于PHP,利用伪协议、日志或session文件可实现代码执行,需通过合理过滤和配置防范。
1461 79
web渗透-文件包含漏洞
|
11月前
|
存储 安全 前端开发
Web渗透-文件上传漏洞-上篇
文件上传漏洞常见于Web应用,因类型限制不严可致恶意文件执行。本文介绍前端检测、MIME类型、黑名单、.htaccess、空格、双写等多种绕过方式,并结合upload-labs靶场演示利用方法,提升安全防护认知。
3169 1
Web渗透-文件上传漏洞-上篇
|
11月前
|
安全 中间件 应用服务中间件
WEB渗透-文件上传漏洞-下篇
本文详解文件上传安全漏洞,涵盖白名单绕过(如00截断、条件竞争)、图片木马制作与利用、以及IIS、Apache、Nginx等常见解析漏洞原理与防御。结合实战案例,深入剖析攻击手法与修复方案。
849 1
|
11月前
|
存储 JavaScript 安全
Web渗透-XSS漏洞深入及xss-labs靶场实战
XSS(跨站脚本攻击)是常见的Web安全漏洞,通过在网页中注入恶意脚本,窃取用户信息或执行非法操作。本文介绍其原理、分类(反射型、存储型、DOM型)、测试方法及xss-labs靶场实战案例,帮助理解与防御XSS攻击。
3136 1
Web渗透-XSS漏洞深入及xss-labs靶场实战
|
11月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
562 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
11月前
|
安全 程序员 数据库连接
web渗透-CSRF漏洞
CSRF(跨站请求伪造)是一种常见的Web安全漏洞,攻击者通过伪造用户请求,诱使其在已登录状态下执行非意愿操作。本文介绍CSRF原理、分类(站外与站内)、DVWA靶场搭建及防御措施,如同源策略与Token验证,提升安全防护意识。
742 0
web渗透-CSRF漏洞
|
11月前
|
安全 Linux PHP
Web渗透-命令执行漏洞-及常见靶场检测实战
命令执行漏洞(RCE)指应用程序调用系统命令时,用户可控制输入参数,导致恶意命令被拼接执行,从而危害系统安全。常见于PHP的system、exec等函数。攻击者可通过命令连接符在目标系统上执行任意命令,造成数据泄露或服务瘫痪。漏洞成因包括代码层过滤不严、第三方组件缺陷等。可通过参数过滤、最小权限运行等方式防御。本文还介绍了绕过方式、靶场测试及复现过程。
2069 0
|
Web App开发 JavaScript 前端开发
《单页Web应用:JavaScript从前端到后端》——1.3 精心编写的单页应用的用户效益
所有这些好处意味着,你可能会想把下个应用做成单页应用。每次点击后都会重新渲染整张页面的笨拙网站,容易日益疏远富有经验的用户。精心编写的单页应用具有互动和快速响应的界面,还伴有访问网络的功能,这将帮助我们把客户留在属于他们的地方:使用我们的产品。
1346 0