·10项最严重的开源web应用安全项目(OWASP)
1.A1注入
1.1注入简介:
将不受信任的数据作为命令或者查询的一部分发送到解析器中,会产生诸如sql诸如,nosql注入,os注入和ldap的注入缺陷.攻击者的恶意数据可以诱导解析器在没有适当授权的时候执行非预期命令或者访问数据.
1.2注入分类及载体
几乎所有的数据源都可以作为注入的载体,包括环境变量,所有类型的用户,参数,外部和内部的web 服务,当攻击者可以向解释器发送恶意数据时,注入漏洞就产生.在遗留的代码中,注入漏洞十分普遍.如SQL,LDAP,XPATH,NOSQL,Os命令中,xml解析器中,smtp包头中,表达式语句和ORM查询语句中.
原理:
方法:
- SQL注入的类型
- 简单注入
- 永真式: 即”or 1=1 来保证无论如何都可以获取数据.
- 错误语句:让web应用构造错误的SQL语句来抛出异常,进而判断数据库类型
- 结束注释:使用注释符注释剩余的语句
- 联合查询:使用union all 后面可以写出真正的要查询的语句
- 盲注
- 注释符号:–(MSSQL.mysql),#(mysql),/*comment*/(mysql)
- 单行用分号分隔开,运行多个SQL语句:MSSQL
- 判断(IF,ELSE语句)
1.3简单注入例子
- 1′ and 1=1;#,1′ and 1=1;判断是否可以被注入
- 1′ or 1=1;#来尝试或者所有的账号信息
- 1′ union all select 1,2;#来判断可以获取的参数的个数
- 1′ union all select 1,(@@version);#来获取数据库的版本
- 1′ union all select 1, (database());#获取数据库名称
- 1′ union all select 1,group_concat(column_name) from information_schema.columns where table_name=’users’;#’
1.4防护sql注入:
- 数据库最小化权限的账户启动数据库
- 禁止数据库执行系统命令
- 使用IDS,waf检测是否有异常操作
- 连接数据库的用户权限最小化
- 统一管理错误信息
- 禁止向用户提供错误信息
- 在服务器端过滤所有客户端数据
- 审核数据