漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。
0 D# O! `6 F+ ]( _+ g如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:2 U$ q' n# d6 |' ]* U
2 o }% X: `+ t& U8 N9 a4 d9 c
1
( b' q9 j/ p) h# o/ a$ L1 q3 i<img src=javascript/alert(1);>.png
0 [. n- B8 S% }& S(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)
$ c' O& _) S& u+ c8 f5 z* h9 F2 H如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。
; E! t" f2 B2 \' g6 Z5 g6 `所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。- B0 F5 I, _" \$ ~
修改xxx.png为
+ o$ v$ L+ w1 D/ A6 u& U0 v
6 g6 q/ U- W' h1 V( j5 |1
! q# J+ o! p; c. X1 A<img src=javascript:alert(1);>.png- }( b: ~7 E9 m5 x
提交。 @! W5 s1 w" H9 k1 D' b' b% l& {
xss会被触发在第二个页面,也就是点击图片放大之后触发。! H# R1 a8 V* g, {/ d& i5 t, V
pwned!( @, S$ @! x0 Z4 a# W( \
$ W5 V7 B f1 W
字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)4 O* j; `, q4 g1 l4 q
因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。
8 L( R) p O7 u; ^4 Y& Z# I虽然现在XSS很火,但我个人真的不是很喜欢这个东西。
- l5 P& y8 A" X0 n- I( U! K1 ]但基友居然都说不行就只好自己硬着头皮再试试了。) E$ K0 A+ x1 r" |# q& P
在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。, P* p+ f# a0 j$ R. d3 g
而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..) W; f% O% F/ X; [# E4 a
这貌似就是传说中的mission impossible了。$ R8 g7 J$ h7 q% ?; V9 }$ _
我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:
0 l9 w8 ~) g; r! O/ ~' E$ m1' I; Q* |/ h1 @' I$ K: b/ ^
<img src=x onerror=alert(document.cookie)>.png+ c0 n5 O u: |9 p2 a. ]7 u
原来的文件名被这个描述给覆盖掉了。: a( j }" Z0 z {* a3 v( v
pwned!) w* I$ [' O) a( S" ]7 k
# L8 ~% e( z1 e0 S6 z T
而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了) K* C. k& q* W* a$ p
到这儿,我觉得应该已经没有任何的阻碍了。; Z7 s v9 A8 g0 e0 v3 u' p
可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。
# W3 F5 k L" d& twhatever!: a6 [7 r3 Z5 [' X0 l& x" G( A9 a
我觉得这些已经不应该是该去研究的问题了。! m- [/ k: u9 P/ I
因为没有哪个网站和你有这么大的恨。1 m( k C6 E4 A3 O2 ~: h* y
解决方案:
7 L, l* G: w6 T- Z, o/ V6 W1 D全局-上传设置-论坛附件-帖子中显示图片附件-否. U& {: W: p. z: v T$ ^
这样,就搞定了。$ d; v/ P) ^7 T$ C! Q9 J' Y1 s
|