Web安全系列——注入攻击

这篇具有很好参考价值的文章主要介绍了Web安全系列——注入攻击。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章首发公众号: 海天二路搬砖工

前言

在Web应用程序开发中,防SQL注入最基本的安全防护要求了。其实除了SQL注入, 还有很多其他的注入攻击方式。注入攻击是最常见的Web应用攻击方式之一。

本文将介绍注入攻击的概念、种类、原理,以及如何防护。

什么是注入攻击

注入攻击是指攻击者在应用程序接收用户输入的地方注入自己精心构造的攻击代码,以达到执行任意操作、篡改数据或者获取敏感信息的目的。

Web安全系列——注入攻击,Web安全,web安全,安全,网络

注入攻击是 Web 应用程序中最常见的攻击类型之一,攻击成功将导致应用程序的机密性、完整性和可用性等方面的风险。

注入攻击的种类

常见的注入攻击类型包括 :

  • SQL 注入: 通过在 SQL 语句中注入恶意代码来执行不受信任的操作,以获取敏感数据或者篡改数据。
  • 命令注入: 攻击者将能够执行不受信任的操作的命令注入到应用程序中。
  • LDAP 注入: 利用 LDAP 查询中的漏洞来获取敏感信息或者更改应用程序的行为。
  • OS 注入: 利用操作系统的漏洞,向服务器输入不受信任的数据,以利用操作系统上的缺陷来执行可疑操作。
  • XML 注入: 利用 XML 编辑器中的漏洞创建恶意 XML 代码的攻击

SQL注入

什么是SQL注入攻击

SQL注入是指攻击者在应用程序接收输入参数的地方注入了恶意SQL语句,以达到获取敏感数据或者篡改数据的目的。

Web应用程序中,用户的输入经常会作为数据库的查询条件,填充到SQL语句中。

Web安全系列——注入攻击,Web安全,web安全,安全,网络

举个栗子:

假设有一个登录表单,用户可以通过输入用户名和密码来登录系统。

正常的 SQL 命令可能如下所示:

SELECT * FROM users WHERE username = 'Windeal' AND password = '123456'

如果说密码 123456 是一个错误密码,那么用户就会登录失败。

但是,攻击者可能会在用户名参数中注入恶意代码 “’ OR 1=1”,例如:

SELECT * FROM users WHERE username = 'Windeal' OR 1=1--' AND password = 'mypassword'

如此一来,尽管密码是错误的,攻击者成功地利用 SQL 注入来绕过了登录验证(查询语句重点密码校验部分被注释掉了)。

SQL注入攻击的常见类型/方法

以下是一些常见的SQL注入攻击类型:

  1. 基于错误信息的 SQL 注入

错误型 SQL 注入常见于应用程序的错误消息中。攻击者可以通过修改 SQL 命令的格式,导致应用程序产生错误,错误消息中包含关于应用程序所使用的后端数据库的敏感信息。

  1. 基于时间延迟注入

攻击者使用时间敏感的 SQL 命令来判断注入的 SQL 语句是否执行成功,从而提高自己注入的成功率。攻击者通过向所写入的 SQL 语句添加时间延迟,来判断结果是否符合他们的期望,以便进一步利用所攻占的应用程序和服务器资源。

  1. 盲注

盲注是指攻击者不能直接看到所注入的响应信息,通常使用布尔盲注和时间盲注来动态检测数据的恶意代码。

  1. 联合查询注入

联合查询注入是在一个 SQL 查询中执行两个或多个数据库查询的技术。攻击者通常使用 UNION SELECT 命令向 SQL 查询中添加新的查询语句。这种注入方式可以将两个或多个表的数据合并到一个响应中,攻击者可以访问应用程序不会返回的数据。

  1. 存储过程注入

存储过程是一种预编译的 SQL 代码块,可以在一个事务中执行。攻击者可以使用存储过程注入来注入 SQL 命令并在数据库中执行恶意代码,以执行未授权的活动和/或下载其他恶意代码。

  1. 基于堆叠查询的注入

堆叠查询允许在一个请求中执行多个查询。攻击者可能会使用堆叠查询注入技术来执行跨数据库服务器的查询命令,从而操纵应用程序中的数据。

