漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。
! h4 [" n8 `8 \8 y" h, b( I如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:! Z' ^/ C g- ?
. ?4 [% c& f4 @, |! F J3 N4 M. \1; Y) x/ T( {0 W, q. s0 Q# Z
<img src=javascript/alert(1);>.png
5 I7 ` B3 o5 ]5 A5 R(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)
l; k t D4 i9 K/ F) l如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。% t) f3 Z8 |- I) ^4 j* ?
所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。- a3 N1 V) D, c/ e
修改xxx.png为
& s0 V. k7 `9 K) C, n6 j/ } $ k: ^7 v) F. r$ v3 [) K$ P+ B, s
1
+ ~2 _; a- A7 @1 O<img src=javascript:alert(1);>.png
( J' W3 l! Q) {- }提交。
; E9 l0 T9 |3 N1 w( wxss会被触发在第二个页面,也就是点击图片放大之后触发。
9 ^* z" t/ ^$ b/ Z) v0 _6 |pwned!
: [4 z* \, x2 J" x6 Z : N( B/ s4 l% @; |
字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)
0 Q1 S* }* a, e" C: {因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。) Y3 i) O# H" y
虽然现在XSS很火,但我个人真的不是很喜欢这个东西。, Z; I# f! o8 C3 V1 Y. _' B
但基友居然都说不行就只好自己硬着头皮再试试了。
+ j7 \. p+ k" \在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。
3 Y* H6 Y5 }( {- y而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..! W/ f: M7 q1 ~. f( X: G+ x
这貌似就是传说中的mission impossible了。
% J8 L) F5 Z1 g1 H# N) D. D& K& W我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:
: e `9 t, e' {1& i# N/ w+ @% c" Z4 e z
<img src=x onerror=alert(document.cookie)>.png
- B4 N* k4 |* p1 d' n' u s原来的文件名被这个描述给覆盖掉了。" O; a: z" z# ^. \+ Q, r7 R; Q
pwned!; p0 k2 P6 r! j7 ^7 m" K# b5 I
6 w( N3 }" M; f# d1 b1 `
而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)$ w3 V6 P: t& Q# }, Q
到这儿,我觉得应该已经没有任何的阻碍了。. k g# x; R8 ]& Y
可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。
) ]4 a/ y& q y. B; B0 X" x1 J' dwhatever!
4 w* u* p/ S% O d( g# t我觉得这些已经不应该是该去研究的问题了。
- D# T" U) t( c2 G T因为没有哪个网站和你有这么大的恨。- [7 {1 y" C! O9 A- @
解决方案:
* D. L* W) c% P6 ~: d; I全局-上传设置-论坛附件-帖子中显示图片附件-否6 b$ [3 \6 x9 Q( \$ {6 v/ O7 C% p
这样,就搞定了。- d4 b: z# ?+ ~+ C1 v: ?
|