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

简介: 7. 绕过 Gitlab 的双因素认证难度:中URL:无报告链接:https://hackerone.com/reports/128085报告日期:2016.4.3奖金:无描述:4 月 3 日,Jobert Abma(HackerOne 的联合创始人)向 Gitlab 报告称,在双因素认证开启情况下,攻击者能够登录受害者的账户,而不需知道受害者的密码。

7. 绕过 Gitlab 的双因素认证

难度:中

URL:无

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

报告日期:2016.4.3

奖金:无

描述:

4 月 3 日,Jobert Abma(HackerOne 的联合创始人)向 Gitlab 报告称,在双因素认证开启情况下,攻击者能够登录受害者的账户,而不需知道受害者的密码。

对于那些不熟悉的人,双因素认证是两个登录步骤,通常用户输入它们的用户名和面,之后站点会发送验证码,通常通过电子邮件或者 SMS,用户需要输入它来完成登录过程。

这里,Jobert 注意到,在这个过程中,一旦攻击者输入了用户名和密码,会发送一个 Token 来结束登录。在提交这个 Token 时,POST 调用为:

POST /users/sign_in HTTP/1.1 
Host: 159.xxx.xxx.xxx ...

----------1881604860 
Content-Disposition: form-data; name="user[otp_attempt]"

212421 
----------1881604860-

如果攻击者拦截了它并向调用添加了用户名,例如:

POST /users/sign_in HTTP/1.1 
Host: 159.xxx.xxx.xxx ...

----------1881604860 
Content-Disposition: form-data; name="user[otp_attempt]"

212421 
----------1881604860 
Content-Disposition: form-data; name="user[login]"

john
----------1881604860-

攻击者就能够登录进 John 的账户,如果otp_attempt对 John 可用。换句话说,在两步认证期间,如果攻击者添加了user[login]参数,它们就能修改被登录的账户。

现在,唯一的麻烦就是攻击者需要拥有有效的 OTP Token,用于受害者。但是这就是爆破登场的时候了。如果站点管理员没有实现速率限制,Jobert 就可以对服务器执行重复调用来猜测有效的 Token。攻击成功的可能性取决于向服务器发送请求的传输时间,以及 Token 有效时间的长度,但是无论如何,这里的漏洞都很明显。

重要结论

双因素验证是个机巧的系统,难以正确实现。当你注意到站点使用了它时,你需要完整测试所有功能,包括 Token 的生命周期,尝试的最大次数,复用过期的 Token,猜测 Token 的可能性,以及其他。

8. 雅虎 PHP 信息泄露

难度:中

URL:http://nc10.n9323.mail.ne1.yahoo.com/phpinfo.php

报告链接:https://blog.it-securityguard.com/bugbounty-yahoo-phpinfo-php-disclosure-2/

报告日期;2014.10.16

奖金:无

描述:

虽然它并没有巨额奖金,像是其他漏洞那样(实际上没有奖金,非常意外),但这是我最喜欢的报告之一,因为它教会了我网络扫描和自动化的重要性。

