漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。2 \) T \! c, R2 V) s7 @" l( e0 e
如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:8 K; e+ i, P. D) z8 V
3 [8 x' ~1 R; W c$ X/ V' B7 @5 s
1
) r! w1 R$ {. f1 ]9 B<img src=javascript/alert(1);>.png
; I9 @& X. [2 |/ U, h% E7 o(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)
* |9 B+ f: ?! C& U如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。
9 U+ U5 X+ K" O0 G* \2 v; \( v所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。: k' L2 d r* t" I- G' l
修改xxx.png为, M8 j* N) [7 K- ]6 n
$ `; R0 D" D& m1 f& P1! T n' g8 b/ G' K0 \1 p! W
<img src=javascript:alert(1);>.png$ A4 Q8 k R0 [* v! N# p
提交。9 A1 ]4 y2 N3 G2 s# u
xss会被触发在第二个页面,也就是点击图片放大之后触发。" G& u' p6 t/ J. [! X
pwned!1 \2 D9 c- I$ I: F8 P
5 @% X6 ?3 `9 A+ V# \) S字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述), d4 d) i: M6 y5 L. ~! b& Y R
因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。
) n9 z; ]2 c) I; M' J虽然现在XSS很火,但我个人真的不是很喜欢这个东西。7 \# X( V3 T. M5 [) }; L
但基友居然都说不行就只好自己硬着头皮再试试了。( e: ~* t2 P6 H7 v
在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。
3 j# }; I/ F# J3 d# Y( B2 L1 U而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..
, K V8 F- Q* v% `# M# i这貌似就是传说中的mission impossible了。
- @3 [( W! I8 X/ ~我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:+ k& O! W' x- ~$ S& T& E9 S& t
1
8 \+ @- ?! Q6 S7 U<img src=x onerror=alert(document.cookie)>.png; ^; u5 O$ ^: b
原来的文件名被这个描述给覆盖掉了。/ V! x1 W2 ]# u5 T. f; q8 D- }
pwned!
" q9 E& V; K. I" D: ] p- V4 j O% o
* G# R! q1 F1 i2 C1 i& h) e而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)& _( R5 h/ g8 s- {( r+ w" i
到这儿,我觉得应该已经没有任何的阻碍了。
8 w, j( a7 Y% r; ~* K( u3 ]5 l可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。0 @( t! A/ J* {: `' Z) e
whatever!
2 w. d' x7 ]! d我觉得这些已经不应该是该去研究的问题了。' j+ W9 b6 k+ G% K% | k
因为没有哪个网站和你有这么大的恨。( M7 H$ C# K' Y& t% M9 M
解决方案:
8 m" v% ]5 s- X5 s1 B# P3 ]全局-上传设置-论坛附件-帖子中显示图片附件-否$ K/ c: u N$ {+ `+ i+ |
这样,就搞定了。& N9 R, T; d7 s
|