资讯·论坛·笑话大全·QQ表情·设为首页
发新话题
打印

[网络安全] 小心字符集导致浏览器软件跨站脚本攻击

小心字符集导致浏览器软件跨站脚本攻击

在一般的web程序里,显示数据给浏览器的时候都会指定一个字符集,在国内平时我们用到的字符集有utf-8,GBK,gb2312等等,字符集指示了浏览器该如何对待返回的数据。其中gb2312和GBK字符集使用得非常广泛,但是经证明,IE在处理这些宽字符集的时候存在问题,导致可能程序的一些安全规则被Bypass掉,引发严重的跨站脚本安全漏洞。在IE里,如果它遇到一个字符,它是指定字符集里的第一位的时候,就会认为其后续字符和当前字符构成一个合法的字符,这样它在解析包括html标签,处理javascript,Css时都会做如此考虑,测试版本为ie6和ie7。 www.520diannao.com& K% t7 t' \) [5 X4 P
我爱电脑技术论坛, ~/ G: a# j3 w; i# T& j+ S  ?
1 Bypass某些js的检查规则 打造最好的电脑自学交流论坛; w! N0 ^' I5 G  j2 W# f9 I( L7 T8 c

  P: E* `9 V  ^9 Fwww.520diannao.com" `; ~3 |2 g6 F0 ~' i
HTML]
& w1 b, C" R& I, P. x1 W电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站[HEAD]- I  ?2 J! P5 Y5 b
[TITLE]80sec test[/TITLE]打造最好的电脑自学交流论坛# _: b" {9 s6 o4 |: I+ W; G
[meta http-equiv="Content-Type" content="text/html; charset=gb2312" /]打造最好的电脑自学交流论坛* g  p% @! x3 J# Q0 e
[/HEAD]我爱电脑技术社区--打造最好的电脑技术自学交流平台; p# n! j! G) O1 K- ?, ?8 t# T8 ?$ g
[BODY]电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 M' l* W' h- y4 o9 H/ v
[script]电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站5 P8 a4 Z* u6 i
window.onerror=function(){
3 A1 u" \7 {5 G我爱电脑技术社区--打造最好的电脑技术自学交流平台alert('Vul');
" {6 `4 x) o2 a. Dwww.520diannao.comreturn true;www.520diannao.com9 c* x! ~; D' g$ t
}
5 Z3 k: r. e& S8 }. v0 i( h打造最好的电脑自学交流论坛[/script]我爱电脑技术论坛; C. ]( Q; |" T8 c8 Z; }2 d
[script]x='[?php echo chr(0xC1);?]';y='[User_IN_PUT]‘;[/script]
; V6 G8 N- B# b" B; _3 L我爱电脑技术论坛[/BODY]
6 y3 Z$ v1 T) d' i+ I# V6 z% W我爱电脑技术论坛[/HTML]
- ~; G, @0 k5 i$ G电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
( z; ~3 V: Y: @$ d- {- H+ P我爱电脑技术社区--打造最好的电脑技术自学交流平台www.520diannao.com) _: b4 O3 O6 @. N/ }* ^3 [

$ C8 b( F6 B+ v( ^  K$ U* o
9 k: [5 }& e! q  R+ S/ {www.520diannao.com这里即使是过滤了〈>’\等字符一样可以利用非法字符集序列来实现\的作用,因为它会把原来存在的’给结合掉,然后前面的’找不到闭合,后面[User_IN_PUT]就可以用来执行js代码了。 www.520diannao.com. e$ @) }$ M) V9 P/ b7 a' N
! F5 T+ U' q* f
2 Bypass某些属性的检查规则
- H/ v. w4 E9 E8 X3 v我爱电脑技术社区--打造最好的电脑技术自学交流平台打造最好的电脑自学交流论坛6 ]4 R/ r/ x& y5 E) @+ y# X7 @, L1 N
为了避免直接使用html导致出现漏洞,一些论坛和程序使用了UBB标签,但是在gbk等多字节编码下,一样容易出现问题,以最容易出现问题的一个UBB标签为例子: 我爱电脑技术社区--打造最好的电脑技术自学交流平台" ~( d# N$ l7 I  ]4 W( V/ L' H% L
www.520diannao.com" k1 Q/ h2 y; R* h) p5 {- k' m+ l
! y% z4 L# m) ^
color=xyz[?php echo chr(0xC1);?]][color=abc onmouseover=alert; P; w3 z5 ]+ y: h  I; N5 e' Y
(/xss/) s=[?php echo chr(0xC1);?]]exploited
; o0 Q- j  R" q9 v! y我爱电脑技术论坛 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站7 }* D& b- ]- R. c
www.520diannao.com8 v) y6 N3 O- C- B# q, n. Z
我爱电脑技术社区--打造最好的电脑技术自学交流平台: V; j0 {6 R. a9 W
) }& J/ R( d0 E" H" o
0xC1是一个gb2312的第一个字节,上面结果将会转化为:
  \0 x+ Z9 N& n( j) b6 awww.520diannao.com
# k" n* }# `; W. k7 l5 K. x我爱电脑技术社区--打造最好的电脑技术自学交流平台电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站+ u1 G: I- Z! r
font color="xyz?][font color="abc onmouseover=alert(/xss/) s=?]
, h3 T6 }; F/ c3 s% Eexploited打造最好的电脑自学交流论坛' @* y2 ^7 P9 F. w0 j! t+ h6 {9 H7 |
其中的$ n: i/ X. j2 R4 F9 M
alert(/xss/)我爱电脑技术论坛' U* }' }3 v5 d: J! p$ T: Z

