漏洞发生在插附件的地方。说到插附件各位看官也应该都想到了肯定是文件名。因为文件名是按照本地上传的文件名来显示的。6 ]- } @# I% K; O, C& w* Q
如果你的操作系统是linux你可以直接修改一个图片文件的文件名,像这样:" `1 W' D$ |: Z# u9 C
6 F+ @3 X0 P3 A# U! ^) c1 s. Z1
6 f: Z0 p+ b9 t<img src=javascript/alert(1);>.png% ?3 y7 E& \4 t2 ^) w1 e
(这里的/在linux下会被转换成: 这个payload只有在IE6下才能弹起来,我知道你们都是高手 可以根据需要 插点高级的payload)5 X& A2 G5 p( ~( v! _4 [2 L
如果你的操作系统是windows,你可以上你喜欢的抓包工具(我个人喜欢用Tamper data)。第一次上传应该是抓不到文件名的,至少我没有抓到。7 C# L8 V% T4 z% E& V9 h
所以你需要在上传,插入,发帖完成之后重新编辑你的帖子来更新你的图片,这个时候抓包是可以抓到这个可爱的filename的。
' N, L5 s4 _) N1 o修改xxx.png为
. L/ B* q) g A9 L* {, i% |
. ~; ]; B9 N7 k: Z. D* n/ q7 Y1& M" c9 k; M3 ]8 g' E& w$ s
<img src=javascript:alert(1);>.png8 R0 w9 s: j3 y2 w7 K
提交。2 W. Z! Z+ D+ N+ X" H- ]
xss会被触发在第二个页面,也就是点击图片放大之后触发。
% H' _0 B$ E$ \, \5 i `pwned!* D4 _, W/ W3 \3 x; @, J
+ p' |4 s) x( C" T: \字符长度限制在80左右,过滤了” ’ / etc..(斜杠的问题我会在后面继续叙述)9 K0 G: Z& z' x. m" W7 ~
因为不懂XSS,就拿给自己玩的好的几位基友去构造payload都说斜杠过滤了,字符限制云云 基本上都失败了。
& s' F' A+ D3 [- B7 u+ i虽然现在XSS很火,但我个人真的不是很喜欢这个东西。
0 C8 y' I% C# D ?8 U' k4 T但基友居然都说不行就只好自己硬着头皮再试试了。
& F8 K4 T6 Z. q! e$ l$ ~在尝试中发现反斜杠也被过滤时,我才发现这不是一个xss filter的问题。8 {1 l4 \; @7 t0 R
而是上传过程中,我们可爱的/和反斜杠在这里应该起到分割filename和filepath的作用 所以被杀也是应该的。 Orz..8 u* o+ J, N; u- j' r J3 i& I
这貌似就是传说中的mission impossible了。+ S3 A3 U* T% P: x3 c9 A% R
我们需要解决这个斜杠的问题。经过各种尝试最后迂回到了附件描述的地方。很没有把握地插了一个XSS payload.像这样:) y, [% B! k* {# @
1
O6 }4 h0 F7 J4 i( R) _<img src=x onerror=alert(document.cookie)>.png
0 o7 w1 E c+ s" y9 i; ]/ r( G原来的文件名被这个描述给覆盖掉了。8 Z0 J% H2 }' T+ E9 L( b% `- V/ L" `3 Y
pwned!
; W8 i# a1 A: m8 C. i7 \& j" r1 O
: N. d& r/ p1 [4 j' q而且已经可以带上我们的斜杠了(因为它已经不再是前面的那种情况了)3 x% Y" m1 Y( ^7 j" E6 E
到这儿,我觉得应该已经没有任何的阻碍了。) f) Z, B2 L: s7 s+ I% {
可能经过测试,会有人说payload会在主页面测漏,有HTTPonly cookie,属于被动触发云云。# ~7 k3 c6 l9 s) u
whatever!
; F. U7 G* H' P Q: f9 l P* |我觉得这些已经不应该是该去研究的问题了。( P2 [3 _! m0 ~5 c. K
因为没有哪个网站和你有这么大的恨。
3 |2 r5 ~3 @8 t$ d解决方案:
% ^7 w8 N) r, l4 D0 I全局-上传设置-论坛附件-帖子中显示图片附件-否
3 p/ d$ E+ O& f" r& q& g5 K这样,就搞定了。' }+ W, m9 G# x2 v7 L
|