注入攻击(Injection Flaws)

翻译 2007年09月15日 08:51:00
 
注入攻击Injection Flaws)
From OWASP
http://www.owasp.org/index.php/Injection_Flaws
Contents
  • 1 简介
  • 2 受影响的环境
  • 3 示例
  • 4 找到你系统的漏洞
  • 5 保护你的系统

简介

注入攻击是攻击者通过Web应用传播恶意的代码到其他的系统上。这些攻击包括系统调用(通过shell命令调用外部程序)和后台数据库调用(通过SQL注入)一些设计上有缺陷的Web应用中的Perl,python和其他语言写的脚本(script)可能被恶意代码注入和执行。任何使用解释执行的Web应用都有被攻击的危险。 Any time a web application uses an interpreter of any type there is a danger of an injection attack.
很多Web应用使用操作系统的特性和外部程序来完成他们的某些功能。发送邮件或许是最常用的外部程序,很多其他程序也一同被使用。当一个Web应用通过Http请求把外部请求的信息传递给应用后台时,必须非常小心。否则攻击这可以把某些特殊字符、恶意代码或者命令改变器注入这些信息中,你的Web应用可能会把这些攻击代码传递给后台执行。
SQL注入是一种广泛使用的危险度极高的注入攻击方式。要使用这种攻击方式,攻击者必须找到Web应用传递给数据库的参数。通过把恶意的SQL命令嵌入参数中,攻击者可以让Web应用把这些查询发送到数据库中。发现这些攻击和系统漏洞并不难。但是攻击产生的后果却相当致命,攻击者可以得到,破坏或者摧毁你所有数据库的内容。
注入攻击的系统漏洞可以很容易的被发现和攻击,但是他们在系统中也是相当的隐蔽。攻击的结果也会很严重,从小的错误到危及整个系统,甚至是系统被破坏。在任何情况下,外部调用的使用是非常广泛的,所以Web应用的注入漏洞必须高度重视。
影响的系统
每个Web应用系统都允许外部命令,比如系统调用、shell调用和SQL请求。注入攻击依赖于这些系统如何使用这些调用和系统的哪些部分使用这些调用。但是如果Web应用没有很好的设计和编码,所有的外部调用(external calls)都会受到攻击。
案例
·         Examples: 一个恶意的参数修改可以使系统访问其他用户的文件(比如文件请求加上文件追溯符“../” characters as part of a filename request). 另外一些命令也可以附加到参数中使得脚本运行 (如., “; rm –r *”). SQL查询可以通过在SQL语句中增加一些限制条件,比如”where”子句中增加“OR 1=1”)来获得对数据请求的访问的权限.
·         OWASP 的创建安全的Web应用和Web服务指南。第八章: 数据验证 http://www.owasp.org/documentation/guide.html
·         如何创建HTTP验证引擎(通过Stinger验证J2EE) http://www.owasp.org/columns/jeffwilliams/jeffwilliams2
·         Have Your Cake and Eat it Too (.NET validation) http://www.owasp.org/columns/jpoteet/jpoteet2
·         SQL注入白皮书: http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf
如何找到你系统的漏洞
最好的方法是搜索你所有的源代码,找到使用外部资源的命令(比如system,exec,fork,Runtime.exec,SQL queries,或者在你系统里面使用解释器interpreters的任何创建请求的的语法)注意很多语言通过多种方式来运行外部命令。开发者应检查他们的代码,找到所有的可以通过HTTP请求注入的漏洞。检查过代码之后,注意采用如下的步骤来保护你的应用。
保护你的系统
最简单的防护措施是尽可能避免执行外部解释器。对于脚本命令和系统调用,有很多特点的类库来执行他们。使用这些类库但不引入系统脚本解释器,通过这种方式可以避免脚本命令导致的大量问题。
对于你仍然要是用的系统命令,比如对后台数据库的访问,你必须仔细检查确保其中不包含任何恶意内容。你也可以结构化你的请求代码使得参数传入的都是数据而不是可执行的语句。使用存储过程和Prepared statement会提供很好的保护,确保提供的输入都作为数据. 这些方法会减少,但不是完全减少外部调用的风险。你仍然必须验证这些输入来确保它满足安全的要求。
另外一个提供对命令注入很好的预防方法是通过系统权限配置,只允许Web应用使用某些特定的命令. 因此你不能以root用户来启动Web服务器或者以DBADMIN用户来访问数据库。否则攻击者可以利用这些权限很高的用户攻击系统。某些J2EE系统可以允许使用JAVA沙箱(java sand box),这种方式也可以防止某些系统命令的执行。
如果一个外部命令必须执行,任何插入到命令的用户信息都必须强制检查。要提供处理错误的机制,比如处理请求时的超时处理和阻塞处理。所有的输出,返回代码错误代码都必须检查来确保所有的处理过程没有受到攻击。这样至少可以让你检查是否系统运行中是否出现了问题。否则攻击永远不能被检测到。
“OWASP Filters project“ 是一个可重用的防止注入攻击的组件。OWASP 发布的CodeSeeker是一个应用级别的防火墙。
 
