web安全之目录遍历

这篇具有很好参考价值的文章主要介绍了web安全之目录遍历。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是目录遍历?

目录遍历(也称为文件路径遍历)是一个 Web 安全漏洞,允许攻击者读取运行应用程序的服务器上的任意文件。这可能包括应用程序代码和数据、后端系统的凭据以及敏感的操作系统文件。在某些情况下,攻击者可能能够写入服务器上的任意文件,从而允许他们修改应用程序数据或行为,并最终完全控制服务器。

思路来源:

考虑一个显示待售商品图像的购物应用程序。图像通过一些HTML加载,如下所示:

<img src="/loadImage?filename=218.png">

URL 采用一个参数并返回指定文件的内容。映像文件本身存储在磁盘上的位置 。要返回图像,应用程序会将请求的文件名追加到此基目录,并使用文件系统 API 读取文件的内容。在上述情况下,应用程序从以下文件路径读取:loadImagefilename/var/www/images/

/var/www/images/218.png

应用程序不实现对目录遍历攻击的防御,因此攻击者可以请求以下 URL 从服务器的文件系统中检索任意文件:

https://insecure-website.com/loadImage?filename=../../../etc/passwd

这将导致应用程序从以下文件路径中读取:

/var/www/images/../../../etc/passwd

该序列在文件路径中有效,意味着在目录结构中提升一个级别。三个连续的序列从文件系统根目录递增,因此实际读取的文件是:../..//var/www/images/

/etc/passwd

在基于 Unix 的操作系统上,这是一个标准文件,其中包含在服务器上注册的用户的详细信息。

在 Windows 上,和 都是有效的目录遍历序列,检索标准操作系统文件的等效攻击将是:../..\

https://insecure-website.com/loadImage?filename=..\..\..\windows\win.ini

简单的大小写

通过"../" 能够对目录进行遍历

ps:filename=../../etc/passwd

用绝对路径旁路阻止的遍历序列

许多将用户输入放入文件路径的应用程序都实现了针对路径遍历攻击的某种防御,而这些攻击通常可以规避。如果应用程序从用户提供的文件名中剥离或阻止目录遍历序列,则可以使用各种技术绕过防御。您可以使用文件系统根目录的绝对路径(如 )直接引用文件,而无需使用任何遍历序列。

ps:filename=/etc/passwd

总之一句话:若阻止遍历,可以尝试绝对路径读取

非递归剥离的遍历序列

您可能能够使用嵌套遍历序列,例如 或 ,当剥离内部序列时,它将恢复为简单的遍历序列。....//....\/。当../与..\被替换成空时,上面就变成了../../,因此也可以实现遍历。

ps:filename=....//....//....//etc/passwd

遍历序列被多余的URL解码剥离

在某些上下文中,例如在 URL 路径或请求的参数中,Web 服务器可能会在将输入传递到应用程序之前剥离任何目录遍历序列。您有时可以通过URL编码,甚至双URL编码来绕过这种清理,从而产生或分别产生。

ps:filename=..%252f..%252f..%252fetc/passwd

验证路径的起点

如果应用程序要求用户提供的文件名必须以预期的基文件夹开头,例如 ,则可以包含所需的基文件夹,后跟合适的遍历序列。例如:/var/www/images

ps:filename=/var/www/images/../../../etc/passwd

使用空字节旁路验证文件的

如果应用程序要求用户提供的文件名必须以预期的文件扩展名(如 )结尾,则可以使用空字节在所需扩展名之前有效地终止文件路径。例如:.png

ps:filename=../../../etc/passwd%00.png

加密型传递的参数

filename=aW1hZ2UxLmpwZw== 参数file的数据采用Base64加密,而攻击中只需要将数据进行相应的解密即可入侵,采用一些常见、规律性的加密方式也是不安全的。

常见系统文件路径

Windows:

C:\boot.ini //查看系统版本

C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件

C:\Windows\repair\sam //存储系统初次安装的密码

C:\Program Files\mysql\my.ini //Mysql配置

C:\Program Files\mysql\data\mysql\user.MYD //Mysql root

C:\Windows\php.ini //php配置信息

C:\Windows\my.ini //Mysql配置信息

Linux:

/etc/passwd #查看用户文件

/etc/shadow #查看密码文件,如果能读取该文件说明是root权限

/etc/httpd/conf/httpd.conf #查看apache的配置文件

/root/.bash_history #查看历史命令

/var/lib/mlocate/mlocate.db #本地所有文件信息

/etc/ssh/sshd_config #ssh配置文件,如果对外开放可看到端口

/proc/self/fd/fd[0-9]*(文件标识符)

/proc/mounts

/root/.ssh/known_hosts文章来源地址https://www.toymoban.com/news/detail-401908.html

到了这里,关于web安全之目录遍历的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包