漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。4 a( H/ N- z5 z/ y4 P7 x& b* Q
如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:
, s" j. W( W; o5 O! F 0 w- H' E9 g' g9 M1 ?: ~9 I/ B: }
1
+ Y: \" Z2 K9 t<img src=javascript/alert(1);>.png9 v* ?. L4 C0 w8 h- R
(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)$ i$ m6 N3 _0 }6 H0 y* q2 S- H
如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。$ k" B: G8 x) |- h
所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。* T6 w* k8 I6 c9 S# w# j
修改xxx.png为; d9 z5 d$ a5 x+ Z4 |
9 T" T' e' G( m |3 U3 s! Y1( T5 I/ t3 L" l
<img src=javascript:alert(1);>.png* u( }" H) V: `4 }/ O
提交。
1 r4 R+ Z4 ^& n* i" G, ?; @xss会被触发在第二个页面,也就是点击图片放大之后触发。
4 x5 @6 c+ ^7 S d* E! m$ @+ d" ?1 Xpwned!5 m- I1 q1 u$ ~- r# n5 `; p
, P z7 ]5 q5 T
字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)
4 ?4 K: b3 i* u" y- ]6 k因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。
9 W/ n" d3 x+ N虽然现在XSS很火,但我个人真的不是很喜欢这个东西。
1 l1 m$ o( p6 h; U8 V但基友居然都说不行就只好自己硬着头皮再试试了。6 g' d; C* V% ?
在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。. s! _6 ]# U$ M$ t T
而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..
- d7 J& ]0 M0 z5 t- h, h这貌似就是传说中的mission impossible了。
! q& V+ {2 P3 t6 p4 \9 e, \3 E) L我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:
/ o; T8 }; K6 x& \1
, p; P/ k2 C8 r- _8 Q; k2 K<img src=x onerror=alert(document.cookie)>.png
5 c O# i6 j% J原来的文件名被这个描述给覆盖掉了。6 H. @9 N8 b' |4 C& c+ T7 L: U
pwned!: B( |. ^! q ]! N2 l
2 |( r1 B+ d+ b: m6 w0 e0 a而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)
1 W$ d8 X/ V7 ]- K2 H2 x到这儿,我觉得应该已经没有任何的阻碍了。
1 |# l9 k& J0 w6 Y$ J! c可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。
" D# y1 h% w4 E5 `& r; F0 swhatever!8 l' V0 D0 v0 e' s
我觉得这些已经不应该是该去研究的问题了。
/ h' Z; M0 [) U/ d2 S因为没有哪个网站和你有这么大的恨。9 [* g9 W9 k% I
解决方案:4 k8 U: h1 Y2 U0 o" `; N8 C4 j
全局-上传设置-论坛附件-帖子中显示图片附件-否6 [* U6 f* ?0 B+ @
这样,就搞定了。
) H# Q# I8 I0 ?- x |