OWASP 十大网站安全风险 (一): 注入攻击

OWASP是 open web application security project 的缩写。这个系列主要介绍这十个最多被攻击的安全漏洞。

OWASP 十大信息安全主题

1.注入攻击 ( Injection
2.无效身份认证(Broken Authentication)
3.敏感信息泄漏(Sensitive Data Exposure)
4.XML外部处理器漏洞(XML External Entities (XXE))
5.无效存取控管(Broken Access Control)
6.错误设置安全系统(Security Misconfiguration)
7.跨站攻击(Cross-Site Scripting (XSS))
8.不安全的反序列化漏洞(Insecure Deserialization)
9.使用已有漏洞元件(Using Components with Known Vulnerabilities)
10.日志和监控不足风险(Insufficient Logging and Monitoring)

注入攻击

注入攻击是指在SQL, NoSQL, 系统命令, 和 LDAP等注入时候, 非安全的数据作为命令或者语句传入到解释器中,这些攻击者的 敌对数据可以骗过解释器,在没有授权的情况下执行一些危险命令或者取得数据

了解注入攻击

首先要考虑到,外部用户, 内部用户, 管理员等都可能给系统发送非安全信息。当攻击者给解释器发肿敌对数据的时候,注入 攻击就发生了。

注入漏洞是非常普遍的,尤其是老旧系统。 最可能出现的地方包括SQL, LDAP, XPath, OS 命令, XML parsers, smtp headers, Expression languages, ORM语句, OGNL(object graph navigation library)等等.

通过检查代码是很容见发现注入漏洞的。攻击者经常用扫描软件或者模糊测试软件去找注入漏洞。

注入漏洞能导致很多严重后果,像数据丢失,数据损坏,数据泄漏,数据授权被破坏,有时候可能导致整个系统完全被攻击之掌控

什么样的应用程序容易被攻击

  • 程序对用户提交的数据不验证,不过滤,不清理。

  • 动态SQL语句,或者非参数注入语句没有对特殊符号处理就直接传入解释器。

  • 非验证数据直接用在ORM搜索参数里面

  • 非验证数据直接用在SQL, 系统命令,动态SQL, 或者存储过程里

预防注入攻击的最好方法是代码审查,然后是对下面等数据输入进行严格测试:

  • Parameters

  • Headers

  • URL

  • Cookies

  • JSON

  • SOAP

  • XML

现在公司基本会在CICD pipeline加入一些扫描,测试软件来发现这些漏洞。

注入漏洞攻击实例

例子一: 程序使用非验证数据去创建SQL语句


String query = "SELECT * FROM accounts WHERE custID='"+ request.getParameter("id") + "'"; 

例子二: 程序使用非验证数据去创建HQL语句


Query HQLQuery = session.createQuery("FROM accounts WHERE custID='"+request.getParameter("id")+"'"); 

在上面两个例子中,攻击者可以在浏览器篡改id参数, 发送' or '1'='1


Example: http://example.com/app/accountView?id=' or '1'='1 

这样上面两个query会返回accounts表里所有数据。所以可以看出,注入攻击是非常严重,完全可以取得, 破坏数据。

预防注入漏洞

  • 要把非验证数据和queries, 系统命令之类的非开

  • 使用安全API, 完全避免使用解释器

  • 使用参数化接口

  • 如果没有参数化API的话,我们必须在解释器里很小心去处理特殊符号。

  • 可以积极的对输入数据进行验证,但很多系统要求特殊符号作为输入,这样就很难完全检查到注入漏洞了。

  • 使用关键字LIMIT或者其他SQL query控制,避免返回大量数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值