代码审计——目录遍历详解

news2024/11/16 9:28:58

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓

    • 01 漏洞描述
    • 02 审计要点
    • 03 漏洞特征
    • 04 漏洞案例
    • 05 修复方案

01 漏洞描述


目录遍历,即利用路径回溯符“../”跳出程序本身的限制目录实现下载任意文件。

例如Web应用源码目录、Web应用配置文件、敏感的系统文(/etc/passwd、/etc/paswd)等。

一个正常的Web功能请求为http://www.test.com/lownload.php?file=test.php。

如果Web应用存在路径遍历漏洞,则攻击者可以构造以下请求服务器敏感文件:

http://www.test.com/lownload.php?file1=…/…/…/…/…/…/…/…/…/…/…/…/etc/passwd


在这里插入图片描述

02 审计要点


目录遍历漏洞发生的根本原因是系统自带查询功能,如果接收用户提交文件的目录地址数据,且服务端未有任何过滤就把目录下的文件列表发给用户,会造成目录遍历安全威胁。

当判断代码中是否存在目录遍历漏洞时,可从以下4点进行判断:

1、参数是否用户可控?是否直接拼接http请求数据?或者调用存储在数据库中的数据?

2、是否配置了全局过滤器,检查过滤器的配置,是否所有的目录查询请求都经过过滤器处理,过滤器的过滤规则是否符合安全要求?

3、是否判断了文件下载的权限?系统是否会对输入文件路径进行访问权限判断?

4、是否判断了文件下载路径,是否预先设置好文件白名单?对输入的特殊字符是否存在敏感字符过滤?

03 漏洞特征


当系统处理用户请求下载文件时,若允许让用户提交文件目录地址,把目录下的文件列表发给用户,会造成目录遍历安全威胁。

Java

String path = request.getParameter("path");
java.io.OutputStream os = response.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(path);
byte[] b = new byte[1024];
int i = 0;
while ((i = fis.read(b)) > 0 ){
	os.write(b, 0, i);
}
fis.close();
os.flush();
os.close();

上述代码根据用户提交的path,未经过安全校验,可直接从服务器上获取指定文件,展示给用户,导致了目录遍历漏洞。

PHP

<php
//Thepagewewishtodisplay
$file=$_GET['page'];
//Inputvalidation
$file=str_replace(array("http://","https://"),"",$file);
$file=str_replace(array("../","..\""),"",$file);
>

上述代码使用了str_replace函数,对page参数进行了一定的处理,将”http:// ”、”https://”、 ” …/”、”…\”替换为空字符,即删除。但这里可以利…/./…/./xampp/htdocs/dvwa/php.ini来绕过检测。


04 漏洞案例

在这里插入图片描述

String path = request.getParameter("path");
java.io.OutputStream os = response.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(path);
byte[] b = new byte[1024];
int i = 0;
while ((i = fis.read(b)) > 0 ){
	os.write(b, 0, i);
}
fis.close();
os.flush();
os.close();

如上述代码所示,用户提交的path,未经过安全校验,可直接从服务器上获取指定文件,展示给用户,导致了目录遍历漏洞。

漏洞验证示例如下:

http://127.0.0.1/resin-doc/viewfile/?file=index.jsp
在这里插入图片描述

05 修复方案


1、要下载的文件地址保存至数据库中。

2、文件路径保存至数据库,让用户提交文件对应ID下载文件。

3、用户下载文件之前需要进行权限判断。

4、文件放在web无法直接访问的目录下。

5、非必要情况下不提供目录遍历服务。

6、公开文件可放置在web应用程序下载目录中通过链接进行下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FastDeploy部署参考

一、FastDeploy的gitee地址 https://gitee.com/leiqing1/FastDeploy/blob/release/0.3.0/docs/cn/faq/use_sdk_on_windows.md#21-%E4%B8%8B%E8%BD%BD%E9%A2%84%E7%BC%96%E8%AF%91%E5%BA%93%E6%88%96%E8%80%85%E4%BB%8E%E6%BA%90%E7%A0%81%E7%BC%96%E8%AF%91%E6%9C%80%E6%96%B0%…

When viruses are good for you 病毒,有时对人体是有益的 | 经济学人20230506版社论双语精翻

本篇来自《经济学人》&#xff08;The Economist&#xff09;2023年5月6日社论&#xff08;Leaders&#xff09;精选&#xff1a;《病毒&#xff0c;有时对人体是有益的》&#xff08;When viruses are good for you&#xff09;。 Bacteriophages 噬菌体 When viruses are goo…

onlyoffice变量提取,处理各种办公文档

onlyoffice变量提取,处理各种办公文档 使用 ONLYOFFICE Docs 在 HumHub 中处理各种办公文档。 带有 HumHub 连接器的 ONLYOFFICE Docs 企业版允许您在灵活的开源社交网络工具包 HumHub 中实时协作查看和编辑办公文档(Word、Excel 或 PowerPoint)。它包括 ONLYOFFICE Docs&#…

代码审计——SQL注入详解

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 漏洞描述02 审计要点03 漏洞特征04 漏洞案例05 修复方案 01 漏洞描述 当应用程序将用户输入的内容&#xff0c;拼接到SQL语句中&#xff0c;一起提交给数据库执行时&#xff0c;就会产生SQL注入威…

代码随想录训练营Day60|84. 柱状图中最大的矩形

