预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
PathTraversal黑客攻防技术宝典实战篇
路径遍历
利用路径遍历
1.常见漏洞
2.查找并利用路径遍历漏洞
2.1确定攻击目标
2.2探查路径遍历漏洞
2.3避开遍历攻击障碍
2.4利用遍历漏洞
3.防止路径遍历漏洞
4.小结
许多功能强迫Web应用程序根据用户在请求中提交的参数向文件系统读取或写入数据。如果以不安全的方
式执行这些操作,攻击者就可以提交专门设计的输入,使得应用程序访问开发者并不希望它访问的文件。
这称为路径遍历(pathtraversal)漏洞,攻击者可利用这种缺陷读取密码和应用程序日志之类的敏感数据,或
者覆写安全性至关重要的数据项,如配置文件和软件代码。在最为严重的情况下,这种漏洞可使攻击者能
够完全攻破应用程序与基础操作系统。
1.常见漏洞
Page1
PathTraversal黑客攻防技术宝典实战篇
路径遍历
如果应用程序使用用户可控制的数据,以危险的方式访问应用程序服务器或其他后端文件系统中的文件和
目录,就会出现路径遍历漏洞。通过提交专门设计的输入,攻击者就可以在被访问的文件系统中读取或者
写入任意内容。这种漏洞往往使得攻击者能够从服务器上读取敏感信息或者覆写敏感文件,并最终在服务
器上执行任何命令。
在下面的实力中,应用程序使用一个动态页面向客户端返回静态图像。被请求图像的名称在查询字符串参
数中指定:
https://wahh-app.com/scripts/GetImage.aspx?file=diagram1.jpg
当服务器处理请求时,它执行以下操作。
(1)从查询字符串中提取file参数值
(2)将这个值附加在C:\wahh-app\images\之后
(3)用这个名称打开文件
(4)读取文件的内容并将其返回给客户
漏洞之所以会发生,是因为攻击者可以将路径遍历序列(pathtraversalsequence)放入文件名内,从第(2)步指
定的图像目录向上回溯,从而访问服务器上的任何文件。路径遍历序列叫做”点-点-斜线”(..\),一个典型的
攻击如下:
https://wahh-app.com/scripts/GetImage.aspx?file=..\..\WINDOWS\repair\sam
如果应用程序把file参数的值附加到图像目录名称之后,就得到以下路径:
C:\wahh-app\images\..\..\WINDOWS\repair\sam
等同于下面的路径:
C:\WINDOWS\repair\sam
因此,服务器不会返回图像文件,而是返回repair目录中的WindowsSAM文件。攻击者可通过分析这个文
件,获得服务器操作系统的用户名和密码。
在这个简单的实力中,应用程序并未实施防御,阻止路径遍历攻击。然而,由于这些攻击早已广为人知,
应用程序通常会针对它们实施各种防御,大多数情况下是采取输入确认过滤。在后面会讲到,这些过滤往
往并不可靠,可被技术熟练的攻击者轻易避开。
2.查找并利用路径遍历漏洞
路径遍历漏洞一般隐藏很深,非常难以发现,因此,渗透测试员必须集中精力探查应用程序中最可能表现
出这种漏洞的位置。
Page2
PathTraversal黑客攻防技术宝典实战篇
路径遍历
2.1确定攻击目标
在对应用程序进行初步解析的过程中,应该已经确定所有与路径遍历漏洞有关的明显攻击面。主要用于文
件上传或下载目的的所有功能都应进行全面测试。用户可共享文档的工作流程应用程序,允许用户上传图
像的博客与拍卖应用程序,以及用户提供电子书,技术手册的公司报表等文档的信息型应用程序,常常使
用这种功能。
除明显的目标功能外,还有其他各种行为表示应用程序需要与文件系统进行交互。
渗透测试步骤
分析在应用程序解析过程中收集的信息,确定一下内容。
请求参数中明显包含文件或目录名称的所有情形。例如,include=main.inc或
template=/en/sidebar。
需要从服务器文件系统(相对于后端数据库)读取数据的所有应用程序功能。例如,显示办公文档或
图像。
在测试其他漏洞的过程中,寻找有益的错误或其他反常事件。设法确定用户提交的数据被传送给文件API
或作为操作系统命令参数的所有情况。
如果能够从本地访问应用程序,执行以下操作。
使用适当的工具监控服务器上的所有文件系统活动。例如,可以在Windows平台上使用
SysInternals开发的FileMon工具,在Linux平台上使用ltrace/strace工具,在SunSolaris平台上使
用truss命令。
在每一个被提交的参数(包括cookie,查询字符串字段和POST数据项)中插入一个特殊的字符串