脚本编程量的漏洞检测与修补
时间:2010-12-08 来源:秩名
1、Web漏洞检测
白盒检测
对检测者的要求:
——能读懂用此语言写的程序
——明白漏洞成因
——漏洞挖掘经验
常用的web脚本语言:Asp/Php/Jsp/asp.net
2、常见的web漏洞
sql注入
文件上传
cookie欺骗
XSS攻击
文件包含
其他
3、Sql注入及其危害
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。通过递交参数构造巧妙的SQL语句,从而成功获取想要的数据。
分为字符型注入和数字型的注入,由于编程语言不同,所存在的注入类型也不同。
危害:
--非法查询其他数据库资源,如管理员帐号。
--执行系统命令
--获取服务器root权限
4、由于使用编程语言和数据库的不同,漏洞的利用以及所造成的危害也不同。
Sql注入原理
Test.asp文件代码片段:
正常的查询:test.asp?username=test&password=123
使password=123 ‘ or ‘1’=‘1:
Sql语句到数据库后:
Or ‘1’=‘1’始终成立。
5、可以通过修改city来构造不同的语句来达到我们查询数据库的效果,现在对于sql注入已经全自动化了,最初出现的工具有原54NB论坛小竹写的NBSI,是最经典的工具了,后来出来了无数的全自动注入工具,在这里就不再赘述了。
Sql二次注入
Update,Insert插入注入语句,通过内部传参进行注入。
Insert users (username)values(’1 and 1=1’)
Select * from users where username =values
6、二次注射原理图
SQL注射
数据库
其他函数[如Include]
构造变量
UPDATA INSERT
提取变量
SELECT
7、Asp表现
存在数字型和字符型注入。
(A) 数字型 字段=51
Select * from 表名 where 字段=51
构造参数:ID=49 And [查询条件]
生成语句:Select * from 表名 where 字段=49 And [查询条件]
(B)字符型的另一种形式
搜索语句:Select * from 表名 where 字段like ’%关键字%’
构造参数:keyword=’ and [查询条件] and ‘%25’=’
生成语句:Select * from 表名 where字段like ’%’ and [查询条件] and ‘%’=’%’
8、Asp注入的预防
对于用户端输入的任意字符,包括GET提交,POST提交,Cookie提交,SERVER提交的都需要做严格过滤。
对于数字型参数判断是否为数字:可用函数isNumeric来判断,返回值为true和false。
对于字符型参数过滤单引号,将其替换为l两个单引号,使其无法闭合当前sql语句的单引号。
例外:base64编码
Sql通用防注入,全局过滤GET、POST
9、Asp防注入过滤demo
10、Php中的表现
Php的魔术引号(magic_quotes_gpc ) 。
php.ini-dist 默认是开启此功能。如果安装php时使用此文件,将不会产生字符型注入,主要是数字型注入。
数字型注入:
select * from guess where id=“.$id.”
select * from guess where id=$id
标签分类: