Web安全测试漏洞场景
HTTP.sys 远程代码执行
测试类型:
基础结构测试
威胁分类:
操作系统命令
原因:
未安装第三方产品的最新补丁或最新修订程序
安全性风险:
可能会在 Web 服务器上运行远程命令。这通常意味着完全破坏服务器及其内容
技术描述:
通过 IIS 6 引入的 HTTP 协议堆栈 (HTTP.sys) 错误地解析了特制的 HTTP 请求。因此,远程攻击者可能执行拒绝服务供给,并可在系统帐户的环境中执行任意代码。该漏洞会影响 Windows 7、Windows Server 2008R2、Windows 8、Windows Server 2012、Windows 8.1 和 Windows Server 2012 R2 上安装的 IIS。Microsoft 发布了通过修改 Windows HTTP 堆栈处理请求的方式来解决漏洞的更新。
利用的样本:
GET / HTTP/1.1
Host: [SERVER]
Range: bytes=0-18446744073709551615
SQL 盲注
测试类型:
应用程序级别测试
威胁分类:
SQL 注入
原因:
未对用户输入正确执行危险字符清理
安全性风险:
可能会查看、修改或删除数据库条目和表
技术描述:
该软件使用受外部影响的输入来构造 SQL 命令的全部或一部分,但是它未能对可能在 SQL 命令发送到数据库时修改该命令的元素进行无害化处理。如果在用户可控制的输入中没有对 SQL 语法充分地除去或引用,那么生成的 SQL 查询可能会导致将这些输入解释为 SQL 而不是普通用户数据。这可用于修改查询逻辑以绕过安全性检查,或者插入其他用于修改后端数据库的语句,可能包括执行系统命令。
例如,假设有一个带有登录表单的 HTML 页面,该页面最终使用用户输入对数据库运行以下 SQL 查询:
SELECT * FROM accounts WHERE username='$user' AND password='$pass'
两个变量($user 和 $pass)包含了用户在登录表单中输入的用户凭证。如果用户输入“jsmith”作为用户名,并输入“Demo1234”作为密码,那么 SQL 查询将如下所示:
SELECT * FROM accounts WHERE username='jsmith' AND password='Demo1234'
但如果用户输入“'”(单撇号)作为用户名,输入“'”(单撇号)作为密码,那么 SQL 查询将如下所示:
SELECT * FROM accounts WHERE username=''' AND password='''
当然,这是格式错误的 SQL 查询,并将调用错误消息,而该错误消息可能会在 HTTP 响应中返回。通过此类错误,攻击者会知道 SQL 注入已成功,这样攻击者就会尝试进一步的攻击媒介。SQL 盲注类似于 SQL 注入。不同之处在于,要利用该攻击,攻击者无需寻找响应中的 SQL 错误。因此,AppScan 用于识别该攻击的方法也不同。AppScan 会查找易受 SQL 注入(通过多个请求来操纵应用程序的逻辑,而不是尝试调用 SQL 错误)影响的脚本。
该技巧需要发送特定请求,其中易受攻击的参数(嵌入在 SQL 查询中的参数)进行了相应修改,以便响应中会指示是否在 SQL 查询上下文中使用数据。该修改涉及将 AND 布尔表达式与原始字符串一起使用,使其一时求值为 True,一时求值为 False。在一种情况下,净结果应该与原始结果相同(登录成功),而在另一种情况下,结果应该完全不同(登录失败)。在某些少见的情况下,求值为 True 的 OR 表达式也可能很有用。如果原始数据是数字,可以使用更简单的花招。假设原始数据为 123。此数据可以在一个请求中替换为 0+123,而在另一个请求中替换为 456+123。第一个请求的结果应该与原始结果相同,第二个请求的结果应该不同(因为得出的数字是 579)。在某些情况中,我们仍需要上面所说明的攻击版本(使用 AND 和 OR),但并不转义字符串上下文。
SQL 盲注背后的概念是,即使不直接从数据库接收数据(以错误消息或泄漏的信息的形式),也可能从数据库中抽取数据(每次一个比特),或以恶意方式修改查询。其原理在于,应用程序的行为(返回与原始响应相同或不同的响应)可以提供有关所求值的(已修改)查询的单比特信息,也就是说,攻击者有可能设计出一个 SQL 布尔表达式,其求值(单比特)通过应用程序行为(与原始行为相同/不同)来造成破坏。
查询中的密码参数
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
查询字符串中传递了敏感输入字段(例如用户名、密码和信用卡号)
安全性风险:
可能会窃取查询字符串中发送的敏感数据,例如用户名和密码
技术描述:
在应用程序测试过程中,检测到查询字符串中接收到密码参数。由于登录过程所用的部分输入字段(例如:用户名、密码、电子邮件地址、社会保险号码,等等)是个人敏感信息,建议将其放在请求的主体部分或加密连接(如 SSL)中来发送到服务器。任何通过查询字符串传给服务器的信息都可能被窃,稍后可用来电子欺骗身份或伪装用户。此外,若干隐私权法规指出,用户凭证之类的敏感信息一律以加密方式传给网站。
跨站点脚本编制
测试类型:
应用程序级别测试
威胁分类:
跨站点脚本编制
原因:
未对用户输入正确执行危险字符清理
安全性风险:
可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务
技术描述:
AppScan 检测到应用程序未对用户可控制的输入正确进行无害化处理,就将其放置到充当 Web 页面的输出中。这可被跨站点脚本编制攻击利用。
在以下情况下会发生跨站点脚本编制 (XSS) 脆弱性:
[1] 不可信数据进入 Web 应用程序,通常来自 Web 请求。
[2] Web 应用程序动态生成了包含此不可信数据的 Web 页面。
[3] 页面生成期间,应用程序不会禁止数据包含可由 Web 浏览器执行的内容,例如 JavaScript、HTML 标记、HTML 属性、鼠标事件、Flash 和 ActiveX。
[4] 受害者通过 浏览器访问生成的 Web 页面,该页面包含已使用不可信数据注入的恶意脚本。
[5] 由于脚本来自 Web 服务器发送的 Web 页面,因此受害者的 Web 浏览器在 Web 服务器的域的上下文中执行恶意脚本。
[6] 这实际违反了 Web 浏览器的同源策略的意图,该策略声明一个域中的脚本不应该能够访问其他域中的资源或运行其他域中的代码。
一旦注入恶意脚本后,攻击者就能够执行各种恶意活动。攻击者可能将私有信息(例如可能包含会话信息的 cookie)从受害者的机器传输给攻击者。攻击者可能以受害者的身份将恶意请求发送到 Web 站点,如果受害者具有管理该站点的管理员特权,这可能对站点尤其危险。
网络钓鱼攻击可用于模仿可信站点,并诱导受害者输入密码,从而使攻击者能够危及受害者在该 Web 站点上的帐户。最后,脚本可利用 Web 浏览器本身中的脆弱性,可能是接管受害者的机器(有时称为“路过式入侵”)。
主要有三种类型的 XSS:
类型 1:反射的 XSS(也称为“非持久性”)
服务器直接从 HTTP 请求中读取数据,并将其反射回 HTTP 响应。在发生反射的 XSS 利用情况时,攻击者会导致受害者向易受攻击的 Web 应用程序提供危险内容,然后该内容会反射回受害者并由 Web 浏览器执行。传递恶意内容的最常用机制是将其作为参数包含在公共发布或通过电子邮件直接发送给受害者的 URL 中。以此方式构造的 URL 构成了许多网络钓鱼方案的核心,攻击者借此骗取受害者的信任,使其访问指向易受攻击的站点的 URL。在站点将攻击者的内容反射回受害者之后,受害者的浏览器将执行该内容。
类型 2:存储的 XSS(也称为“持久性”)
应用程序在数据库、消息论坛、访问者日志或其他可信数据存储器中存储危险数据。在以后某个时间,危险数据会读回到应用程序并包含在动态内容中。从攻击者的角度来看,注入恶意内容的最佳位置是向许多用户或特别感兴趣的用户显示的区域。感兴趣的用户通常在应用程序中具有较高的特权,或者他们会与对攻击者有价值的敏感数据进行交互。如果其中某个用户执行恶意内容,那么攻击者就有可能能够以该用户的身份执行特权操作,或者获取对属于该用户的敏感数
据的访问权。例如,攻击者可能在日志消息中注入 XSS,而管理员查看日志时可能不会正确处理该消息。
类型 0:基于 DOM 的 XSS
在基于 DOM 的 XSS 中,客户机执行将 XSS 注入页面的操作;在其他类型中,注入操作由服务器执行。基于 DOM 的XSS 中通常涉及发送到客户机的由服务器控制的可信脚本,例如,在用户提交表单之前对表单执行健全性检查的Javascript。如果服务器提供的脚本处理用户提供的数据,然后将数据注入回 Web 页面(例如通过动态 HTML),那么基于 DOM 的 XSS 就有可能发生。以下示例显示了在响应中返回参数值的脚本。
参数值通过使用 GET 请求发送到脚本,然后在 HTML 中嵌入的响应中返回。
[REQUEST]
GET /index.aspx?name=JSmith HTTP/1.1
[RESPONSE]
HTTP/1.1 200 OK
Server: SomeServer
Date: Sun, 01 Jan 2002 00:31:19 GMT
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 27
<HTML>
Hello JSmith
</HTML>
攻击者可能会利用类似以下情况的攻击:
[ATTACK REQUEST]
GET /index.aspx?name=>"'><script>alert('PWND')</script> HTTP/1.1
2017/5/27 390
TOC
[ATTACK RESPONSE]
HTTP/1.1 200 OK
Server: SomeServer
Date: Sun, 01 Jan 2002 00:31:19 GMT
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 83
<HTML>
Hello >"'><script>alert('PWND')</script>
</HTML>
在这种情况下,JavaScript 代码将由浏览器执行(>"'> 部分在此处并不相关)。
Unix 文件参数变更
测试类型:
应用程序级别测试
威胁分类:
路径遍历
原因:
未对用户输入正确执行危险字符清理
未检查用户输入中是否包含“..”(两个点)字符串
安全性风险:
可能会查看 Web 服务器(在 Web 服务器用户的许可权限制下)上的任何文件(例如,数据库、用户信息或配置文件)的内容
技术描述:
软件使用外部输入来构造旨在识别位于受限制父目录中的文件或目录的路径名,但是该软件没有对路径名中可导致路径解析到受限制目录之外的位置的元素进行无害化处理。许多文件操作需要在受限制目录中执行。通过使用特殊元素(例如“..”和“/”分隔符),攻击者就可能逃脱到受限制位置之外,从而访问系统上其他位置的文件或目录。其中一个最常用的特殊元素是“../”序列,在最现代的操作系统中,该序列解释为当前位置的父目录。这称为相对路径遍历。路径遍历包括使用绝对路径名,例如“/usr/local/bin”,这有可能用于访问意外文件。这称为绝对路径遍历。在许多编程语言中,通过注入空字节(0 或 NUL),攻击者就能够截断生成的文件名以扩大攻击的范围。例如,软件可向任何路径名添加“.txt”,从而将攻击者限制到文本文件,但空注入可有效除去此限制。
链接注入(便于跨站请求伪造)
测试类型:
应用程序级别测试
威胁分类:
内容电子欺骗
原因:
未对用户输入正确执行危险字符清理
安全性风险:
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务
可能会在 Web 服务器上上载、修改或删除 Web 页面、脚本和文件
技术描述:
该软件使用受外部影响的输入来构造命令、数据结构或记录的全部或一部分,但未能对可能修改其解析或解释方式的元素进行无害化处理。
“链接注入”是通过在某个站点中嵌入外部站点的 URL,或者在易受攻击的站点中嵌入脚本的 URL,从而修改该站点的内容。在易受攻击的站点中嵌入 URL 后,攻击者能够将其作为发起针对其他站点(以及针对这个易受攻击的站点本身)的攻击的平台。
其中一些可能的攻击需要用户在攻击期间登录站点。通过从易受攻击的站点本身发起这些攻击,攻击者成功的可能性更高,因为用户更倾向于登录。
“链接注入”脆弱性是未对用户输入进行充分清理所导致的结果,该输入以后会在站点响应中返回给用户。这样一来,攻击者能够将危险字符注入响应中,从而有可能嵌入 URL,以及做出其他可能的内容修改。
以下是“链接注入”的示例(我们假设站点“www.vulnerable.com”有一个名为“name”的参数,用于问候用户)。
下列请求:HTTP://www.vulnerable.com/greet.asp?name=John Smith
会生成下列响应:
<HTML>
<BODY>
Hello, John Smith.
</BODY>
</HTML>
然而,恶意的用户可以发送下列请求:
HTTP://www.vulnerable.com/greet.asp?name=<IMG SRC="http://www.ANY-SITE.com/ANY-SCRIPT.asp">
这会返回下列响应:
<HTML>
<BODY>
Hello, <IMG SRC="http://www.ANY-SITE.com/ANY-SCRIPT.asp">.
</BODY>
</HTML>
如以上示例所示,攻击者有可能导致用户浏览器向攻击者企图攻击的几乎任何站点发出自动请求。因此,“链接注入”脆弱性可用于发起几种类型的攻击:
[-] 跨站点请求伪造
[-] 跨站点脚本编制
[-] 网络钓鱼
通过框架钓鱼
测试类型:
应用程序级别测试
威胁分类:
内容电子欺骗
原因:
未对用户输入正确执行危险字符清理
安全性风险:
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
技术描述:
网络钓鱼是一种社会工程技巧,其中攻击者伪装成受害者可能会与其进行业务往来的合法实体,以便提示用户透露某些机密信息(往往是认证凭证),而攻击者以后可以利用这些信息。网络钓鱼在本质上是一种信息收集形式,或者说是对信息的“渔猎”。
攻击者有可能注入含有恶意内容的 frame 或 iframe 标记。如果用户不够谨慎,就有可能浏览该标记,却意识不到自己会离开原始站点而进入恶意的站点。之后,攻击者便可以诱导用户再次登录,然后获取其登录凭证。由于伪造的站点嵌入在原始站点中,这样攻击者的网络钓鱼企图就披上了更容易让人轻信的外衣。
Missing "Content-Security-Policy" header
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
Web 应用程序编程或配置不安全
安全性风险:
可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
Missing "X-Content-Type-Options" header
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
Web 应用程序编程或配置不安全
安全性风险:
可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
Missing "X-XSS-Protection" header
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
Web 应用程序编程或配置不安全
安全性风险:
可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
受影响产品:
SSL 请求中的查询参数
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
查询参数通过 SSL 进行了传递,并且可能包含敏感信息
技术描述:
在应用程序测试期间,检测到通过 SSL 发送的请求包含在 HTTP 请求的 Query 部分中传输的参数。发送请求时,可以使用浏览器的历史记录来显现 URL,其中包含查询参数名称和值。
由于加密请求的敏感性,建议您尽可能使用 HTTP POST(不带 URL 字符串中的参数),以便避免向其他人泄露 URL和参数值。
查询中接受的主体参数
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
Web 应用程序编程或配置不安全
安全性风险:
可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
技术描述:
GET 请求设计的目的在于查询服务器,而 POST 请求用于提交数据。但是,除了技术目的之外,攻击查询参数比攻击主体参数更容易,因为向原始站点发送链接或在博客或注释中发布链接更容易,而且得到的结果比另一种方法更好,为了攻击带有主体参数的请求,攻击者需要创建其中包含表单的页面,当受害者访问表单时就会提交表单。说服受害者访问他不了解的页面比让受害者访问原始站点要难很多。因此,不建议支持可到达查询字符串的主体参数。
发现可高速缓存的 SSL 页面
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
浏览器可能已将敏感信息高速缓存
安全性风险:
可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
技术描述:
缺省情况下,大部分 Web 浏览器都配置成会在使用期间高速缓存用户的页面。 这表示也会高速缓存 SSL 页面。
不建议让 Web 浏览器保存任何 SSL 信息,因为当有漏洞存在时,可能会危及这个信息。
发现可高速缓存的登录页面
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
浏览器可能已将敏感信息高速缓存
安全性风险:
可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务
技术描述:
缺省情况下,大部分 Web 浏览器都配置成会在使用期间高速缓存用户的页面。 这表示也会高速缓存登录页面。
不建议让 Web 浏览器保存任何登录信息,因为当有漏洞存在时,可能会危及这个信息。
发现压缩目录
测试类型:
基础结构测试
威胁分类:
信息泄露
原因:
Web 应用程序编程或配置不安全
安全性风险:
可能会检索服务器端脚本的源代码,这可能会泄露应用程序逻辑及其他诸如用户名和密码之类的敏感信息
技术描述:
AppScan 找到了可能含有整个目录内容的压缩文件。这是通过安装压缩文件扩展名来请求目录名称而进行的,例如:GET /DIR1.zip HTTP/1.0 或 GET /DIR2.gz HTTP/1.0
这个文件可能含有目录的最新或过期内容。不论任何情况,恶意的用户都有可能通过猜测文件名,而得以访问源代码和不具特权的文件。
利用的样本:
http://[SERVER]/[DIR].zip
临时文件下载
测试类型:
基础结构测试
威胁分类:
可预测资源位置
原因:
在生产环境中留下临时文件
安全性风险:
可能会下载临时脚本文件,这会泄露应用程序逻辑及其他诸如用户名和密码之类的敏感信息
技术描述:
Web 服务器通常会使“公共网关接口(CGI)”文件扩展名(如 .pl)与 Perl 之类的某个处理程序相关联。 当 URL 路径结尾是 .pl 时,路径所指定的文件名会发送给 Perl 执行;文件内容不会返回给浏览器。 然而,当在适当的位置编辑脚本文件时,编辑器可以用新的文件扩展名来保存所编辑的脚本的备份副本,例如:.bak、.sav、.old、~ 等等。Web 服务器通常没有这些文件扩展名的特定处理程序。 如果攻击者请求这类文件,文件内容会直接发送到浏览器。
从虚拟目录下除去这些临时文件很重要,因为它们可能含有调试目的所用的敏感信息,也可能显露有并非当前逻辑,但仍可能受到利用的应用程序逻辑攻击。
缺少 HTTP Strict-Transport-Security 头
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
Web 应用程序编程或配置不安全
安全性风险:
可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
技术描述:
HTTP 严格传输安全 (HSTS) 是保护安全 (HTTPS) Web 站点不被降级到不安全 HTTP 的机制。该机制使 Web 服务器能指示器客户端(Web 浏览器或其他用户代理程序)在与服务器交互时始终使用安全 HTTPS 连接,而绝不使用不安全的 HTTP 协议。HTTP 严格传输安全策略由服务器用于通过名为“Strict-Transport-Security”的响应头与其客户机通信。该头的值为客户机应仅使用 HTTPS 访问服务器的时间段。其他头属性包括“includeSubDomains”和“preload”。
直接访问管理页面
测试类型:
应用程序级别测试
威胁分类:
可预测资源位置
原因:
Web 服务器或应用程序服务器是以不安全的方式配置的
安全性风险:
可能会升级用户特权并通过 Web 应用程序获取管理许可权
技术描述:
公共用户可以通过简单的链接来访问站点上的特定页面。不过,也有页面和脚本可能无法通过简
单的链接来访问(即未链接的页面和脚本)。攻击者也许能够通过猜测名称(例如 admin.php、admin.asp、admin.cgi、admin.html 等)来访问这些页面。
请求名称为“admin.php”的脚本的示例: http://[SERVER]/admin.php
不具备适当的授权,便不应允许访问管理脚本,因为攻击者可能会因而获取特许权利。
利用的样本:
http://[SERVER]/admin.php
http://[SERVER]/admin.asp
http://[SERVER]/admin.aspx
http://[SERVER]/admin.html
http://[SERVER]/admin.cfm
http://[SERVER]/admin.cgi
SSL 证书域名不匹配
测试类型:
基础结构测试
威胁分类:
传输层保护不足
原因:
Web 服务器或应用程序服务器是以不安全的方式配置的
安全性风险:
可能会阻止 Web 应用程序服务其他用户(拒绝服务)
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
技术描述:
SSL 证书包含的域名不符合所访问的站点。
配置错误的 SSL 证书有若干安全隐患:
- 拒绝服务:符合严格安全策略的用户无法浏览站点
- 网络钓鱼:恶意站点很容易伪装成合法站点,获取用户的证书信息
发现电子邮件地址模式
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
Web 应用程序编程或配置不安全
安全性风险:
可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
技术描述:
Spambot 搜寻因特网站点,开始查找电子邮件地址来构建发送自发电子邮件(垃圾邮件)的邮件列表。AppScan 检测到含有一或多个电子邮件地址的响应,可供利用以发送垃圾邮件。
而且,找到的电子邮件地址也可能是专用电子邮件地址,对于一般大众应是不可访问的。
发现可能的服务器路径泄露模式
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
未安装第三方产品的最新补丁或最新修订程序
安全性风险:
可能会检索 Web 服务器安装的绝对路径,这可能会帮助攻击者开展进一步攻击和获取有关 Web 应用程序文件系统结构的信息
技术描述:
AppScan 检测到含有文件绝对路径(例如:Windows 的 c:\dir\file,Unix 的 /dir/file)的响应。攻击者也许能够利用这项信息,从而访问到关于服务器机器目录结构的敏感信息,因而能够进一步攻击站点。
发现内部 IP 泄露模式
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
Web 应用程序编程或配置不安全
安全性风险:
可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
技术描述:
AppScan 检测到包含内部 IP 地址的响应。
内部 IP 定义为下列 IP 范围内的 IP:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
对攻击者而言,泄露内部 IP 非常有价值,因为它显示了内部网络的 IP 地址方案。知道内部网络的 IP 地址方案,可以辅助攻击者策划出对内部网络进一步的攻击。
应用程序错误
测试类型:
应用程序级别测试
威胁分类:
信息泄露
原因:
未对入局参数值执行适当的边界检查
未执行验证以确保用户输入与预期的数据类型匹配
安全性风险:
可能会收集敏感的调试信息
技术描述:
如果攻击者通过伪造包含非应用程序预期的参数或参数值的请求,来探测应用程序(如以下示例所示),那么应用程序可能会进入易受攻击的未定义状态。 攻击者可以从应用程序对该请求的响应中获取有用的信息,且可利用该信息,以找出应用程序的弱点。
例如,如果参数字段是单引号括起来的字符串(如在 ASP 脚本或 SQL 查询中),那么注入的单引号将会提前终止字符串流,从而更改脚本的正常流程/语法。
错误消息中泄露重要信息的另一个原因,是脚本编制引擎、Web 服务器或数据库配置错误。
以下是一些不同的变体:
[1] 除去参数
[2] 除去参数值
[3] 将参数值设置为空值
[4] 将参数值设置为数字溢出(+/- 99999999)
[5] 将参数值设置为危险字符,如 ' " \' \" ) ;
[6] 将某字符串附加到数字参数值
[7] 在参数名称后追加“.”(点)或“[]”(尖括号)
整数溢出
测试类型:
应用程序级别测试
威胁分类:
整数溢出
原因:
未对入局参数值执行适当的边界检查
未执行验证以确保用户输入与预期的数据类型匹配
安全性风险:
可能会收集敏感的调试信息
技术描述:
如果攻击者通过伪造包含非应用程序预期的参数或参数值的请求,来探测应用程序(如以下示例所示),那么应用程序可能会进入易受攻击的未定义状态。 攻击者可以从应用程序对该请求的响应中获取有用的信息,且可利用该信息,以找出应用程序的弱点。
例如,如果参数字段是单引号括起来的字符串(如在 ASP 脚本或 SQL 查询中),那么注入的单引号将会提前终止字符串流,从而更改脚本的正常流程/语法。
错误消息中泄露重要信息的另一个原因,是脚本编制引擎、Web 服务器或数据库配置错误。
以下是一些不同的变体:
[1] 除去参数
[2] 除去参数值
[3] 将参数值设置为空值
[4] 将参数值设置为数字溢出(+/- 99999999)
[5] 将参数值设置为危险字符,如 ' " \' \" ) ;
[6] 将某字符串附加到数字参数值
[7] 在参数名称后追加“.”(点)或“[]”(尖括号)