Web安全测试的步骤
web安全简明实验教程

web安全简明实验教程Web安全实验教程实验一:Web安全实践实验步骤1:准备阶段确保已安装好所需的工具,如CA(Certificate Authority)证书和浏览器等。
步骤2:CA给浏览器厂商发公钥确保CA证书已经安装在浏览器中。
步骤3:阿里把公钥给CA,CA用自己的私钥加密阿里的公钥,返回给阿里使用阿里提供的公钥和CA的私钥进行加密,并将加密后的信息返回给阿里。
步骤4:用户用浏览器访问阿里的网站,阿里把用CA的私钥加密过的自己的公钥给用户用户在浏览器中输入阿里的网址,访问阿里的网站。
阿里将用CA的私钥加密过的公钥发送给用户。
步骤5:用户用浏览器中的CA公钥解密阿里公钥,正确配对则信任访问的网站用户在浏览器中使用CA的公钥对阿里公钥进行解密,如果解密成功且信息正确,则表示用户信任该网站。
实验二:Fiddler修改HTTP请求步骤1:打开Fiddler软件,并确保已经捕获到所需的HTTP请求。
步骤2:在菜单栏中单击“Rules”>“Automatic Breakpoint”>“Disable”,以禁用自动断点。
步骤3:在Fiddler界面中,找到并选中需要修改的HTTP请求。
步骤4:在右侧的“Inspectors”面板中,选择“Raw”选项卡,以查看请求的原始内容。
步骤5:根据需要对HTTP请求进行修改,如修改请求头、请求体或URL 等。
步骤6:修改完成后,重新发送请求以查看效果。
实验三:Fiddler修改HTTP响应——修改网页标题步骤1:打开Fiddler软件,并确保已经捕获到所需的HTTP响应。
步骤2:在Fiddler界面中,找到并选中需要修改的HTTP响应。
步骤3:在右侧的“Inspectors”面板中,选择“Raw”选项卡,以查看响应的原始内容。
步骤4:根据需要修改响应的内容,如网页标题、正文内容等。
步骤5:修改完成后,重新发送响应以查看效果。
如何进行Web应用程序的安全测试

如何进行Web应用程序的安全测试随着互联网的快速发展,Web应用程序在我们的日常生活和工作中扮演着越来越重要的角色。
然而,由于Web应用程序的复杂性和普遍存在的安全漏洞,保证Web应用程序的安全性成为一项紧迫的任务。
本文将介绍如何进行Web应用程序的安全测试,以确保其免受潜在的黑客攻击和数据泄露。
1. 确定测试目标在进行Web应用程序的安全测试之前,首先需要明确测试的目标。
这包括确定要测试的具体功能,确定测试的时间范围,以及定义测试的成功标准。
通过明确测试目标,可以更加有效地组织测试活动,并确保测试的全面性和准确性。
2. 识别潜在的安全漏洞在进行Web应用程序的安全测试时,需要对潜在的安全漏洞进行识别和分析。
这包括常见的漏洞类型,如跨站脚本攻击(XSS)、跨站请求伪造(CSRF)和SQL注入等。
通过使用专业的安全测试工具,如渗透测试工具和漏洞扫描器,可以发现并定位这些潜在的安全漏洞。
3. 进行渗透测试渗透测试是Web应用程序安全测试的重要组成部分。
通过模拟黑客攻击,渗透测试可以帮助发现系统中的弱点并评估其对真实攻击的抵抗力。
在进行渗透测试时,可以尝试使用各种攻击技术,如暴力破解、参数篡改和恶意文件上传等,以测试Web应用程序的安全性。
4. 编写安全测试报告在完成Web应用程序的安全测试后,需要根据测试结果编写安全测试报告。
这份报告应包括测试的目标、测试方法、测试结果以及建议的修复措施。
通过编写详细的安全测试报告,可以帮助开发人员和系统管理员更好地了解系统中存在的安全问题,并采取相应的措施来修复这些问题。
5. 定期进行安全测试Web应用程序的安全性需要得到持续的关注和保护。
因此,定期进行安全测试是非常重要的。
通过定期的安全测试,可以发现和修复新的安全漏洞,提高Web应用程序的整体安全性。
在进行定期安全测试时,可以结合自动化测试工具和手动测试方法,以确保测试的全面性和准确性。
总结:通过明确测试目标,识别潜在的安全漏洞,进行渗透测试,编写安全测试报告以及定期进行安全测试,可以有效地提高Web应用程序的安全性。
WEB端测试流程

