如果对方的数据直接在Web服务器上而且你知道端口号,有帐号就干脆用SQL Analyzer来直接连接数据库。在它里面可以执行SQL语句。常用的是存储过程master.dbo.xp_cmdshell,这是一个扩展存储过程,它只有一个参数,把参数做为系统命令来装给系统执行。 7 i, O) n& B. a: [
如果是管理用户就有权执行这个存储过程,而且这时可以执行很多操作,如用ipconfig来看ip设置,用net user来看系统用户。不过用net user /add 用户名 密码并不一定成功,有时会返回一个“指定的登录会话不存在”而不能执行,原因我还不清楚。
& U( W5 }8 k4 v8 k7 ~ 如果没有权限也不要紧,MS SQL Server有个漏洞,你可以创建一个临时存储过程来执行,就可以绕过去,如: 2 S9 ~( C- n' @* e
CREATE PROC #cmdshell(@cmdstr varchar(200))
$ g! X( U. V) }$ v2 J9 e AS 3 x" s- I5 a: q l; n0 X
EXEC master.dbo.xp_cmdshell @cmdshell 7 D! D+ H/ Z: X# N
当然这时是没有权限执行net user /add等的,不过可以查看,可以创建文件。 5 ~4 I! e9 S Z6 r: }, V' @; W2 a
反复用echo创建一个FTP脚本,把木马传到一个FTP站点上,然后用存储过程调用ftp来利用脚本来下载并安装,然后......呵呵:)
+ o* y7 g( C3 l3 G+ u( { 如果数据库没有装在Web服务器上所以没有找到或改了端口号而一时找不到还是有办法的。 : ~, D( L) u2 j( Q
如果数据库服务器直接从Internet上无法访问,你可以利用程序里的漏洞来删除、修改数据或加入javascript语句到数据库,通常他们显示本来应该自己人录入的数据时不去过滤,所以可以用javascript把它转到其他站点上或做些什么。 6 t, N/ m% } Q
如果只是改了端口号就要看程序里数据库用户的权限了,如果是管理用户,可以用’ exec master.dbo.xp_cmshell ’net user /add aaa bbb来创建一个操作系统用户,然后再用’ exec master.dbo.xp_cmdshell ’net localgroup /add administrators aaa来把它升级为超级用户。
5 |! a3 i M0 Y6 j/ A) | 如果这台服务器的NetBIOS绑定了TCP/IP,而且C$、D$等管理共享存在,呵呵,恭喜了,你在DOS命令下用net use Z: \ip address$ "bbb" /user:"aaa"就可以把对方的整个C盘映射为你本地的一个网络驱对器Z:了。
$ m& R6 r: F+ z) @ 6。数据库里如何留后门。 ! h4 E) k! x! B5 w5 M. S. K/ n
创建用户的sp_addlogin、权限分配的sp_addsrvrolemember是用一条语句来判断用户是否有权限执行,也就是说用户都可以执行它,它再来判断用户是否有权执行。
W( _1 K( m# b& {3 x- w- | 当你攻入一个数据库时可以用它的Enterprise Manager来连上去修改这些存储过程,因为这些存储过程都没有加密。 " `- _" G. _% b& j x3 Y5 e! j
可以在判断的地方加个条件,当这个条件满足时就不直接执行下去而不管是什么权限的用户调用它。 0 F3 M3 i; ]: D( a3 C# }( W' b
不过改完要注意,这时它的Type成了User,要想改回可以到sysobjects表中把name为sp_addlogin的一条删除,然后再把没有改过的相同版本的MS SQL Server的同一条记录拷贝进去就可以了。 6 V$ N; K% b! u( I _
当然不要忘了这些默认是不能手工修改的,要修改得先把掉SQL Server的参数,改完不要忘了再改回来啊:) 这时只要网站的程序有问题,不管程序中的用户权限如何,你都可以随时创建SQL Server的管理用户。
, Z5 }; {1 Y* Z) h 7。数据库扫描工具。 ; z y* f# S# W$ Z6 {6 r" j( h$ Z
ISS DATABASE Scanner 浅谈数据库的攻击(荐)
/ q5 X4 ^6 |# z/ q0 x( T 1。突破script的限制。 ' ~. Q* f8 x2 \' F9 r) ~
例如,某网页上有一文本框,允许你输入用户名称,但是它限制你只能输入4个字符。许多程序都是在客户端限制,然后用msgbox弹出错误提示。如果你攻击时需要突破此限制,只需要在本地做一个一样的主页,只是取消了限制,通常是去掉VBscript或IavaScript的限制程序,就可以成功突破。
3 S! p. i. u! T 如果是javascript做的,干脆临时把浏览器的脚本支持关掉。如果是 / ]" r/ W. M- x, L/ q6 A
有经验的程序员常常在程序后台再做一遍检验,如果有错误就用response.write或类似的语句输出错误。
2 i; D, s7 _# j. m: D# q) ^; K 2。对SQL的突破 8 }- v7 T& k, V0 A# x
例如某网页需要你输入用户名称和口令,这样就有两个文本框等待你的输入,现在我们假设有一用户adam,我们不知道他的口令,却想以他的身份登陆。
' t9 V) `1 J. d3 Y 正常情况下,我们在第一个文本框输入adam,第二个文本框输入1234之类的密码,如果密码正确就可以进入,否则报错。
7 w# R" Y3 _2 |3 i9 C 程序中的查询语句可能是: + V2 N, m/ s+ A) B W
sql="select * from user where username=’"&text1.value&"’ and passwd= ’"&text2.value&"’" + v3 ~5 L: k3 y) ^6 G/ v; D, ]5 t
执行时候就是
- q- b# m: ~; Z1 M select * from user where username=’adam’ and passwd=’1234’ |