在 2014 年 10 月,Patrik Fehrenbach(你应该从“Hacking Pro Tips Interview#2”中了解了他,很棒的一个家伙)发现了雅虎的服务器中存在可访问的phpinfo()文件。如果你不熟悉phpinfo(),这是一个敏感的命令,它不应该在生产环境能够访问,以及公开访问,因为它泄露了所有类型的服务器信息。

现在,你可能想知道 Patrik 如何找到了http://nc10.n9323.mail.ne1.yahoo.com,我保证。结果它 PING 了yahoo.com,它返回了98.138.253.109。之后它将其传给了 WHOIS,并发现雅虎实际上拥有下面这些东西:

NetRange: 98.136.0.0 - 98.139.255.255 
CIDR: 98.136.0.0/14 
OriginAS: 
NetName: A-YAHOO-US9 
NetHandle: NET-98-136-0-0-1 
Parent: NET-98-0-0-0-0 
NetType: Direct Allocation 
RegDate: 2007-12-07 
Updated: 2012-03-02 
Ref: http://whois.arin.net/rest/net/NET-98-136-0-0-1

要注意第一行,雅虎拥有大量的 IP 地址,从98.136.0.098.139.255.255,或者98.136.0.0/14,这是 260000 个独立 IP 地址。这是大量的潜在目标。

Patrik 之后写了个简单的 bash 脚本来寻找可用的phpinfo文件:

#!/bin/bash 
for ipa in 98.13{6..9}.{0..255}.{0..255}; do 
wget -t 1 -T 5 http://${ipa}/phpinfo.php; done &

执行了这个,他在随机的雅虎服务器上发现了它。

重要结论

在渗透的时候,考虑公司的整个设施,除非他们告诉你这超出范围了。虽然这个报告没有得到一分钱的奖金,我知道 Patrik 使用了相似的技巧来寻找一些重要的漏洞来获得奖金。

此外,你会注意到,这里有 260000 个潜在的地址,他们不可能手动扫描。在执行这一类型的测试时,自动化非常重要,并且是应该使用的东西。

9. HackerOne Hacktivity 投票

难度:中

URL:https://hackerone.com/hacktivity

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

报告日期:2016.5.10

奖金:Swag

描述:

虽然严格来说,这里没有真正的安全漏洞,这个报告是个跳出思维定式的良好示例。

2016 年 4 月到 5 月的一段时间,HackerOne 为黑客开发了一个新功能,来通过 Hacktivity 列表给报告投票。要知道功能是否可用,有个简单的办法,也有个难的办法。通过简单的办法,登录时/current_user的 GET 调用会包含hacktivity_voting_enabled:false。难的办法有些有趣,其中存在漏洞,并且这就是我包含这篇报告的原因。

如果你访问了 hacktivity 并且查看了页面源码,你会注意到非常稀疏,只是一些div,没有真正的内容。

HackerOne Hacktivity 页面源码

现在,如果你不喜欢他们的平台,并且没有安装类似于 wappalyzer 的插件,仅仅看这个页面源码也会告诉你,内容由 JavaScript 渲染。

所以,知道了之后,如果你打开 Chrome 或 Firefox 的开发者工具,你可以检查 JavaScript 源码(在 Chrome 中,你需要访问source,左边是top>hackerone.com->assets->frontend-XXX.js)。Chrome 的开发者工具自带了花括号美化打印的按钮,这会使最小化的 JavaScript 刻度。你也可以使用 Burp 来查看返回这个 JavaScript 文件的响应。

原因是这样,如果你在 JavaScript 中搜索 POST,你会发现一些 HackerOne 所使用的 路径,它们可能不是那么明显,取决于你的权限,以及内容里有什么东西。其中之一是:

HackerOne 应用的 JavaScript POST 投票

你可以看到,我们有两个用于投票功能的路径。在写这个报告的时候,你实际可以执行这些调用,并给报告投票。

现在,这是发现功能的一种方式 – 在报告中,黑客使用了另一种,通过拦截 HackerOne 的响应(大概是使用类似 Burp 的工具)。它们将返回为假的属性切换为真。这之后暴露了投票元素,在点击时,执行了可用的 POST 或者 DELETE 调用。

我想你展示 JavaScript 的原因时,和 JSON 响应交互可能不会总是暴露新的 HTML 元素。因此,浏览 JavaScript 可能暴露其它“隐藏的”终端来交互。

重要结论

JavaScript 源代码想你提供了来自目标的实际源代码,你可以浏览它们。这非常棒,因为你的测试从完全黑盒,对后端没有任何想法,变成了白盒(虽然也不完全是),其中可以观察代码如何执行。这不意味你需要走查每一行代码,这里的 POST 调用在 20570 行发现,只使用了一个简单的 POST 搜索。

10. Pronhub Mamcache 未授权访问

难度:中

URL:stage.pornhub.com

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

报告日期:2016.3.1

奖金:$2500

描述:

在它们公开启动之前,Pornhub 在 HackerOne 上开启了一个私有漏洞奖励计划,*.pornhub.com域,带有丰富的奖金,这对于多数黑客来说意思是所有 Pronhub 的子域都是一样的。现在的问题是发现他们。

在他的博文中,Andy Gill(@ZephrFish)解释了为什么这个非常好,它使用超过一百万潜在名称的列表,通过测试不同子域名称是否存在,发现了越 90 个可能的漏洞目标。

现在,如果访问所有这些站点来观察什么是可用的,这会花费大量时间,所以它使用 Eyewitness 工具自动化了这个流程(在工具一章中包含),它从有效 HTTP/HTTPS 页面中截了一些截图,并提供了一个不错的报告,其中站点监听 80、443、8080 和 8443 端口(常见 HTTP 和 HTTPS 端口)。

根据他的 WriteUp,Andy 稍微切换了一些另见,并使用 Nmap 工具来深入挖掘stage.pornhub.com子域。当我问他原因时,它解释道,以他的经验,stage和开发服务器比起生产服务器更可能拥有错误配置的安全权限。所以,一开始,它使用了nslookup命令,得到了子域的 IP。

nslookup stage.pornhub.com 
Server: 8.8.8.8 
Address: 8.8.8.8#53 
Non-authoritative answer: 
Name: stage.pornhub.com 
Address: 31.192.117.70

我也看到,这个可以通过命令ping来完成,但是无论哪种方法,它现在拥有了子域的 IP 地址,并使用命令sudo namp -sSV -p- 31.192.117.70 -oA stage__ph -T4 &,它得到了:

Starting Nmap 6.47 ( http://nmap.org ) at 2016-06-07 14:09 CEST 
Nmap scan report for 31.192.117.70 
Host is up (0.017s latency). 
Not shown: 65532 closed ports 
PORT STATE SERVICE VERSION 
80/tcp open http nginx 
443/tcp open http nginx 
60893/tcp open memcache 
Service detection performed.Please report any incorrect results at http://nmap.org/submit/ . 
Nmap done: 1 IP address (1 host up) scanned in 22.73 seconds

将命令拆解一下:

  • 标志-sSV定义了发送给服务器的封包类型,告诉 Nmap 尝试和判断任何开放端口上的服务。

  • -p-告诉服务器要检查所有 65535 个端口(默认只会检查常用的 1000 个端口)。

  • 31.192.117.70是要扫描的 IP。

  • -oA stage__ph告诉 Nmap 一次以三种主要格式输出它的发现,使用文件名称stage__ph

  • -T4定义了任务的时间(选项为 0 ~ 5,数字越大就越快)。

对于结果来说,要注意的关键就是端口 60893 是打开的,而且 Nmap 认为它运行 Memcache。对于那些不熟悉的人,Memcache 是一个缓存服务,它使用键值对来储存任意数据。它通常通过更快地服务内容,用于提升网站的速度。类似的服务的 Redis。

发现这本身不是个漏洞,但是是个危险信号(虽然安装指南推荐使其不可能公开访问,作为一个安全措施)。测试之后,意外的是 Pornhub 并没有开启任何安全手段。Andy 能够通过 netcat 连接服务,不需要用户名和密码。连接之后,它执行命令来获取版本,状态,以及其他,为了确认这个和漏洞。

但是,恶意攻击者可以将其用于:

  • 造成拒绝服务,通过持续写入和删除缓存,因此使服务器保持繁忙(取决于站点的配置)。

  • 通过用垃圾缓存数据填充服务,造成 DOS,同样取决于站点配置。

  • 执行跨站脚本攻击,通过注入恶意 JS 载荷作为有效的缓存数据,来提供给用户。

  • 可能的话,执行 SQL 注入,如果 memcache 数据在数据库中存储的话。

总要结论

子域和更宽泛的网络配置代表了用于渗透的极大潜能。如果你注意到程序在域中包含*.SITE.com,尝试找到可能存在漏洞的子域,而不要去追求主站上的低悬的果实,因为人人都能搜索到它们。你也的值花费时间来使你自己熟悉一些工具,例如 Nmap、Eyewitness、KnockPy,以及其他。这有助于你获得 Andy 的视角。

总结

应用逻辑漏洞不一定总是涉及代码。反之,利用它们通产更需要敏锐的观察力,以及跳出思维定式。始终留意其它站点可能使用的工具和服务,因为它们代表了新的攻击向量。这包括站点所使用的来渲染内容的 JavaScript 库。

发现它们或多或少都需要代理拦截器,在将其发送到你所利用的站点之前,它能让你玩转一些值。尝试修改任何值,只要它们和识别你的账户相关。这可能包含建立两个不同的账户,以便你有两套有效的凭据,这可能有帮助。同时寻找隐藏或不常用的终端,它可以用于利用无意中访问的功能。

任何时候一些类型的事务发生时,你也应该留意。始终有一些机会,其中开发者没有在数据库级别处理竞态条件(特别是 NoSQL)。也就是说,它们的代码可能会阻止你,但是如果你让代码执行够快,比如几乎同时完成,你就能发现静态条件。确保你多次测试了这个领域内的任何东西,因为每次尝试不一定都发生,就像星巴克的案例那样。

最后,要留意新的功能 – 它通常为测试展示了新的区域。并且如果可能的话,自动化你的测试来更好利用你的时间。

相关文章
|
11月前
|
存储 安全 前端开发
Web渗透-文件上传漏洞-上篇
文件上传漏洞常见于Web应用,因类型限制不严可致恶意文件执行。本文介绍前端检测、MIME类型、黑名单、.htaccess、空格、双写等多种绕过方式,并结合upload-labs靶场演示利用方法,提升安全防护认知。
3158 1
Web渗透-文件上传漏洞-上篇
|
11月前
|
安全 中间件 应用服务中间件
WEB渗透-文件上传漏洞-下篇
本文详解文件上传安全漏洞,涵盖白名单绕过(如00截断、条件竞争)、图片木马制作与利用、以及IIS、Apache、Nginx等常见解析漏洞原理与防御。结合实战案例,深入剖析攻击手法与修复方案。
840 1
|
11月前
|
安全 测试技术 程序员
web渗透-文件包含漏洞
文件包含漏洞源于程序动态包含文件时未严格校验用户输入,导致可加载恶意文件。分为本地和远程包含,常见于PHP,利用伪协议、日志或session文件可实现代码执行,需通过合理过滤和配置防范。
1458 79
web渗透-文件包含漏洞
|
11月前
|
存储 JavaScript 安全
Web渗透-XSS漏洞深入及xss-labs靶场实战
XSS(跨站脚本攻击)是常见的Web安全漏洞,通过在网页中注入恶意脚本,窃取用户信息或执行非法操作。本文介绍其原理、分类(反射型、存储型、DOM型)、测试方法及xss-labs靶场实战案例,帮助理解与防御XSS攻击。
3100 1
Web渗透-XSS漏洞深入及xss-labs靶场实战
|
11月前
|
安全 程序员 数据库连接
web渗透-CSRF漏洞
CSRF(跨站请求伪造)是一种常见的Web安全漏洞,攻击者通过伪造用户请求,诱使其在已登录状态下执行非意愿操作。本文介绍CSRF原理、分类(站外与站内)、DVWA靶场搭建及防御措施,如同源策略与Token验证,提升安全防护意识。
735 0
web渗透-CSRF漏洞
|
11月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
548 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
11月前
|
安全 Linux PHP
Web渗透-命令执行漏洞-及常见靶场检测实战
命令执行漏洞(RCE)指应用程序调用系统命令时,用户可控制输入参数,导致恶意命令被拼接执行,从而危害系统安全。常见于PHP的system、exec等函数。攻击者可通过命令连接符在目标系统上执行任意命令,造成数据泄露或服务瘫痪。漏洞成因包括代码层过滤不严、第三方组件缺陷等。可通过参数过滤、最小权限运行等方式防御。本文还介绍了绕过方式、靶场测试及复现过程。
2058 0
|
10月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
684 4
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。