注入
什么是注入?
将不受信任的数据作为命令或查询的一部分发送到解析器时,解析器会解析出恶意内容。攻击者的恶意数据可以让解析器执行非预期内的命令或者访问数据。
攻击方式
几乎任何的数据源都可以作为注入的地方,按照我的理解来说,就是只要用户可以摸到的地方攻击者也都可以碰到,成为注入载体,比如环境变量、所有类型的用户、参数等等,只要可以传递到解释器,就可以被解释,产生注入漏洞。
危害
导致数据丢失、破坏、泄漏给无授权方,缺乏无审计性或是拒绝服务。有时甚至导致主机被完全接管。
脆弱点(容易被注入的地方)
- 用户提供的数据没有经过应用程序验证、过滤或净化
- 动态查询语句或非参数化调用,在没有上下文感知转义的情况下,被用于解释器
- 在ORM搜索参数重使用了恶意数据,获得未授权或敏感的数据
- 恶意数据直接被使用或者连接,诸如SQL语句或命令在动态查询语句、命令或存储过程中包含结构和恶意数据
常见的注入方式
- os注入:在一些可以输入的地方通过输入可执行系统代码来获取服务器权限
- SQL注入:通过在已定义好的SQL语句后方添加额外的SQL语句来实现攻击
- NOSQL注入:输入非sql语句(系列操作符)来实现攻击
- LDAP注入:通过输入简单的LDAP语句来自动补全过滤器以达到提权或绕过验证的攻击
- XML解析器:通过DTD、XPat