漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。; K$ i( w5 _- o+ K3 v. g
如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:# q S/ H1 d* A6 u) V
P9 N. h p% n+ T+ S1 j17 R p; f, a/ C, P7 H
<img src=javascript/alert(1);>.png9 ]+ V2 c: C/ I
(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)3 b% n( J" [- C u, N, {; @% y0 Q
如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。
" ]1 N2 i. \; Q4 V" o所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。9 o6 S. f+ R7 ?, }8 ?
修改xxx.png为
" a& P( Y2 y4 H O. W$ |0 \: k
1- Y7 C) y& x; K# ~* [: \
<img src=javascript:alert(1);>.png% Z5 u2 C" v2 D
提交。
# J0 h& k0 K! _; d K/ w# bxss会被触发在第二个页面,也就是点击图片放大之后触发。
8 }: g& \8 g2 @, K: [. Zpwned!) _. T0 W [1 ~0 M
3 }: m# J% i4 J6 R8 E4 _3 a字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)
" r+ \) z; f# k! v2 P! K因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。, ^5 I" S2 H6 W- m0 r0 W
虽然现在XSS很火,但我个人真的不是很喜欢这个东西。
; ]; t b% g- M5 L |4 E. I但基友居然都说不行就只好自己硬着头皮再试试了。
7 N8 Z, w n4 G. y) u* X在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。
% \; L5 x1 [& e% @: [. Q1 \* L而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..
# t6 [9 d! h0 ]! X% b2 e这貌似就是传说中的mission impossible了。
$ S4 g) P" c' e% z4 v; r我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:$ M% Z1 r) n5 y
19 j. T! M' n7 k& H% H# n' f
<img src=x onerror=alert(document.cookie)>.png
. h; L. W7 m# a7 @原来的文件名被这个描述给覆盖掉了。! _2 D# ^& _# b! F( c" A
pwned!
) r* O; Q* N- X; v! p5 m* W) R
$ L5 o# E3 B( _" n& b7 T& u! p而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)
2 m2 V3 c7 e( a到这儿,我觉得应该已经没有任何的阻碍了。$ `; ^& p. ]- L8 }- h
可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。3 y: r5 G, B9 y4 Z U
whatever!
7 ]: S( M8 ?5 w0 t% |! ]我觉得这些已经不应该是该去研究的问题了。2 R; O, F2 @- ?) C, V7 k
因为没有哪个网站和你有这么大的恨。
7 N, T" x' [" {- S( l8 A解决方案:
* \( k+ ~! \& x全局-上传设置-论坛附件-帖子中显示图片附件-否1 F* J8 {* X7 I+ P, ~4 l) Z
这样,就搞定了。
* l9 O5 N; R$ M) x |