漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。/ E! j/ ?" B- c7 N! ~* _% _! K$ _! @
如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:" F5 q! J1 r. q* g7 E4 i0 X
( g; L; q* [( @1/ J8 T2 S4 G5 Q( p3 i9 A6 n5 z
<img src=javascript/alert(1);>.png
# F2 b. {4 d; S(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)
, _: z1 O' |0 I0 c如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。; j. k J3 }( {5 [+ t) n7 j
所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。$ i5 O& c* T6 m5 ]# h$ O6 X
修改xxx.png为5 J2 e: r" [6 X3 s- W
, X6 `' z0 G% a2 D2 K' \) N1* d) O( D$ p# g
<img src=javascript:alert(1);>.png
/ I( @/ f) B2 |$ O; W提交。
( T+ \. x! [3 i. F/ b {8 K0 exss会被触发在第二个页面,也就是点击图片放大之后触发。
' s) E9 a. `8 x4 R( s, e$ V/ tpwned!4 q- M+ _) L# D& c! \0 j# I: d2 h9 K
\7 y& e5 u* T$ s5 v字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)' X3 f! Q$ r) k! I9 B8 U
因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。
. b* }* g3 J; U! Q! [0 Q; T* E9 g虽然现在XSS很火,但我个人真的不是很喜欢这个东西。
/ V6 }- x. R3 b7 D+ j但基友居然都说不行就只好自己硬着头皮再试试了。- C; l5 h& Y! m9 ^ ?! T
在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。/ [- P- o0 U# C) M
而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..
: r+ K: U7 e2 g; t: r1 X% t这貌似就是传说中的mission impossible了。6 I* t7 }) P& w. S! \
我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:
/ j4 o9 k( h- _3 Y2 @1" [( H( E# E% t9 c
<img src=x onerror=alert(document.cookie)>.png- p% [& L& }/ z' L
原来的文件名被这个描述给覆盖掉了。. n/ z( q% a8 N6 h! j# J
pwned!
' }; \2 M2 T6 ?# S: l ' e, z% I+ c+ j/ [) X9 @+ |3 \
而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)
I7 Z' l1 j! a到这儿,我觉得应该已经没有任何的阻碍了。
$ G0 A& f5 i6 o) ?% E( n" {7 O( S9 _可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。$ L7 Q: s1 x: H, R& d3 d' S5 L5 b) D
whatever!
0 D* C' w7 e- U2 r0 {我觉得这些已经不应该是该去研究的问题了。! l: ]; T: C% Y2 |) C! } O# q
因为没有哪个网站和你有这么大的恨。7 N; `3 Q: w5 W3 t! K8 F
解决方案:, _" [+ F) q) C3 W7 Z, i& U& h+ w* D* H
全局-上传设置-论坛附件-帖子中显示图片附件-否 q: m% z% P) w9 m9 w' j3 r/ D' N: n
这样,就搞定了。' Q+ G7 w1 Q7 d( }$ [* G$ c# h
|