WEB端测试流程1.需求分析:测试团队首先会通读网站的需求文档,了解网站的功能要求、用户界面设计、系统性能等方面的要求。
2.测试计划编制:根据需求分析的结果,测试团队制定测试计划,包括测试的范围、目标、时间安排等。
3.测试用例设计:测试团队根据需求文档编写测试用例,用于测试网站的各项功能。
测试用例应包括输入数据、操作步骤和预期结果等。
4. 环境准备:测试团队准备测试环境,包括搭建服务器、安装数据库、配置Web服务器等。
5.功能测试:测试团队开始进行功能测试,测试网站的各项功能是否符合需求,包括用户注册、登录、功能等。
测试人员按照测试用例进行测试,并记录测试结果。
6.接口测试:测试团队对网站的接口进行测试,包括与数据库的交互、第三方服务的接口等。
测试人员模拟不同的请求和响应,验证接口的正确性和稳定性。
7.性能测试:测试团队对网站的性能进行测试,包括并发用户数、载入时间、响应速度等指标的测试。
测试人员使用性能测试工具模拟多用户同时访问网站,观察网站是否能承受高负载,并记录测试结果。
8.安全测试:测试团队对网站的安全性进行测试,包括漏洞扫描、授权认证、数据加密等方面的测试。
测试人员尝试入侵网站,检测网站是否存在安全隐患,并记录测试结果。
9. 兼容性测试:测试团队对网站在不同浏览器、不同设备上的兼容性进行测试,包括Windows、Mac、iOS、Android等平台的兼容性测试。
测试人员使用不同的设备和浏览器访问网站,并验证网页的显示和功能是否正常。
10.用户体验测试:测试团队进行用户体验测试,测试网站的界面设计、操作流畅性等方面的体验。
测试人员模拟用户的行为,使用网站进行操作,并记录测试结果。
11.错误报告编写:测试团队根据测试过程中发现的问题,编写错误报告。
错误报告应包括问题的描述、重现步骤、影响程度等信息。
测试人员还可以提出改进建议。
12.问题跟踪与修复:开发团队收到错误报告后,对问题进行跟踪与修复。
web安全测试方案

