HTTP.sys远程代码执行
测试类型:基础结构测试
威胁分类:操作系统命令
原因:未安装第三方产品的最新补丁或最新修订程序
安全性风险:可能会在Web服务器上运行远程命令。这通常意味着完全破坏服务器及其内容
技术描述:通过IIS6引入的HTTP协议堆栈(HTTP.sys)错误地解析了特制的HTTP请求。因此,远程攻击者可能执行拒绝服务供给,并可在系统帐户的环境中执行任意代码。该漏洞会影响Windows7、WindowsServer2008R2、Windows8、WindowsServer2012、Windows8.1和WindowsServer2012R2上安装的IIS。Microsoft发布了通过修改WindowsHTTP堆栈处理请求的方式来解决漏洞的更新。
利用的样本:
GET/HTTP/1.1
Host:[SERVER]
Range:bytes=0-18446744073709551615
SQL盲注
测试类型:应用程序级别测试
威胁分类:SQL注入
原因:未对用户输入正确执行危险字符清理
安全性风险:可能会查看、修改或删除数据库条目和表
技术描述:该软件使用受外部影响的输入来构造SQL命令的全部或一部分,但是它未能对可能在SQL命令发送到数据库时修改该命令的元素进行无害化处理。如果在用户可控制的输入中没有对SQL语法充分地除去或引用,那么生成的SQL查询可能会导致将这些输入解释为SQL而不是普通用户数据。这可用于修改查询逻辑以绕过安全性检查,或者插入其他用于修改后端数据库的语句,可能包括执行系统命令。
例如,假设有一个带有登录表单的HTML页面,该页面最终使用用户输入对数据库运行以下SQL查询:
SELECT*FROMaccountsWHEREusername='$user'ANDpassword='$pass'
两个变量($user和$pass)包含了用户在登录表单中输入的用户凭证。如果用户输入“jsmith”作为用户名,并输入“Demo1234”作为密码,那么SQL查询将如下所示:
SELECT*FROMaccountsWHEREusername='jsmith'ANDpassword='Demo1234'
但如果用户输入“'”(单撇号)作为用户名,输入“'”(单撇号)作为密码,那么SQL查询将如下所示:
SELECT*FROMaccountsWHEREusername='''ANDpassword='''
当然,这是格式错误的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=JSmithHTTP/1.1
[RESPONSE]
HTTP/1.1200OK
Server:SomeServer
Date:Sun,01Jan200200:31:19GMT
Content-Type:text/html
Accept-Ranges:bytes
Content-Length:27
HelloJSmith
攻击者可能会利用类似以下情况的攻击:
[ATTACKREQUEST]
GET/index.aspx?name=>"'>alert('PWND')HTTP/1.1
2017/5/27390
TOC
[ATTACKRESPONSE]
HTTP/1.1200OK
Server:SomeServer
Date:Sun,01Jan200200:31:19GMT
Content-Type:text/html
Accept-Ranges:bytes
Content-Length:83
Hello>"'>alert('PWND')
在这种情况下,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=JohnSmith
会生成下列响应:
Hello,JohnSmith.
然而,恶意的用户可以发送下列请求:
HTTP://www.vulnerable.com/greet.asp?name=
这会返回下列响应:
Hello,.
如以上示例所示,攻击者有可能导致用户浏览器向攻击者企图攻击的几乎任何站点发出自动请求。因此,“链接注入”脆弱性可用于发起几种类型的攻击:
[-]跨站点请求伪造
[-]跨站点脚本编制
[-]网络钓鱼
通过框架钓鱼
测试类型:应用程序级别测试
威胁分类:内容电子欺骗
原因:未对用户输入正确执行危险字符清理
安全性风险:可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
技术描述:网络钓鱼是一种社会工程技巧,其中攻击者伪装成受害者可能会与其进行业务往来的合法实体,以便提示用户透露某些机密信息(往往是认证凭证),而攻击者以后可以利用这些信息。网络钓鱼在本质上是一种信息收集形式,或者说是对信息的“渔猎”。
攻击者有可能注入含有恶意内容的frame或iframe标记。如果用户不够谨慎,就有可能浏览该标记,却意识不到自己会离开原始站点而进入恶意的站点。之后,攻击者便可以诱导用户再次登录,然后获取其登录凭证。由于伪造的站点嵌入在原始站点中,这样攻击者的网络钓鱼企图就披上了更容易让人轻信的外衣。
Missing"Content-Security-Policy"header
测试类型:应用程序级别测试
威胁分类:信息泄露
原因:Web应用程序编程或配置不安全
安全性风险:可能会收集有关Web应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
Missing"X-Content-Type-Options"header
测试类型:应用程序级别测试
威胁分类:信息泄露
原因:Web应用程序编程或配置不安全
安全性风险:可能会收集有关Web应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息
Missing"X-XSS-Protection"header
测试类型:应用程序级别测试
威胁分类:信息泄露
原因:Web应用程序编程或配置不安全
安全性风险:可能会收集有关Web应用程序的敏感信息,如用户名、密码、机器名和/或敏感文件位置
可能会劝说初级用户提供诸如用户名、密码、信用卡号、社会保险号等敏感信息