分享
 
 
 

浅谈数据库的攻击

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1。突破script的限制。

例如,某网页上有一文本框,允许你输入用户名称,但是它限制你只能输入4个字符。许多程序都是在客户端限制,然后用msgbox弹出错误提示。如果你攻击时需要突破此限制,只需要在本地做一个一样的主页,只是取消了限制,通常是去掉VBscript或IavaScript的限制程序,就可以成功突破。

如果是javascript做的,干脆临时把浏览器的脚本支持关掉。如果是

有经验的程序员常常在程序后台再做一遍检验,如果有错误就用response.write或类似的语句输出错误。

2。对SQL的突破

例如某网页需要你输入用户名称和口令,这样就有两个文本框等待你的输入,现在我们假设有一用户adam,我们不知道他的口令,却想以他的身份登陆。

正常情况下,我们在第一个文本框输入adam,第二个文本框输入1234之类的密码,如果密码正确就可以进入,否则报错。

程序中的查询语句可能是:

sql="select * from user where username='"&text1.value&"' and passwd= '"&text2.value&"'"

执行时候就是

select * from user where username='adam' and passwd='1234'

好了,

如果我们在text2里输入的不是1234,而是1234'"&"'or 1=1

我们的sql语句就成了,

select * from user where username='adam' and passwd='1234' or 1=1

我们就可以进入了。。。

有经验的用户就在程序中增加对单引号等特殊字符的过滤。

但是,一般人习惯上有两种登录认证方式我就用ASP的VBScript做例子了:

一是用select * from ... where username = ' & Request.Form("username") & "password = " & Request.Form("password"),然后判断结果是否为空来验证。其实还有一种方式:

用select * from ... where username = ' & Request.Form("username"), 然后判断结果集中的密码是否和输入相同来验证,这种方式就安全一些了。

3。利用多语句执行漏洞。

根据上面的思路,如果用户根据书名(例如linux入门)查询所有的书,SQL语句为

select book.name,book.content from book where bookname='linux入门'

如果我们输入的不是linux入门而是 linux入门' delete from user where '1' = '1

从而构成对表的删除。

成功的前提条件是对方允许多条语句的执行。

由于程序没有处理边界符“'”产生的漏洞的危害程度和结果集的类型及数据库的配置有很大的关系。首先说结果集,如果结果集只支持单条的SQL语句,那么你所能做的只是上面提到的那种在密码框内输入' or '1' = '1来登录,其他的做不了。

我们还可以用这种方法在数据库里增加用户。

4。SQL Server装完后自动创建一个管理用户sa,密码为空。而好多人装完后并不去改密码,这样就留下了一个极大的安全问题,我稍后再细说。

程序中的连接一般用两种,不是用global.asa就是用SSL文件。SSL文件一般人习惯放到到Web的/include或/inc目录下。而且文件名常会是conn.inc、db_conn.inc、dbconninc,等等,反正有时能猜到。

如果这个目录没有禁读,一旦猜到文件名就可以了,因为.inc一般不会去做关联的,直接请求不是下载就是显示源文件。

还有当主要程序放到一个后缀为.inc的文件而没有处理“'”,当运行出错时返回的出错信息中常会暴露.inc文件,我遇到过几次这样的情况。其实可以在IIS里设置来不回应脚本出错信息的。

5。数据库的利用。

如果程序中的连接用户权限极小,甚至多数表只能读,你就很难有所作为了。这时所能做的是能猜出表名和字段名来进行删除数据或表的操作。

INSERT语句利用起来讨厌一些,主要是里面有好多列,而且还要处理掉最后的“)”。

我就以我最熟悉的MS SQL Server来说一些吧。它的默认端口号是1433,你用telnet连一下服务器的这个端口,如果能连上去一般是装了MS SQL Server,当然这是可以改掉的。

好了,说一说数据库的利用。

如果对方的数据直接在Web服务器上而且你知道端口号,有帐号就干脆用SQL Analyzer来直接连接数据库。在它里面可以执行SQL语句。常用的是存储过程master.dbo.xp_cmdshell,这是一个扩展存储过程,它只有一个参数,把参数做为系统命令来装给系统执行。

如果是管理用户就有权执行这个存储过程,而且这时可以执行很多操作,如用ipconfig来看ip设置,用net user来看系统用户。不过用net user /add 用户名 密码并不一定成功,有时会返回一个“指定的登录会话不存在”而不能执行,原因我还不清楚。

如果没有权限也不要紧,MS SQL Server有个漏洞,你可以创建一个临时存储过程来执行,就可以绕过去,如:

CREATE PROC #cmdshell(@cmdstr varchar(200))

AS

EXEC master.dbo.xp_cmdshell @cmdshell

当然这时是没有权限执行net user /add等的,不过可以查看,可以创建文件。

反复用echo创建一个FTP脚本,把木马传到一个FTP站点上,然后用存储过程调用ftp来利用脚本来下载并安装,然后......呵呵:)

如果数据库没有装在Web服务器上所以没有找到或改了端口号而一时找不到还是有办法的。

如果数据库服务器直接从Internet上无法访问,你可以利用程序里的漏洞来删除、修改数据或加入javascript语句到数据库,通常他们显示本来应该自己人录入的数据时不去过滤,所以可以用javascript把它转到其他站点上或做些什么。

如果只是改了端口号就要看程序里数据库用户的权限了,如果是管理用户,可以用' exec master.dbo.xp_cmshell 'net user /add aaa bbb来创建一个操作系统用户,然后再用' exec master.dbo.xp_cmdshell 'net localgroup /add administrators aaa来把它升级为超级用户。

如果这台服务器的NetBIOS绑定了TCP/IP,而且C$、D$等管理共享存在,呵呵,恭喜了,你在DOS命令下用net use Z: ip address$ "bbb" /user:"aaa"就可以把对方的整个C盘映射为你本地的一个网络驱对器Z:了。

6。数据库里如何留后门。

创建用户的sp_addlogin、权限分配的sp_addsrvrolemember是用一条语句来判断用户是否有权限执行,也就是说用户都可以执行它,它再来判断用户是否有权执行。

当你攻入一个数据库时可以用它的Enterprise Manager来连上去修改这些存储过程,因为这些存储过程都没有加密。

可以在判断的地方加个条件,当这个条件满足时就不直接执行下去而不管是什么权限的用户调用它。

不过改完要注意,这时它的Type成了User,要想改回可以到sysobjects表中把name为sp_addlogin的一条删除,然后再把没有改过的相同版本的MS SQL Server的同一条记录拷贝进去就可以了。

当然不要忘了这些默认是不能手工修改的,要修改得先把掉SQL Server的参数,改完不要忘了再改回来啊:) 这时只要网站的程序有问题,不管程序中的用户权限如何,你都可以随时创建SQL Server的管理用户。

7。数据库扫描工具。

ISS DATABASE Scanner

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有