漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。3 e5 w! o& g) \* }4 V
如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:. F' f$ Z/ @% ^. S+ \6 g. Q0 c! Q9 `
R! y* P% [4 w1 ]1
; [6 Z! I. i0 c4 j% c. X. m<img src=javascript/alert(1);>.png
- [2 {* a' z6 B) i(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)& H- p: a0 B5 r+ ]
如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。
- I8 S6 {; u* N# `' H, |, q2 L所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。
" |- {# l! D" ]) Y: n$ p修改xxx.png为
4 B- _. h- f/ s! f3 a0 ^
( B( ?, p: J% z' l& H( E" C1
6 A$ ~8 P; `9 A" K) C [1 S4 S<img src=javascript:alert(1);>.png7 D7 P7 j0 X9 E$ l# m) f
提交。
! h6 b9 o; ]5 K" R, J! B; U3 [xss会被触发在第二个页面,也就是点击图片放大之后触发。
; \' v6 I* m$ Z8 @ M" S" upwned!
& A( Z- x( X/ \! q" B/ _; ]
0 Q9 ]$ c6 }* F+ q1 f# m5 W字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)! f" z" E! L- l1 z& C; f
因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。
( w: Z* W% A& a8 Q4 |虽然现在XSS很火,但我个人真的不是很喜欢这个东西。3 l0 O3 k& L4 `4 ^) ?0 m
但基友居然都说不行就只好自己硬着头皮再试试了。4 J+ f6 f, w/ F3 X' h" f# \
在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。
9 F+ O/ d [! y4 R, r: ]7 o, b而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..; {1 a: A$ T, }
这貌似就是传说中的mission impossible了。) B$ n+ u: K X- [! \ K
我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:# G y9 @' w" K% B; I2 }0 }
17 ]* a, G$ S: D8 x" q. I8 r% X& q
<img src=x onerror=alert(document.cookie)>.png
" w6 u: ]. E! S# ?( t) S原来的文件名被这个描述给覆盖掉了。
4 e, T5 g) I) Apwned!& m! {3 L- t, X4 @
. i$ _$ h% y/ Y: c9 Q
而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)( H% |! a |7 d! ]6 ?- A* Y
到这儿,我觉得应该已经没有任何的阻碍了。
" W* [5 q7 H5 Q: n可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。
7 c, \' [! d; r& iwhatever!
5 j! J. Y2 n3 o/ U我觉得这些已经不应该是该去研究的问题了。
' n ?3 s3 }& j) l% `! o$ }因为没有哪个网站和你有这么大的恨。0 j# f: _# @: D: I* z
解决方案:
% ~9 ?& s7 c2 n( P全局-上传设置-论坛附件-帖子中显示图片附件-否% c% Y5 M ]$ W: c9 b5 M; f
这样,就搞定了。4 G9 o3 H$ l! z0 O5 D% {
|