web安全测试方案为了确保网络系统的安全性,保护用户的个人信息和敏感数据,Web安全测试是一项至关重要的工作。
本文将介绍一种Web安全测试方案,用于评估和改进网站的安全性。
一、测试目标和范围Web安全测试的首要目标是发现潜在的漏洞和弱点,以及评估现有安全措施的有效性。
测试的范围包括但不限于以下几个方面:1. 网络架构和配置:测试网络架构和相关配置的安全性。
2. 系统和应用程序:测试各种系统和应用程序中的安全漏洞。
3. 数据库和存储:测试数据库和存储系统中的安全性。
4. 用户验证和访问控制:测试用户验证和访问控制机制的有效性。
5. 防火墙和入侵检测系统:测试防火墙和入侵检测系统是否正常工作。
6. 传输层安全:测试传输层安全协议和机制的可靠性。
二、测试方法和工具在进行Web安全测试时,可以采用以下多种方法和工具:1. 黑盒测试:模拟攻击者的行为,通过对系统进行渗透测试,评估系统的漏洞和弱点。
2. 白盒测试:对系统的内部结构和代码进行审查,检查潜在的安全风险。
3. 网络扫描:使用自动化工具扫描目标系统,识别可能存在的漏洞。
4. 代码审查:仔细审查系统的源代码,发现潜在的安全问题。
5. 社会工程学测试:通过模拟攻击者的社交工程手段,测试用户的安全意识和反应能力。
三、测试阶段和步骤Web安全测试应该按照以下几个阶段进行:1. 确定测试目标和范围:明确测试的目标和范围,并制定测试计划。
2. 收集信息和准备工作:收集与目标系统相关的信息,包括网络架构、应用程序、数据库等。
3. 漏洞扫描和渗透测试:使用合适的工具对系统进行扫描,识别潜在的漏洞,并进行渗透测试。
4. 审查代码和配置:对系统的内部代码和配置文件进行审查,查找可能存在的安全问题。
5. 社会工程学测试:通过向系统用户发送钓鱼邮件、进行电话欺诈等方式,测试用户的反应和安全意识。
6. 报告编写和总结:对测试结果进行整理和总结,并编写测试报告,提供改进建议和安全加固措施。
如何进行Web应用安全测试

如何进行Web应用安全测试Web应用安全测试是确保Web应用程序在面对各种潜在威胁和攻击时能保持安全的过程。
在当今数字化时代,Web应用安全测试对于保护用户敏感信息和防范黑客入侵至关重要。
在本文中,将介绍如何进行Web应用安全测试。
以下是一些步骤和方法,以确保Web应用程序的安全性。
1. 确定测试目标在进行Web应用安全测试之前,首先需要明确测试目标。
这可能包括检测潜在漏洞、验证安全策略和规则的有效性,或者评估应用程序对不同类型的攻击的抵御能力。
2. 收集信息在进行Web应用安全测试之前,必须对目标应用程序进行详细了解。
这包括收集有关应用程序的信息,如架构、功能和技术。
此外,还需要获取其源代码、开发文档和其他相关文档,以便更全面地了解应用程序的工作方式。
3. 漏洞扫描进行漏洞扫描是Web应用安全测试的重要步骤。
漏洞扫描器是一种自动化工具,可检测应用程序中的常见漏洞和弱点。
这些漏洞可能包括跨站脚本攻击(XSS)、SQL注入、跨站请求伪造(CSRF)等。
漏洞扫描器可以帮助发现可能的漏洞,并提供修复建议。
4. 渗透测试除了漏洞扫描之外,渗透测试是Web应用安全测试的另一个重要步骤。
渗透测试是一种手动测试方法,旨在模拟真正的黑客攻击。
通过渗透测试,可以发现漏洞和弱点,并评估应用程序对各种攻击的脆弱性。
这种测试方法需要具备专业的技术知识和经验。
5. 安全代码审查安全代码审查是评估应用程序安全性的一种方法。
它涉及对应用程序代码的仔细检查,以发现可能存在的安全漏洞。
安全代码审查可以手动进行,也可以使用自动化工具辅助。
通过审查代码,可以更好地理解应用程序的内部工作方式,并评估其安全性。
6. 认证和授权测试认证和授权是Web应用程序安全的核心方面。
在测试过程中,应确保应用程序在用户认证和授权方面的功能正常运作,并且不容易被绕过或篡改。
测试范围可能包括密码强度检测、会话管理、访问控制等方面。
7. 数据安全性测试在测试过程中,应确保应用程序对用户输入的数据进行适当的验证和过滤,以防止各种形式的攻击,如SQL注入或跨站脚本攻击。
web渗透测试工作流程