84. 柱状图中最大的矩形 class Solution {public int largestRectangleArea(int[] heights) {int res0;// 数组扩容&#xff0c;在头和尾各加入一个元素int [] newHeights new int[heights.length 2];newHeights[0] 0;newHeights[newHeights.length - 1] 0;for (int index…

Docker desktop 怎么切换docker源

点击setting&#xff0c;点击docker Engine 进行编辑 {"registry-mirrors":["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://4jup2u41.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn&q…

校园预付费管理系统与水电计量设备仪表的实际应用 安科瑞 许敏

摘要&#xff1a;论文设计了适用于学生公寓的自助式预付费控电控水管理系统&#xff0c;采用多种智能功能&#xff0c;可以监测和显示漏电现象&#xff0c;通过短路、跳线、零线接地等方式防范和记录用户的偷电行为&#xff0c;通过报警和拉闸防止事故的发生。该系统采用先进的…

霍夫变换原理

文章目录 霍夫变换原理当点都在y轴上时&#xff0c;用ykxb形式是无法求出参数空间中的交点&#xff0c;也就是累计都一样。所以就用极坐标来表示参数空间。公式求证过程 霍夫变换原理 当点都在y轴上时&#xff0c;用ykxb形式是无法求出参数空间中的交点&#xff0c;也就是累计都…

linux服务器安装nodejs

注意&#xff1a; 本文针对的是有linux操作基础&#xff0c; 会使用vim的基本操作的同学。故有些很基础的东西没有赘述&#xff0c;如果是纯小白的同学&#xff0c;看起来可能会感觉缺失一些东西。 1.nodejs官网下载自己需要的版本的node node版本选择下载地址 我使用的是14.…

图像边缘检测原理

文章目录 图像边缘检测原理1:2:3:基本边缘检测算子 图像边缘检测原理 1: 图像的边缘指的是图像中像素灰度值突然发生变化的区域&#xff0c;如果将图像的每一行像素和每一列像素都描述成一个关于灰度值的函数&#xff0c;那么图像的边缘对应在灰度值函数中是函数值突然变大的…

Autoware 安装(踩坑指南)

Autoware 安装&#xff08;踩坑指南&#xff09; 【Autoware】2小时安装Autoware1.13&#xff08;保姆级教程&#xff09; Autoware入门学习&#xff08;二&#xff09;——Ubuntu18.04下的源码安装和配置 上面的两篇博客安装都异常顺利&#xff0c;甚至没有一点报错&#xff0…

AMEYA360代理线:艾睿红外热成像仪数据机房监测应用

数据信息时代&#xff0c;数据机房是企业重要的区域。近日某购物平台发生的数据机房宕机事故&#xff0c;引发关注。机房设备温度异常&#xff0c;使得系统崩溃&#xff0c;经济损失超亿元。红外热成像仪作为一种非接触式、精准度高、可视化的温度测量工具&#xff0c;为数据机…

【MyBatis 神级框架】从入门到进阶

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 1. 什么是 MyBatis 1.1 为什么要学MaBatis&am…

TikTok正测试AI聊天机器人Tako

该功能可以“从根本上改变应用程序中的搜索和导航” 原文链接&#xff1a;TikTok tests AI chatbot called Tako – The Verge TikTok正在测试一个名为Tako的AI聊天机器人&#xff0c;根据与The Verge共享的功能截图&#xff0c;它可以根据人们的问题推荐视频。 如果TikTok最…

总结:公有云产品之CDN

一、介绍 由于公司经常提供CDN相关概念&#xff0c;本文特地总结下。 二、产品说明 百度云的内容分发网络CDN是一款基于互联网的分布式服务平台&#xff0c;可以加速网络上的内容分发和传输&#xff0c;提高网络的稳定性和访问速度。 CDN主要通过将网站的静态和动态资源缓存…

读书笔记-《ON JAVA 中文版》-摘要17[第十七章 文件]

文章目录 第十七章 文件1. 文件和目录路径1.1 选取路径部分片段1.2 路径分析1.3 Paths的增减修改 2. 目录3. 文件系统4. 路径监听5. 文件查找6. 文件读写7. 本章小结 第十七章 文件 在丑陋的 Java I/O 编程方式诞生多年以后&#xff0c;Java终于简化了文件读写的基本操作。 在 …

手机APP测试流程规范模板

一、流程图 二、测试周期 9.25-10.5 1、测试资源 测试任务开始前&#xff0c;检查各项测试资源。 1.1、产品功能需求文档 1&#xff09;产品原型图 2&#xff09;产品效果图 3&#xff09;行为统计分析定义文档 4&#xff09;测试设备&#xff08;Android4.1-Android4.…

OWASP 之跨站脚本xss基础技能

OWASP 之跨站脚本xss基础技能 一.XSS概述二.漏洞危害三.XSS漏洞绕过方法1.手工测试XSS步骤2.常见xss3.绕过方法 四.xss防御方法a.CSP内容安全策略b.HttpOnlyc.输入输出检查d.使用防御函数 五.pikachu靶场1.反射型XSS&#xff08;get&#xff09;2.反射型XSS&#xff08;post&am…

PS如何把多张图片拼接到一张?

现在有多张图片如下 &#xff0c;如何拼接成为1张呢&#xff1f; 打开ps&#xff0c;在ps里面点击文件->自动->联系表。 在弹出来的联系表对话框中&#xff0c;点击选取&#xff0c;选择要拼接的图片。 选择好图片之后&#xff0c;设置宽度高度&#xff0c;宽度的话&…

List Label 28.003 2023 Crack

列表和标签 28.003 在 Web 报表设计器中添加新的图表类型&#xff0c;并支持 Embarcadero RAD Studio 11.3。 6月 16&#xff0c; 2023 - 16&#xff1a;38 新版本 特征 .NET 所有可用的 NuGet 包现在都有一个特殊的企业包和 ID&#xff0c;以确保包都来自一个包源&#xff0c;…