漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。/ x( x6 ]+ Y6 P& c: E& K
如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:
0 H( ~1 F. i9 M: c; S `/ I , w( J* }: i" D
1& H1 H; X, ~: o' w5 S( v {: m
<img src=javascript/alert(1);>.png7 O, M0 I! O( h6 Y* E" o
(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)
% |% Q4 D$ B4 w ~" f" ] T如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。
( G4 C% W$ P3 O所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。
' I3 {& N; t9 I8 \修改xxx.png为$ _6 X$ F1 g3 M# ^9 J2 V
3 v+ H1 i1 n/ l, Y# N* d: \1" |4 s- W% n: F% L* f
<img src=javascript:alert(1);>.png S/ i7 P- \! ~9 \# y6 J
提交。
7 B, r: h. w' D0 {1 T& y$ Hxss会被触发在第二个页面,也就是点击图片放大之后触发。# n2 A0 B! S! e# ~' K& i# n* T' W! [
pwned!! c& b7 o& }7 O4 u
2 j7 {+ ~/ n5 Y0 O+ p9 E$ G0 y
字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)3 d' X0 e2 G' c5 A
因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。4 ^5 q# q. \, P& ]
虽然现在XSS很火,但我个人真的不是很喜欢这个东西。+ a4 _5 ^; K5 ~& G- M! ~
但基友居然都说不行就只好自己硬着头皮再试试了。
1 _2 V& G) U/ P5 t# n% r在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。$ i% b# p$ N( j$ H% P7 G8 ~
而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..
0 I8 t* [0 [' h: d3 T这貌似就是传说中的mission impossible了。
7 s" a4 k( h' V) F8 W* P' L5 _: ~我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样: [5 K6 {( Q; X/ N; Y% h2 u$ D2 i
1
, ?) m8 k) W# [! [3 D<img src=x onerror=alert(document.cookie)>.png. ]" X5 D: \) o: r8 R9 l! u2 |
原来的文件名被这个描述给覆盖掉了。+ j: {: f {- a( |# z2 r# w
pwned!
1 ~; w" E3 i* {2 u% \" n3 }
; [; X& K7 g& }4 U7 t) o而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)0 J: {! X: B' |
到这儿,我觉得应该已经没有任何的阻碍了。3 u- W9 j0 \4 o. E; Z
可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。
( t6 u2 M$ a$ V2 V: p: ?whatever!6 K/ C5 ?, S. U; e! j: O
我觉得这些已经不应该是该去研究的问题了。
. z' B5 e. M" m q% k: Y" X2 P因为没有哪个网站和你有这么大的恨。
7 f& B8 y& @; {% j6 j& K解决方案:
5 _8 d7 S# Y) R5 ]全局-上传设置-论坛附件-帖子中显示图片附件-否 U1 P+ t, J, `+ n
这样,就搞定了。
( U( g1 [ Q' A, X |