Web渗透测试工作流程
Web渗透测试是指通过模拟外部攻击行为,对Web应用程序进行安全性评估和漏洞检测的过程。
以下是一般Web渗透测试的工作流程:
1. 收集信息:收集目标网站的信息,包括网站域名、IP 地址、Web应用程序版本、操作系统等。
可以通过搜索引擎、漏洞扫描器、Web应用程序扫描器等工具获取。
2. 识别漏洞:通过收集到的信息和手动分析网站代码,识别可能存在的漏洞,例如SQL注入、XSS漏洞、文件包含漏洞等。
3. 尝试利用漏洞:利用已知的漏洞利用工具或手动编写脚本,尝试利用漏洞获取敏感信息或执行恶意代码。
4. 确认漏洞:通过进一步的测试和验证,确认漏洞是否真实存在,并评估漏洞的影响范围和危害程度。
5. 记录报告:记录测试过程和发现的漏洞,编写测试报告,包括测试目的、测试方法、测试结果、漏洞描述、建议和建议解决方案等。
6. 提交报告:将测试报告提交给相关人员,包括Web应用程序管理员、开发人员等,以便及时修复漏洞和加强安全性。
以上是一般Web渗透测试的工作流程,具体的测试流程
可能会因项目需求和Web应用程序的不同而有所差异。
在测试过程中需要注意保护目标网站的安全性和隐私性,避免对正常用户造成影响和损失。
如何进行 Web 应用安全测试

如何进行 Web 应用安全测试Web 应用安全测试是保证软件质量和用户信息安全的重要环节。
本文将会结合Web应用的设计、架构、开发等方面,从以下几个方面详细介绍如何进行Web应用安全测试。
一、安全测试的基本知识安全测试是软件测试中的一个重要部分,目的是评估Web应用的不同层次上的缺陷和安全风险,确定是否存在漏洞,并对系统中的漏洞进行修复。
其中,安全测试的测试目的主要是模拟各种攻击,例如XSS Cross-Site Scripting(跨站脚本攻击)和SQL Injection Injection(SQL注入攻击),以评估应用程序在安全方面的能力。
为了对Web应用进行安全测试,您需要使用一些安全测试工具和技术。
这些工具和技术包括:漏洞扫描器、安全评估工具、安全测试框架、构建安全测试环境以及数据攻击技术和工具。
漏洞扫描器漏洞扫描器是一种检测Web应用漏洞的工具,通过对Web应用进行自动化扫描,检测可以用于攻击Web应用的漏洞,并产生漏洞报告。
安全评估工具安全评估工具是一种帮助测试人员识别和评估Web应用程序安全的工具。
这些工具通常可以检测出安全漏洞,如跨站脚本、SQL注入、文件包括漏洞等。
安全测试框架安全测试框架可以帮助您构建完整的安全测试环境,提供复杂的攻击和防御场景,并帮助您创建详细的漏洞报告。
构建安全测试环境构建安全测试环境是进行Web应用安全测试的关键步骤。
在安全测试过程中,您需要创建一个具有漏洞的虚拟测试环境,以便对应用程序进行尽可能真实的测试。
数据攻击技术和工具测试人员在进行Web应用程序的安全测试时,需要使用各种数据攻击技术和工具。
例如,在SQL注入测试期间,测试人员需要使用SQL注入工具,以模拟SQL注入攻击以及检测漏洞。
二、Web应用的设计和架构Web应用的设计和架构对于安全测试的结果至关重要。
很多Web应用在设计时就考虑了其安全性,采取了一些有效的安全保障措施,从而使得其在安全层面上存在一定的稳定性。
web渗透测试流程

