漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。8 w. p5 m, o$ e/ k. x3 }
如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:4 ^3 H! N& ~. Q% s. `- z& I5 t" w
% L6 y4 Z+ E/ T2 l( I5 o1 a1 N1% J/ p8 }- x# x2 ]% ~
<img src=javascript/alert(1);>.png
* x; [4 y6 y; f, l; x(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)
9 L4 P# t4 O0 k' t, N如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。
: \4 W0 c7 u7 v; n所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。
; ?, P1 f+ E2 a% C7 b9 U修改xxx.png为/ f3 S. v j/ |' H- z6 j3 H" ]/ r
4 [3 J+ s6 I( z+ a
1
2 L! l+ ?' u$ \+ K$ A<img src=javascript:alert(1);>.png, z& C( N& Z' @0 u4 {8 Q
提交。
x4 H& _5 B' O5 g8 l4 p, Lxss会被触发在第二个页面,也就是点击图片放大之后触发。
* w% {1 O/ _. g. F) e- G) ypwned!" ^9 j) p; y+ [! R) ]$ C
" H% ~6 m6 d# ~; A7 a字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)
1 D/ P- ], m3 e; a0 ~: ?! f# c因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。6 W' o5 r6 j% e
虽然现在XSS很火,但我个人真的不是很喜欢这个东西。
- ~, i& |+ H3 S; y4 [7 a但基友居然都说不行就只好自己硬着头皮再试试了。
/ z" v W) l) _- L在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。3 S# |& v u$ Q
而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..2 `6 o7 R1 Q" D- f8 I0 L: A
这貌似就是传说中的mission impossible了。
( @+ I" E& @7 c7 ~: B我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:
# l/ b% D- X, h1
( T) z% s6 Q" ^: ~2 C0 w$ w<img src=x onerror=alert(document.cookie)>.png
. M! F3 s/ T! c& u$ u* c$ U+ \原来的文件名被这个描述给覆盖掉了。9 ]0 [" q& W6 y; m2 _
pwned!
; P% j9 S6 X& x) v3 j
g/ |( A' H5 @) w6 X9 l% ^而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)
! v2 S# M9 e+ s# ^, a, ]4 A+ I到这儿,我觉得应该已经没有任何的阻碍了。! }3 i; J( \; v3 F
可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。
/ W* H# x8 Q& C6 Y% H, qwhatever!4 o" ?& q+ k/ Z! _+ O% G; R
我觉得这些已经不应该是该去研究的问题了。
& `3 Q2 h, E. Q$ f因为没有哪个网站和你有这么大的恨。; u" f$ k# u) V" u! b. S# f! x1 d
解决方案:
B' W. T9 D. T# S全局-上传设置-论坛附件-帖子中显示图片附件-否
/ e E2 t: r0 Q: [- ^/ {这样,就搞定了。7 a8 S8 R1 g! }- ]4 O
|