漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。
' g$ ~4 I# j' Y) e0 l* o5 z e如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:- C, n6 v0 q" l1 @0 T
( ^+ |& j+ ^+ f8 M' I, ~' M: L( i
1& X1 S& a1 ~/ n
<img src=javascript/alert(1);>.png* {( N/ {. z) q5 Q$ d
(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)5 F) c1 {) T8 S" Q% R! [/ ~
如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。6 Q3 h6 B. H5 k9 ]) F
所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。
. Y7 @ u k0 B* _1 C+ p修改xxx.png为4 f, n" Q# G" `% m$ L3 e$ n* X" e
6 w/ n- \3 F7 j8 P5 n
1/ d5 m X& d& A7 m% d
<img src=javascript:alert(1);>.png# O* H' U5 R1 ^* W$ e% @
提交。
$ M; t* N4 V7 D! Wxss会被触发在第二个页面,也就是点击图片放大之后触发。
a7 i! @+ o8 i) B' i' xpwned!
l( j) W$ O1 g: `$ a) G- G
5 {& Z& _5 W+ {4 t: B% m L* T$ B字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)
, |" U) b+ _; v4 N3 r _, ?: p因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。' }1 B7 S6 i3 c: Y1 L8 t/ P* p+ b
虽然现在XSS很火,但我个人真的不是很喜欢这个东西。! y5 N) P9 M1 I0 V/ K( X1 S
但基友居然都说不行就只好自己硬着头皮再试试了。
; n# f! ]0 D7 s( X. H% I! w( o- {在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。
: |2 g$ M+ m5 q& R而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..
: d' R3 M @ d1 G8 j这貌似就是传说中的mission impossible了。7 t; Z0 f% Q3 q# e4 W
我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样: P3 N; c# M$ d( b( l) e
1
- c9 x2 s, R4 k0 o& M6 D<img src=x onerror=alert(document.cookie)>.png) @& i; F- m( I& o: i) y* A
原来的文件名被这个描述给覆盖掉了。* x( ]* L4 {* |% g2 R: F
pwned!
7 q, t1 a! Y% p$ l! P- g ; F! E, }2 k) C
而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了). v- M) H# i* ?6 g( G- V
到这儿,我觉得应该已经没有任何的阻碍了。8 F/ L: y6 y! j5 l/ v
可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。# a' Z5 \- c, k* o+ S9 ?1 o
whatever!
9 }+ v4 n- g' x1 j5 I1 w: _ n我觉得这些已经不应该是该去研究的问题了。4 Z4 x; A* s+ W$ b& u4 `
因为没有哪个网站和你有这么大的恨。" P8 b2 U' |9 I) t% ]& C! }
解决方案:( S( u E- l3 M6 G
全局-上传设置-论坛附件-帖子中显示图片附件-否3 K& [. ^! O0 V% z! M' _* R( i
这样,就搞定了。- J% A4 V9 e! H' M$ f1 a
|