Owasp Top10 漏洞解析 之注入

发布时间 2023-12-19 15:18:28作者: 网安云

一、注入漏洞是什么?


注入漏洞,即将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命今或访问数据。

几乎任何数据源都能成为注入载体,包括环境变量、所有类型的用户、参数、外部和内部Web服务。当攻击者可以向解释器发送恶意数据时,注入漏洞产生。

注入漏洞十分普遍,尤其是在遗留代码中。注入漏洞通常能在SQL、LDAP、XPath或是NoSQL查询语句、OS命令、XML解析器、SMTP包头、表达式语句及ORM查询语句中找到。注入漏洞很容易通过代码审查发现。扫描器和模糊测试工具可以帮助攻击者找到这些漏洞。

注入能导致数据丢失、破坏或泄露给无授权方,缺乏可审计性或是拒绝服务。注入有时甚至能导致主机被完全接管。您的应用和数据需要受到保护,以避免对业务造成影响。

 

二、漏洞分类


1、SQL注入

按照注入点类型分类
数字型、字符型、搜索型、GET 注入、POST注入、Cookie 注入、HTTP 头部注入

按照执行效果来分类
基于布尔的盲注、基于时间的盲注、基于报错注入、联合查询注入、堆查询注入、宽字节注入

2、NoSQL注入:

OS 注入、LDAP注入、HTML注入、Xpath注入、shell注入表达式注入。

 

三、漏洞产生的原因(威胁来源)

  • 用户提供的数据没有经过应用程序的验证、过滤或净化。
  • 动态查询语句或非参数化的调用,在没有上下文感知转义的情况下被用于解释器。
  • 在ORM (对象关系映射,Object Relational Mapping,简称ORM)搜索参数中使用了恶意数据,这样搜索就获得包含敏感或未授权的数据。
  • 恶意数据被直接使用或连接,导致SQL语句或命令在动态查询或存储过程中同时包含结数据构和恶意数据。


四、漏洞产生的影响

  • 数据丢失、损坏或篡改
  • 拖库(信息泄露)
  • 夺权,执行OS命令或恶意代码


五、如何防御?

  • 代码审计,代码审计是最有效的检测应用程序的注入风险的办法之一;
  • 不要使用动态语句,或者参数化语句;不要使用拼接SQL语句;
  • 使用安全的APl;使用存储过程来执行所有的查询;
  • 使用“最小权限”限制数据库用户的权限,不要使用管理员权限进行数据库连接;
  • 使用“黑/白名单”或正则表达式,对用户输入的信息执行严格的输入检查;
  • 不要显示详细的错误信息(信息泄露) ;
  • 在查询中使用LIMIT和其他SQL控件,以防止在SQL注入时大量地泄露记录;
  • 将用户的登录名、密码等数据加密保存。

源代码审计 点此链接 可免费领取。另外,其中还包含第三方组件安全分析检测,对软件源代码安全漏洞和软件中的开源组件漏洞进行全面评估,全方位提升应用安全性。

免费检测链接:源代码+组件检测