漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。
3 Z0 k, n( j6 p3 N7 F; Z' [如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:
" Y j7 p0 K& K1 P# W' U1 A
! y$ N# f9 y8 B2 R0 p1
8 x7 |9 u. ]# v6 h2 F<img src=javascript/alert(1);>.png
, ]/ I' c' t- @. C* B! G% \(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)
9 V. ^' M/ ]1 L" {7 b a2 R8 j如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。
% [. V2 `$ q. ^3 V' c4 q所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。
, g0 w7 X/ L7 s) {( J. A0 n修改xxx.png为
0 R. c. F3 T$ x: ~
9 v# l* z6 @3 @! u; D3 L) Z1* e" M' E1 @1 r' S; G( L! A F6 ?
<img src=javascript:alert(1);>.png# Q/ Q! D1 T" \( z4 \0 V
提交。1 ^9 S L! T% [5 k9 Y' {; Y! Z
xss会被触发在第二个页面,也就是点击图片放大之后触发。2 H- p% T1 e+ |. E& ^6 k
pwned!- M- g8 h2 ]2 X; B. w
) v8 p" a) w2 F+ C% g1 V$ h/ J字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)
8 D0 T) }1 l$ k9 D4 b* Q因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。
2 }9 f" [; w1 B; J, ^& P% C虽然现在XSS很火,但我个人真的不是很喜欢这个东西。
; r& r( `% ^0 k& q1 `: t但基友居然都说不行就只好自己硬着头皮再试试了。1 p) E: g: r+ j
在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。
+ ]$ N" A" y5 v7 c. {2 r' m* R而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..! y( [8 n/ O- C. Z3 e- V
这貌似就是传说中的mission impossible了。5 E. G1 ?, _6 O) o
我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:
U& L K) q& c1
! v: v5 x) d* W- ]/ Q<img src=x onerror=alert(document.cookie)>.png( q6 p, h+ W& a! R* D3 e5 G. l
原来的文件名被这个描述给覆盖掉了。, j# Y3 ~" |& p3 U. i9 b$ D. V
pwned!
! d5 {/ g, W9 p- D3 D
( S' N) B6 ~6 h, \而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)% j" j' P& b3 d( n) [
到这儿,我觉得应该已经没有任何的阻碍了。
; j) Q9 Y% x) ]) L& u可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。
7 n3 z# }5 N) j, f5 s' m$ Rwhatever!
+ W+ I: V( g" m- c" V2 H我觉得这些已经不应该是该去研究的问题了。; ?# Z3 w7 f; e8 `
因为没有哪个网站和你有这么大的恨。1 m! q: l- Y# B2 j) Y
解决方案:
7 R$ H- x# {, G( l X! R全局-上传设置-论坛附件-帖子中显示图片附件-否
8 G7 ?2 a- j" K4 e% b/ E6 t这样,就搞定了。
, G( g* q1 d- v- T F& [ |