web渗透测试流程
Web渗透测试是一项评估web应用程序安全性的过程,它可以帮助企业检测和修复web应用程序中的漏洞,以确保其不受到黑客攻击。
下面是一些常用的web渗透测试流程:
1. 收集信息:通过搜索引擎、社交网络、WHOIS记录和其他公
共信息源收集关于目标网站的信息。
这些信息包括主机名、IP地址、服务器类型和版本、网站结构、登录页面和其他敏感页面的URL等。
2. 识别目标:使用扫描工具和手动探测技术,识别目标网站上
的漏洞和安全问题。
这些技术包括端口扫描、漏洞扫描、SQL注入测试、XSS测试、CSRF测试和文件上传测试等。
3. 渗透测试:通过模拟攻击者的攻击行为,测试目标网站的安
全性。
渗透测试的目的是发现并证明目标网站存在的漏洞,以便帮助企业修复这些漏洞并保护其网站不受攻击。
4. 报告和建议:根据测试结果,编写详细的报告,描述发现的
漏洞和建议修复方法。
建议包括如何修复漏洞、如何加强安全措施和如何提高员工安全意识等。
5. 修复和验证:企业根据测试报告中的建议,修复已发现的漏
洞和问题,并重新测试以确保问题已得到解决。
验证测试的目的是确认修复措施有效并确保网站已经变得更加安全。
综上所述,web渗透测试是一项非常重要的安全评估活动,它可以帮助企业保护其网站不受攻击,从而保护企业的财产和声誉。
- 1 -。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安全测试方面应该参照spi的web安全top 10来进行。
目前做软件测试人员可能对安全性测试了解不够,测试结果不是很好。
如果经验不足,测试过程中可以采用一些较专业的web安全测试工具,如WebInspect、Acunetix.Web.Vulerability.Scanner等,不过自动化web安全测试的最大缺陷就是误报太多,需要认为审核测试结果,对报告进行逐项手工检测核对。
对于web安全的测试用例,可以参照top 10来写,如果写一个详细的测试用例,还是比较麻烦的,建议采用安全界常用的web渗透报告结合top10来写就可以了。
现在有专门做系统和网站安全检测的公司,那里做安全检测的人的技术都很好,大多都是红客。
再补充点,网站即使站点不接受信用卡支付,安全问题也是非常重要的。
Web 站点收集的用户资料只能在公司内部使用。
如果用户信息被黑客泄露,客户在进行交易时,就不会有安全感。
目录设置Web 安全的第一步就是正确设置目录。
每个目录下应该有 index.html 或main.html 页面,这样就不会显示该目录下的所有内容。
我服务的一个公司没有执行这条规则。
我选中一幅图片,单击鼠标右键,找到该图片所在的路径"…com/objects/images".然后在浏览器地址栏中手工输入该路径,发现该站点所有图片的列表。
这可能没什么关系。
我进入下一级目录"…com/objects" ,点击jackpot.在该目录下有很多资料,其中引起我注意的是已过期页面。
该公司每个月都要更改产品价格,并且保存过期页面。
我翻看了一下这些记录,就可以估计他们的边际利润以及他们为了争取一个合同还有多大的降价空间。
如果某个客户在谈判之前查看了这些信息,他们在谈判桌上肯定处于上风。
SSL很多站点使用 SSL 进行安全传送。
你知道你进入一个 SSL 站点是因为浏览器出现了警告消息,而且在地址栏中的HTTP 变成HTTPS.如果开发部门使用了SSL,测试人员需要确定是否有相应的替代页面(适用于3.0 以下版本的浏览器,这些浏览器不支持SSL.当用户进入或离开安全站点的时候,请确认有相应的提示信息。
是否有连接时间限制?超过限制时间后出现什么情况?登录有些站点需要用户进行登录,以验证他们的身份。
这样对用户是方便的,他们不需要每次都输入个人资料。
你需要验证系统阻止非法的用户名/口令登录,而能够通过有效登录。
用户登录是否有次数限制?是否限制从某些 IP 地址登录?如果允许登录失败的次数为3,你在第三次登录的时候输入正确的用户名和口令,能通过验证吗?口令选择有规则限制吗?日志文件在后台,要注意验证服务器日志工作正常。
日志是否记所有的事务处理?是否记录失败的注册企图?是否记录被盗信用卡的使用?是否在每次事务完成的时候都进行保存?记录IP 地址吗?记录用户名吗?脚本语言脚本语言是常见的安全隐患。
每种语言的细节有所不同。
有些脚本允许访问根目录。
其他只允许访问邮件服务器,但是经验丰富的黑客可以将服务器用户名和口令发送给他们自己。
找出站点使用。
实战Web安全测试之HTTP截断(走私漏洞篇)在本文中,我们将详细为读者介绍针对HTTP截断和HTTP走私攻击的安全测试技术。
我们将通过实例演示如何利用HTTP协议的某些特性,或者利用Web应用程序的弱点或者不同代理对HTTP消息的解释也不相同的特点来发动这两种攻击。
一、HTTP截断/走私漏洞概述本文遏制,我们将分析针对特定的HTTP报头的两种不同的攻击技术:HTTP 截断和HTTP走私攻击。
对于HTTP截断攻击而言,它是利用了缺乏输入消毒措施的漏洞,该漏洞允许入侵者向应用程序响应的头部插入CR和LF字符,从而将响应分割为两个不同的HTTP消息。
该攻击的目标既不同于缓存投毒,也区别于跨站脚本攻击。
对于第二种攻击方法,攻击者利用了这样的一个事实,即一些专门精心制作的HTTP消息可能会随着接收它们的代理的不同,而作不同的解析和解释。
HTTP走私技术要求对处理HTTP消息的各种代理相当熟悉,否则无法发动这种攻击。
下面我们介绍这些漏洞的黑盒测试和灰盒测试技术。
二、HTTP截断攻击黑盒测试一些web应用程序会使用部分用户输入来生成它们的响应头部的某些值,这方面最简单的例子就是重定向了,因为目标URL依赖于用户提交的某些值。
举例来说,假如用户被要求在标准web接口和高级web接口之间做出选择,然后,选择的结果将作为一个参数传递,并且这个参数将用于触发重定向到相应的页面的应答头中。
更确切地说,如果该参数interface的值是advanced,那么应用程序将响应下列内容:图1收到这个消息后,浏览器会把用户引向Location头部规定的页面。
然而,如果应用程序没有对用户输入进行过滤的话,攻击者就可以在参数 interface中插入序列%0d%0a,而该序列代表的则是用于分割各行的CRLF(回车换行)序列。
这样一来,攻击者将能够触发一个响应,重要的是任何解析器(例如介于用户和Web应用之间的web缓存)都会把这个响应会被解释为两个不同的响应。
所以,攻击者就可以通过给这个web缓存“投毒”以使它为后续的请求中提供虚假的内容。
例如,在我们前面的例子中,假设攻击者将下列内容作为参数interface进行传递:图2从存在漏洞的软件(也就是没有对用户输入进行严格消毒的应用程序)中得到的响应将是下面的内容:图3Web缓存将看到两个不同的响应,因此如果攻击者发送第一个请求之后立即发送对/index.html页面的请求的话,web缓存会认为这个请求与第二个响应相匹配,并缓存它的内容,这样一来后面经由web缓存的所有指向/index.html的请求都会收到系统故障消息,即“system down”。
通过这种方式,一个攻击者将能有效涂改站点在使用web缓存的用户心中的形象,如果该web缓存是该Web应用程序的一个反向代理的话,那么这个Web应用程序在整个因特网中的用户都会受到影响。
另外,攻击者还可以向这些用户传输发动跨站脚本攻击攻击的JavaScript代码片断,例如窃取cookies等。
需要注意的是,虽然该安全漏洞位于应用程序中,但是攻击针对的对象却是使用该应用程序的用户。
因此,为了查找这个安全漏洞,渗透测试人员需要识别所有能够影响响应的一个或多个头部的用户输入,并检查用户是否能够在其中注入一个CR+LF序列。
与这个攻击关系最密切的两个头部是:Location Set-Cookie需要注意的是,现实中要想成功利用这个安全漏洞可能是件非常复杂的事情,因为有多种因素必须考虑到:1.攻击者要想让伪造的响应被缓存的话,必须正确设置其中的各个头部,例如Last-Modified头部的值必须设为将来的一个时间。
此外,攻击者还必须破坏目标页面先前的缓存版本,方法是提交一个请求头部中带有“Pragma: no-cache”的前导请求来防止页面被缓存。
2. 即使应用程序没有过滤CR+LF序列,但是仍可能过滤了发动该攻击所需的其他字符,例如字符<和>等。
这时候,攻击者可以尝试使用其他编码,例如UTF-7编码等。
3. 某些攻击目标(例如ASP)会对Location头部(例如/redirect.asp )中的路径部分进行URL编码处理,这样就使得CRLF序列不起作用了。
然而,它们却不能对查询部分(例如?interface=advanced)进行这样的编码处理,这意味着放置一个前导问号就能够绕过这种过滤技术。
三、HTTP截断攻击灰盒测试对于Web应用程序即攻击目标的深入了解,在发动HTTP截断攻击时是极其有帮助的。
例如,不同的攻击目标可能使用不同的方法来判定第一个 HTTP消息在何时终止,第二个HTTP消息从什么时候开始。
当然,有时候可以使用消息边界来进行判定,如上面的例子就是这样。
但是,其他的攻击目标可能使用不同的数据包来携带不同的消息。
此外,有些目标会为每个消息分配指定组块的数量,这种情况下,第二个消息必须从特定的块开始,这就要求攻击者在两个消息之间填充必要的块。
不过,当时有URL发送有弱点的参数的时候,这么做可能会引起一些麻烦,因为过长的URL很可能被截断或者过滤掉。
灰盒测试可以帮助攻击者找到解决办法:一些应用程序服务器允许使用POST而非GET来发送请求。
四、HTTP走私攻击灰盒测试之前讲过,HTTP走私攻击所利用的漏洞是,某些精心构造的HTTP消息会随不同的代理(浏览器、web缓存、应用程序防火墙)而做不同的解释。
这种攻击方法是由Chaim Linhart、Amit Klein、Ronen Heled和Steve Orrin于2005年发现的。
这种攻击有多种用途,我们这里仅介绍最雷人的一种:绕过应用程序防火墙。
下面,我们详细介绍利用HTTP走私攻击绕过应用程序防火墙的详细方法。
有许多应用防火墙都能根据一些已知的嵌入请求的恶意模式来检测和阻止怀有恶意的web请求。
举例来说,针对IIS服务器的Unicode目录遍历攻击能够通过提交一个类似下面所示的一个请求发动攻击:图4当然,通过检查URL是否存在类似“..”和“cmd.exe”的字符串可以很容易地检测和过滤掉这种攻击。
然而,IIS 5.0对于POST请求主体的长度是有要求的,最多为48K字节——当Content-Type头部不同于application/x-www- form-urlencoded时,超出该限制的部分会被全部截断。
攻击者可以利用这一点来创建一个很大的请求,如下所示:图5这里,Request #1由49223字节内容组成,所以Request #1还包含了Request #2的几行内容。
因此,防火墙(或者其他任何代理)会看到Request #1,但是却无法看到Request #2(它的数据正好是#1请求的一部分),能够看到Request #3却会遗漏Request #4(因为该POST正好是伪造的头部xxxx部分)。
现在,IIS 5.0将会发生什么情况?它将在49152字节无用信息之后停止对Request #1的解析,因为这已经达到了48K=49152字节的限制,并将Request #2解析为一个新的、单独的请求。
Request #2声称它的内容为33字节,包括xxxx :之前的所有内容,这使得IIS会漏掉Request #3,因为Request #3被解释为Request #2的一部分,但是IIS会认出Request #4,因为它的POST是从Request #2的第33个字节之后开始的。
当然,这看起来有些复杂,但是却很好的解释了为什么该攻击性URL不会被防火墙发现,却能被IIS正确解析和执行的原因所在。