SQL注入攻击的预防和防范

  1. 入参强校验:

    服务后端对所有接收到的请求参数进行参数强校验,严格限时入参的长度、格式、是否是否包含非法字符。

  2. 参数化查询:

    使用参数化查询和预编译语句而不是字符串连接来提高应用程序的安全性。

  3. 限制数据库和表访问:

    为了限制用户和应用程序的访问权限,应用程序开发者和管理员应该为数据库用户分配最小的用户权限。将明文数据报告的能力限制在不影响应用程序正常运行的前提下。

  4. 限制运行时间

    限制(降低)请求的最大运行时间,避免攻击者根据响应时间来推测后台运行逻辑。

  5. 不提供过于详细的错误消息:

    错误消息的详细程度会向攻击者提供有关应用程序所使用的数据库平台的绝大部分信息。

  6. 多层防御措施:

    使用 Web 应用程序防火墙、注入扫描预防工具和定期代码审计等方法来设置多层防御措施。

  7. 强制减少 SQL 数据库的功能集:

    尽可能减少数据库的功能集,可以有效地减少潜在攻击的面。例如启用只读模式,关闭会话管理,强制值验证等。

其他注入攻击

命令注入

定义:

命令注入是一种类似于 SQL 注入的攻击方式。攻击者通过向应用程序输入一个操作系统命令的特定字符串,或通过摄取特定的应用程序安全补丁以绕过对输入进行的安全检查来实现。

原理:

攻击者通过输入操作系统命令或 shell 脚本的 payload 来注入恶意代码,例如添加删除、保存到磁盘、操纵文件系统和执行任意代码等。这些攻击可以通过许多短时间的输入字段和API或通过常规执行的 shell 命令执行。

示例:

假设我们提供一个搜索功能,底层是通过grep命令来查看文件系统中是否存在某个字符串。

如果我们再搜索框中注入系统命令,填入

searchterm | rm /f /

则服务器执行可能变为

grep searchterm | rm /f /

从而导致服务器上的文件被删除。

预防与防护:

为了有效预防和防护命令注入攻击,可以采用以下措施:

  1. 输入数据的验证和过滤
  2. 应用安全补丁和强化用户口令
  3. 对执行授权进行访问控制
  4. 建立客户端和服务端的双向认证机制
  5. 尽可能的规范化和限制应用程序的接口。

LDAP注入

定义:

LDAP注入是一种攻击方式,攻击者通过向LDAP查询中注入恶意数据或LDAP过滤器,来实现访问悄悄话的目的。

原理:

攻击者将特制的数据输入到LDAP查询或过滤器中,模拟正常LDAP查询操作,但当查询完成时,攻击者恶意数据被LDAP服务显示出来,从而导致安全问题的发生。

预防与防护:

LDAP注入攻击可以通过以下措施加以防护和预防,例如:

  1. 尽可能的规范和限制客户端和服务端接口
  2. 限制LDAP帐户的访问授权
  3. 对输入数据进行验证和过滤
  4. 应用安全补丁和监视系统日志
  5. 对询问访问进行授权和访问控制。

OS 注入:

定义:

OS命令注入是一种类型的攻击方式,攻击者通过将一系列恶意输入注入到一个之前预期只有数据输入的地方来实现向操作系统(OS)发送命令。

原理:

攻击者通过在 OS 命令的 payload 中注入恶意数据和命令访问权限,来执行不希望被操作系统或应用程序所记录的恶意行为,例如添加、删除、修改、操纵文件系统和直接执行任意代码等。

预防与防护:

为了防止 OS 命令注入攻击,可以采用以下方案:

  1. 验证所有的数据输入
  2. 应用安全补丁和规范化处理所有的输入
  3. 限制用户和关联服务帐户的访问性和权限
  4. 在 API 级别上加入健壮的验证机制
  5. 建立健康的安全意识和教育计划,使人员更加关注安全风险并采取相应措施。

XML 注入:

定义:

XML 注入攻击是指攻击者利用 XML 解析器漏洞,在 XML 数据输入和解析过程中注入恶意代码,进而达到攻击的目的。

原理:

攻击者通过向不受信任的 XML 数据输入中注入恶意的 XML 或 XML 文件格式数据来利用 XML 注入漏洞,或利用 XPath 的逻辑查询操作实现特定的筛选操作,结果导致解析器无法正确识别恶意代码,从而执行恶意操作。

示例:
以下是一个简单的示例,演示了如何进行XML注入攻击:

假设一个应用程序接受用户提供的XML数据,并使用这些数据生成HTML输出。攻击者可以提供以下恶意XML数据:

<user>
  <name>John</name>
  <role>Admin</role>
  <script>alert('XSS Attack')</script>
</user>

如果应用程序不正确地处理输入,它可能会将这个恶意XML数据插入到HTML输出中,导致XSS(跨站脚本)攻击。攻击者的恶意脚本会在用户的浏览器中执行。

预防与防护:

为了有效预防和防护 XML 注入攻击,可以采用以下方案:

  1. 对所有输入数据进行验证和过滤控制
  2. 对所有的应用程序和接入数据库元素进行严密的控制和访问认证
  3. 使用工具扫描管理可能存在的安全漏洞
  4. 对 XML 文档进行限制和规范化处理,避免恶意代码的注入
  5. 启用应用程序防火墙等操作系统级别的安全机制以及专属 XML 过滤解析器等技术措施来加固、增强 XML 的安全性。

附录

我的公众号

Web安全系列——注入攻击,Web安全,web安全,安全,网络文章来源地址https://www.toymoban.com/news/detail-737186.html

到了这里,关于Web安全系列——注入攻击的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络安全全栈培训笔记(53-WEB攻防-通用漏洞&CRLF注入&URL重定向&资源处理拒绝服务)

    知识点: 1、CRLF注入-原理检测利用 2、URL重定向-原理检测利用 3、Web拒绝服务-原理检测利用 #下节预告: 1、JSONPCORS跨域 2、域名安全接管劫持 #详细点: 1.CRLF注入漏洞,是因为Wb应用没有对用户输入做严格验证,导致攻击者可以输入一些 恶意字符。攻击者一旦向清求行或首部

    2024年01月15日
    浏览(57)
  • 网络安全---SQL注入攻击

            SQL 注入是一种代码注入技术,可利用 Web 应用程序和数据库服务器之间接口中的漏洞。当用户的输入在发送到后端数据库服务器之前未在 Web 应用程序中正确检查时,该漏洞就存在。         许多 Web 应用程序从用户处获取输入,然后使用这些输入构建 SQL 查询

    2024年04月12日
    浏览(50)
  • 「网络安全」SQL注入攻击的真相

    点击此处即可获得282G网络安全学习资料 我们生活在数据的黄金时代。有些公司将其分析为更好的自己,有些公司为了获利而进行交易,没有一家公司因其价值而自由放弃 - 对于他们的业务和犯罪分子。 SQL(结构化查询语言)是一种非常流行的与数据库通信的方式。虽然许多

    2024年02月07日
    浏览(49)
  • Web安全常见攻击

    本篇主要简单介绍在 Web 领域几种常见的攻击手段。 首先插播一句,为毛叫 XSS,缩写明显是 CSS 啊?没错,为了防止与我们熟悉的 CSS(Cascading Style Sheets)混淆,所以干脆更名为 XSS。 那 XSS 是什么呢?一言蔽之,XSS 就是攻击者在 Web 页面中插入恶意脚本 ,当用户浏览页面时,

    2024年02月06日
    浏览(43)
  • 【WEB安全】SQL注入挖掘

    2021年OWASP发布漏洞威胁榜单,SQL注入从第一名下降到第三(https://owasp.org/Top10/),SQL注入是一种常见的Web攻击技术,通过构造恶意的SQL语句来破坏数据库安全。攻击者可以通过提交带有恶意代码的输入,例如网页表单,来控制数据库执行恶意语句。这样,攻击者可以访问敏感

    2024年02月13日
    浏览(40)
  • 【Web 安全】CSRF 攻击详解

    文章目录(文章末尾有福利!!!) 一、CSRF 简介 二、CSRF 原理 三、CSRF 的危害 四、CSRF 的攻击类型 1. GET型 2. POST型 五、CSRF 的防御 1. 验证 HTTP Referer 字段 2. 在请求地址中添加 token 并验证 3. 在 HTTP 头中自定义属性并验证 六、WAF 防御 CSRF 参考链接 CSRF(Cross Site Request Forgery,

    2024年01月17日
    浏览(47)
  • Web安全-初识SQL注入(一)

    将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。 注入能导致数据丢失、 破坏或泄露给无授权方,缺乏可审计性

    2024年02月05日
    浏览(47)
  • 《Web安全基础》03. SQL 注入

    本系列侧重方法论,各工具只是实现目标的载体。 命令与工具只做简单介绍,其使用另见《安全工具录》。 靶场使用 SQLi-Labs。详情参见《WriteUp:SQLi-Labs》 SQL 注入非常复杂,区分各种数据库类型,提交方法,数据类型等注入。此类漏洞是 WEB 安全中严重的漏洞,学习如何利

    2024年02月14日
    浏览(32)
  • Web安全:SQL注入漏洞测试.

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2024年02月05日
    浏览(56)
  • WEB安全基础入门—操作系统命令注入(shell 注入)

    欢迎关注订阅专栏! WEB安全系列包括如下三个专栏: 《WEB安全基础-服务器端漏洞》 《WEB安全基础-客户端漏洞》 《WEB安全高级-综合利用》 知识点全面细致,逻辑清晰、结合实战,并配有大量练习靶场,让你读一篇、练一篇,掌握一篇,在学习路上事半功倍,少走弯路! 欢

    2024年02月01日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包