如果您需要这样的安全服务,可以找我联系li.woohoo@gmail.com
 

SQL的注入式攻击方式和避免方法

出处:http://www.cnblogs.com/xyd21c/archive/2010/12/09/1901140.html感谢分享 SQL 注入是一种攻击方式,在这种攻击方式中,恶意代...
  • nawuyao
  • nawuyao
  • 2016年09月18日 09:34
  • 2960

PHP漏洞全解(二)-命令注入攻击

本文主要介绍针对PHP网站常见的攻击方式中的命令攻击。Command Injection,即命令注入攻击,是指这样一种攻击手段,黑客通过把HTML代码输入一个输入机制(例如缺乏有效验证限制的表格域)来...
  • lanbingkafei
  • lanbingkafei
  • 2013年04月29日 12:12
  • 480

如何防止SQL注入攻击

如何防止SQL注入攻击            一、什么是SQL注入式攻击?   所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行...
  • shenxiuwen1989
  • shenxiuwen1989
  • 2015年03月12日 17:32
  • 1239

简单的sql注入式攻击 教程(小白 )

SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。 以下是整理网上教程所得出的,如有误,非常感谢指出...
  • qq_34817273
  • qq_34817273
  • 2017年04月30日 01:20
  • 915

Web安全之XML注入

XML注入攻击,和SQL注入的原理一样,都是攻击者输入恶意的代码来执行自身权限以外的功能。 XML是存储数据的一种方式,如果在修改或者查询时,没有做转义,直接输入或输出数据,都将导致XML注入漏洞。...
  • mevicky
  • mevicky
  • 2015年09月06日 08:36
  • 7068

Xcode插件Injection实现代码注入

Injection是johnno开发的一个Xcode插件,允许我们将代码实现更快注入到模拟器运行的程序或macOS程序。原先可以通过Alcatraz安装到Xcode中,不过现在是独立的App了。可以在...
  • sharpyl
  • sharpyl
  • 2017年01月14日 20:08
  • 476

SQL注入攻击与防御

什么是SQL注入 程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。攻击者可以提交一段精心构造的数据库查询代码,根据返回的结果,获得某些他想得知的数据,这就是所谓的...
  • SkySuperWL
  • SkySuperWL
  • 2016年08月08日 21:41
  • 3113

SSI 注入的介绍和代码防御

0x01 介绍 当符合下列条件时,攻击者可以在 Web 服务器上运行任意命令: A. Web 服务器已支持 SSI(服务器端包含)。 B. Web 应用程序在返回 HTML 页面时,嵌入用户输...
  • qq_29277155
  • qq_29277155
  • 2016年10月07日 19:53
  • 1740

《SQL注入攻击与防御》读书笔记

《SQL注入攻击与防御》读书笔记
  • ggf123456789
  • ggf123456789
  • 2015年10月08日 23:41
  • 1641

Command Injection(命令行注入)

命令注入漏洞是特别危险的,因为它们允许未经授权的执行操作系统命令, 它们的存在,因为应用程序无法正确地验证和消毒,使用时调用shell的功能,如的参数。 攻击者与控制这些参数可以欺骗应用程序执行任何系...
  • henni_719
  • henni_719
  • 2015年01月07日 11:57
  • 3487
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:注入攻击(Injection Flaws)
举报原因:
原因补充:

(最多只允许输入30个字)