2 |' U$ k9 A* W& E- Q: E  Zwww.520diannao.comwww.520diannao.com( ^; B7 x1 v' e! ]. n# K% F
我爱电脑技术论坛- |, K1 @/ l2 z5 C0 h9 t
我爱电脑技术论坛6 n3 P4 x% b' m9 n+ D) K) C) J
将会做一个事件执行,所以即使UBB标签也变得不安全,能饶过”的保护。许多论坛都没有注意这点,phpwind,动网等论坛就容易受到这种攻击。而Discuz通过在转换结果之后附加一个空格,修补了这一安全问题。这里使用到ubb标签其实有一个很有意思的tips在里面,因为有的数据库会抛弃与指定字符集不匹配的字符,所以必须借助后面的]等字符来形成一个有效的汉字才能存储到数据库里,当然像ACCESS这种就不会有问题了,另外一些语言在处理字符串的时候会强制字符串的字符集类型,不合法的字符会导致转码的失败或者遭到抛弃,所以也不能利用这种类型的攻击。
* e. Q8 y1 M$ v* c1 a9 e( l6 D我爱电脑技术论坛
. I+ Z7 ~- h% s我爱电脑技术社区--打造最好的电脑技术自学交流平台3 几个小例子
4 h) \  O9 a+ f* N: M/ j* O% u打造最好的电脑自学交流论坛
3 i& }% G! U" [4 N" G5 J; e电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站Phpwind论坛charset跨站脚本漏洞
8 N0 u+ \$ K9 d4 R7 T9 h  f我爱电脑技术论坛' h8 T' S7 ^% _# x9 h: R& y& T' g

4 z2 {$ U$ d: d电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站[email=xxxx羃[/email][email=xxxx onmouseover=alert() s=羃]Fuck Me[/email]
  E  p3 V$ N5 t1 ]www.520diannao.comxxxxx
7 w  u+ c. B: Q: Q; d* Y1 K; @www.520diannao.com
" C( e9 q/ D' _8 G: zwww.520diannao.com' n3 T  g8 S+ I% y

; k  s9 I/ ?& q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站3 \0 u" c5 _3 x. E5 s9 c! A' p4 t
羃是一个特殊的十六进制编码和后面的]结合出来的字符,第一个种方法可以直接复制的:)
4 j1 F" n) n: b% T  ~) E3 L2 D电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站  Y7 Q4 B9 ]* a+ e7 e. |
0xc1表示一个十六进制的字符编码 打造最好的电脑自学交流论坛/ {/ O9 h4 M5 q
打造最好的电脑自学交流论坛* r/ I9 g' B% H, O
同样在dvbbs论坛也很容易产生一个xss代码如下 我爱电脑技术社区--打造最好的电脑技术自学交流平台, P8 y. r$ Q( A4 f
3 @$ S  _8 `: M- X1 ~6 }1 J+ F- w

7 i( }- `9 L. y" j) u+ L0 F/ Q我爱电脑技术论坛xxxxxxxxxxx电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站; Y) i  w; k% Z3 H3 _2 c6 ?7 r
我爱电脑技术社区--打造最好的电脑技术自学交流平台9 F# Z, _9 o6 _' D8 V

4 _3 p6 \, l" u7 Y) F* j: N我爱电脑技术论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站; k9 H6 m1 _7 x8 B/ R. A! m
我爱电脑技术论坛8 M" P6 c% W' Y+ B/ U8 W
均在新版和老版测试通过。
: w8 C0 F; r/ l2 o; g6 i我爱电脑技术社区--打造最好的电脑技术自学交流平台电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站0 H3 T- ?4 {  t& Y6 |. v  S" @: @( ?
4 关于修复 www.520diannao.com+ J+ B7 ~5 [9 ^, v* S# o0 }+ @
打造最好的电脑自学交流论坛3 k- e* P+ @7 D7 V, }; l6 {
对于程序设计者,由于UTF-8字符集的可靠性,不存在这个安全漏洞,所以大家在设计站点的时候可以考虑使用UTF-8字符集。
  [8 T+ g0 Q$ Z, |# B0 O电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
9 H" T# c( ^! ~. T0 Q3 q5 n2 n/ f4 ~3 p我爱电脑技术论坛对于广大开发者,可以牢记最小输入等于最大安全的原则,在匹配正则的时候限制输入的字符的范围,尽量匹配ascii字符,如果必须使用中文,可以考虑类似于discuz的在中文后面添加空格修复该问题。 9 `+ Z0 J" g. X: Y+ n

4 d1 K3 p3 [4 S4 m# W1 }对于广大用户,这个漏洞由于浏览器处理页面字符的不同,可以考虑使用如Firefox浏览器,可以避免一部分这样的问题。

TOP

发新话题