10.1 注入操作系统命令

1、许多时候,开发者直接向服务器发送操作系统指令,但如果应用程序向操作系统发送用户输入指令,可能受到命令注入攻击。通常所有的注入命令都可在Web服务器的进程中安全运行,使得攻击者能够完全控制整个服务器。

10.1.1 例1:通过Perl注入

1、下面Perl代码功能是允许管理员在服务器上指定一个目录,并查看他的磁盘使用情况。

用户输入的dir作为参数传入,但易被攻击者利用。

10.1.2 例2:通过ASP注入

1、下一段C#代码功能是允许管理员查看被请求的目录的内容。

10.1.3 通过动态执行注入

1、许多Web脚本语言支持动态执行在运行时生成的代码。允许开发者创建可根据各种数据和条件动态修改其代码的应用程序。

10.1.4 查找OS命令注入漏洞

1、在应用程序解析过程中,调用外部程序或访问文件系统,应该能确定Web应用程序与基础操作系统交互的情形,攻击者探查所有这些功能,寻找命令注入漏洞。

2、不同命令揭示其处理shell元字符的方式不相同,有两种类型的元字符,可用于在一个现有的预先设定的命令中注入一个独立的命令。

①字符,| & 和换行符,可用于将几个命令连接在一起。

②反引号(`)用于独立的命令包含在最初的命令处理的数据中。

10.1.5 查找动态执行漏洞

1、动态执行漏洞最常见PHP和Perl等语言,但任何应用平台都可能会向基于脚本的解释器传送用户提交的输入。

10.1.6 防止OS命令注入

1、防止OS命令注入最佳方式是完全避免直接调用操作系统命令,Web应用程序执行每个任务都可用内置API完成,攻击者不能控制内置API,所以安全。若无法避免,可用一个白名单限制用户只输入一组特殊的值,或限制输入字符范围。

10.1.7 防止脚本注入漏洞

1、防止此漏洞最佳方法是避免将用户提交的输入或者来自用户的数据传送给任何动态执行或包含函数。

10.2 操作文件路径

10.2.1 路径遍历漏洞

1、若应用程序使用用户可控制的数据、以危险的方式访问位于应用程序服务器或其他后端文件系统中的文件或牡蛎,就会出现路径遍历漏洞。通过提交设计的输入,攻击者就可以读改任意内容。

2、用户可以输入“..\”来回溯到上一级目录

3、查找和利用路径遍历漏洞

4、防止路径遍历漏洞

1、避免向任何文件系统API传送用户提交的数据是防止路径遍历漏洞的最有效的方法。

10.2.2 文件包含漏洞

1、许多脚本语言使用包含文件include file 。允许开发者把可重复使用的代码插入到单个文件中。

2、远程文件包含:PHP语言易出现此漏洞,因为它的包含函数接受远程文件路径。

3、本地文件包含:有时应用程序根据用户可控制的数据加载包含文件,但这是不可能给位于外部服务器上的文件指定URL。

4、查找文件包含漏洞:任何用户提交的数据项都包含此漏洞。

10.3 注入XML解释器

10.3.1 注入XML外部实体

1、客户端常使用XML向服务器端传送数据,服务器端有时也用XML文件返回数据给客户端。

10.3.2 注入SOAP

1、SOAP是一种使用XML格式封装数据、基于消息的通信技术。

10.3.3 查找并利用SOAP注入

1、SOAP注入较难实现,因为随意提交XML元字符会破坏SOAP消息的格式,而且生成的错误也很简单。使用下面步骤检索出此漏洞。

10.3.4 防止SOAP注入

1、在用户提交的数据被注入SOAP消息中的任何位置实施边界确认过滤,用以防止SOAP注入。以下是经常造成问题的HTML编码字符。

10.4 注入后端HTTP请求

10.4.1 服务器端HTTP重定向

1、若应用程序接受用户可控制的输入,并将其合并到适用后端HTTP请求检索的URL中,这种行为就会导致服务器端重定向漏洞,用户输入可能包含被检索的完整URL,或者应用程序可能会对该URL进行某种处理,如添加标准的后缀。

10.4.2 HTTP参数注入

1、若用户提交的参数被用作后端HTTP请求中的参数,就会导致HTTP参数注入。

2、HTTP参数污染:若请求中包含多个同名请求,以下是一些常见的处理方式

3、攻击URL转换:

10.5 注入电子邮件

10.5.1 操纵电子邮件标头

1、用户可指定发件人地址和邮件的内容,应用程序将这个输入传送给PHPmail()命令,由他建立邮件并与其他配置的邮件服务器进行必要的SMTP会话。

10.5.2 SMTP命令注入

1、有时应用程序可能会执行SMTP会话,或者将用户提交的输入传送给一个不同的组件完成这一任务,这时,可以直接在这个会话中注入任意SMTP命令,完全控制由应用程序生成的消息。

10.5.3 查找SMTP注入漏洞

1、为了有效探查应用程序的邮件功能,需要测试每一个提交给与电子邮件有关的功能的参数,甚至那些最初可能生成的消息无关的参数。

10.5.4 防止SMTP注入

1、根据一个适当的正则表达式检查电子邮件地址。

2、消息主题不得包含任何换行符,并应实施适当的长度限制。

10.6 小结

10.7 问题

1、某网络设备提供用于执行设备配置的Web界面。为什么这种功能通常易于受到操作系统命令注入攻击?

答:用于配置网络设备的应用程序通常包含使用正常的Web脚本API无法轻松实现的功能,如用于重新启动设备、循环访问日志文件或重新配置SNMP的功能。通常,使用一行操作系统命令可以轻松执行这些任务。因此,许多时候,应用程序开发者通过将相关用户输入直接合并到shell命令字符串中来实现这些功能。

2、在测试以下URL时:

http://wahh-app.com/home/statsmgr.aspx?country=US

将country参数的值更改为foo导致了以下错误消息:

Could not open file: D:\app\default\home\logs\foo.log (invalid file).

可以采取哪些步骤对应用程序实施攻击?

答:应用程序似乎将用户提交的输入合并到用于文件系统操作的文件路径中,并且可以通过提交专门设计的输入来访问服务器上的任意文件。因此,应尝试使用../遍历序列访问不同的目录。由于.log将被附加到输入之后,因此应尝试使用NULL字节终止文件名。请注意,出现在错误消息中的home目录可能与出现在URL中的home目录为同一目录,这为Web根目录中的项目的位置提供了线索。

3. 在对一个在POST请求中以XML格式传送数据的应用程序进行测试时,可以利用哪种漏洞从服务器的文件系统中读取任意文件?要成功实施攻击,必须满足哪些先决条件?

答:应用程序可能易于受到XML外部实体(XXE)注入。检索任意文件的内容的先决条件如下:

(a) 应用程序使用的XML解释器必须支持外部实体;

(b) 应用程序必须在其响应中回显请求中的XML元素的内容。

4、向ASP.NET平台上运行的应用程序提出以下请求:

POST /home.aspx?p=urlparam1&p=urlparam2 HTTP/1.1

Host: wahh-app.com

Cookie: p=cookieparam

Content-Type: application/x-www-form-urlencoded

Content-Length: 15

p=bodyparam

应用程序执行以下代码:

String param = Request.Params[“p”];

请问param变量的值是什么?

答:param变量的值为urlparam1,urlparam2,bodyparam,cookieparam。

5、HPP是HPI的前提,还是HPI是HPP的前提?

答:严格来说,这两种攻击都不是对方的前提。

虽然HPI攻击通常包含HPP,但这不是必须的。例如,HPI攻击可能会将某个全新的参数注入到后端请求中,以干扰应用程序的处理过程。但这种类型的攻击并不依赖于应用程序在处理多个同名参数时表现的任何特殊行为。

通常,HPP攻击可以不包括HPI,特别是在对用户输入执行多层处理的情况下。例如,一些针对Internet Explorer XSS过滤器的攻击使用HPP技巧,但并不在后端请求中注入任何参数。

6、某应用程序包含一项功能,该功能向外部域提出请求,并返回这些请求的响应。为防止服务器端重定向攻击检索应用程序自己的Web服务器上的受保护资源,应用程序阻止了以localhost或127.0.0.1为目标的请求。如何突破这种防御,以访问服务器上的资源?

答:服务器的回环IP地址有许多备选表示形式,可将其用于避开应用程序的过滤。例如:

(a) 127.1

(b) 127.000.0.1

(c) 127.0.0.0 A类子网中的任何其他地址

(d) 这些表示形式的二进制或八进制变体,如017700000001

7、某应用程序使用一项用于用户提交反馈的功能。该功能允许用户提交他们的电子邮件地址、邮件主题及详细的反馈。然后,应用程序以用户提交的主题和反馈为邮件正文,从用户的电子邮件地址向feedback@wahh-app.com发送一封电子邮件。以下哪一种方法能够有效防御邮件注入攻击?

(a) 在邮件服务器上禁用邮件中继。

(b) 使用feedback@wahh-app.com硬编码RCPT TO字段。

(c) 确保用户提交的输入不包含任何换行符或其他SMTP元字符。

答:针对此应用程序功能的邮件注入攻击不需要邮件服务器支持邮件中继。如果其他邮件标头包含用户可控制的输入,硬编码RCPT TO字段也无法防范邮件注入,因为攻击者可以使用另一个RCPT TO行注入另一个收件人。在这种情况下,最有效的防御是严格确认所有用户提交的输入,以确保其中不包含任何转行符或其他SMTP元字符。

黑客攻防技术宝典Web实战篇第2版—第10章 测试后端组件相关推荐

  1. 黑客攻防技术宝典Web实战篇第2版—第7章 攻击会话管理

    7.1 状态要求 1.HTTP是无状态的,基于请求-响应模型,每条消息代表一个独立的事物. 2.大多数Web站点实际为Web应用程序,他们允许用户注册登录,购买销售,记住用户喜好,它们可以根据用户的单 ...

  2. 黑客攻防技术宝典Web实战篇第2版—第6章 攻击验证机制

    6.1 验证技术 1.执行验证采用不同的技术 6.2 验证机制设计缺陷 6.2.1 密码保密性不强 1.应用程序常常使用的密码形式 6.2.2 蛮力攻击登录 6.2.3 详细的失败消息 1.尝试不同用 ...

  3. 黑客攻防技术宝典Web实战篇第2版—第5章 避开客户端控件

    5.1 通过客户端传送数据 5.1.1 隐藏表单字段 1.通过对表单中的数据隐藏,暗中更改数值,造成恶意攻击. 5.1.2 HTTP cookie 1.HTTPcookie是通过客户端传送数据的另一种 ...

  4. 黑客攻防技术宝典Web实战篇第2版—第4章 解析应用程序

    4.1 枚举内容与功能 4.1.1 Web抓取 1.利用爬虫可获取页面,即深度搜索技术. 4.1.2 用户指定的抓取 1.用户使用它通过标准浏览器以常规方式浏览应用程序,试图枚举应用程序的所有功能. ...

  5. 黑客攻防技术宝典Web实战篇第2版—第3章 Web应用程序技术

    3.1 HTTP 3.1.1 HTTP请求 1.所有HTTP消息(请求与响应)中都包含一个或几个单行显示的消息头,然后是一个空白行,最后是消息主体(可选). 2.每个HTTP请求的第一行由三部分组成 ...

  6. 黑客攻防技术宝典Web实战篇第2版—第1章Web应用程序安全与风险

    1.1 Web应用程序的发展历程 早期万维网仅由站点组成,显示的是静态文档的信息库. 如今大多数站点是应用程序,服务器与浏览器之间双向信息传递. 随之而来的也有安全威胁. 1.1.1 Web应用程序的 ...

  7. 黑客攻防技术宝典Web实战篇第2版—第9章 攻击数据存储区

    9.1 注入解释型语言 1.解释型语言是一种在运动时有一个运动时组件解释语言代码并执行其中包含的指令的语言. 2.编译型语言:它的代码在生成时候转换成机器指令,然后在运行时直接由使用该语言的计算机处理 ...

  8. 黑客攻防技术宝典Web实战篇第2版—第8章 攻击访问控制

    8.1 常见漏洞 1.访问控制漏洞:应用程序允许攻击者执行某种攻击者没有资格执行的操作.各种漏之间的差异在于这个核心漏洞表现方式上的不同,以及检测他们所使用的技巧不同. 2.访问控制分类: ①垂直访问 ...

  9. 黑客攻防技术宝典Web实战篇第2版—第2章核心防御机制

    2.1 处理用户访问 1.大多数Web应用程序采用三层相互关联的安全机制处理用户访问: ①身份验证 ②会话管理 ③访问控制 2.1.1 身份验证 1.身份验证机制是应用程序处理用户访问的最基本机制,用 ...

最新文章

  1. oracle mod结果不正确,日常问题解决记录三:记一次Win10安装Oracle11g后遇到的问题...
  2. python open方法下file模块_python-linecache模块读取文件用法
  3. 【Linux】44.设置ubuntu电脑为简单的密码
  4. 数据可视化模块---Matplotlib
  5. java的继承_java中的继承(一)
  6. oracle备份 ram,Oracle备份时出现AIX系统的3D32B80D错误
  7. matlab cdf,Matlab 简单计算PDF和CDF | 学步园
  8. Java编辑环境搭建
  9. FPGA工作笔记0001---FPGA简介-强大的逻辑资源和恐怖的IO并行处理能力
  10. StringUtil.format使用介绍
  11. 智能小车52单片机c语言,基于STC89C52单片机的智能循迹小车设计
  12. tornado 源码分析 waker
  13. 技术人生:高山仰止,景行观止,虽不能至,我心向往之
  14. 99行拓扑优化matlab程序解读,99行拓扑优化 代码解析
  15. Apple Watch SE2 和Apple Watch SE 区别 苹果手表se2和se对比
  16. VB中Byval与Byref的区别。
  17. 等保三级核心-应用安全
  18. 团队协助 开源项目_Open Atrium 是一套开源的团队协作和知识管理系统
  19. 大数据培训ClickHouse表引擎
  20. 3GPP TS 23501-g51 中英文对照 | 4.4.7 MSISDN-less MO SMS Service

热门文章

  1. KD树(k-d tree)
  2. Oracle 11.2.0.3 [INS-41112] Specified network interface doesnt maintain connectivity across cluster
  3. 【Silverlight】Bing Maps学习系列(三):如何控制地图
  4. [导入]热烈祝贺实时数据库行业协会成立!
  5. Linux无法登陆,var目录权限修改导致SSH失败
  6. 火焰传感器感应有火亮灯代码_史上最全燃气壁挂炉故障代码,这个值得收藏
  7. 怎么用计算机看,如何巧妙的查看电脑使用痕迹
  8. 条码标签打印软件如何实现标签重复打印
  9. ArcGIS Python编程案例-电子资料链接
  10. 艾媒:ofo活跃用户规模为摩拜近2倍 每10辆共享单车7辆小黄车