漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。' A& X* v- o3 @
如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:* t5 A g( f: P& B- y( d8 v$ w- o
/ e5 _- M8 k0 s- D) C1
6 Q+ x( O4 q) F0 K% ~<img src=javascript/alert(1);>.png
+ l* R+ ~; E! L7 Y(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)
$ T7 G( E, P! r7 W2 }& u% n" \如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。% w( l! g) G) c3 ]5 O
所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。
; {2 a/ r1 T/ t h4 K, J- P1 Y修改xxx.png为9 _- J" t* U; d; ]/ G0 _# G
, \0 ]5 ]. M J) a1
; ~1 X$ Q: o: ]- Q+ R$ n6 e0 ^<img src=javascript:alert(1);>.png6 c2 Z+ ^& z+ w
提交。
, b1 W- s6 ~" n# {xss会被触发在第二个页面,也就是点击图片放大之后触发。
7 ?; m4 ]+ }" _2 l: R, I' Q, ?pwned!
$ H, j2 y& W% \5 _$ q# \ U6 i4 r # ]& o+ c2 V( f2 u7 m9 Q
字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)
, ?6 N$ K3 g |, }8 ^4 a因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。- X D" {/ N, Q V: f! [
虽然现在XSS很火,但我个人真的不是很喜欢这个东西。1 F1 U$ q. m2 Z# A3 x; Q8 K
但基友居然都说不行就只好自己硬着头皮再试试了。
' T. n" n2 s) E) U3 P在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。6 M, R$ h1 m3 E8 I% m, P4 S; W: Z- Q; K
而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..
$ v J j# L, R, E. a8 K9 Z这貌似就是传说中的mission impossible了。
6 l; a( Q! Z, }$ V我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:) O) Z/ |' [, U6 W6 d+ m/ s
1
$ |6 t3 Q( |9 `7 o. m8 v; i' ^<img src=x onerror=alert(document.cookie)>.png
) `2 i5 w- P. \8 z" G' ]1 m$ \原来的文件名被这个描述给覆盖掉了。+ z% ^( I- ~3 u/ W0 X+ a
pwned!
$ b& v& n+ o9 Q- x( ^5 _) R
+ }" K M9 L/ Q( F/ U/ N而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)
. N. o/ E& c1 _* Q7 C9 U/ q5 v5 X到这儿,我觉得应该已经没有任何的阻碍了。6 P# G% b Y- q' I( S1 L
可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。
" i7 T. M5 B6 o$ @$ k$ w8 z7 m5 u) Fwhatever!
+ {" V& X( x$ N% \我觉得这些已经不应该是该去研究的问题了。
9 u9 ^: ]6 Q2 Z- C2 \7 Y因为没有哪个网站和你有这么大的恨。: k* ^, Y; `- g3 s D" e* ]0 Y O
解决方案:$ d9 [8 f3 s' G& N" Y
全局-上传设置-论坛附件-帖子中显示图片附件-否
; r1 I6 K0 v7 n; n- G这样,就搞定了。
7 [' {/ r3 M* C) W |