2020/1/31 PHP代码审计之目录穿越漏洞
0x00 目录穿越
目录穿越(Directory Traversal)攻击是黑客能够在Web应用程序所在的根目录以外的文件夹上,任意的存取被限制的文件夹,执行命令或查找数据。目录穿越攻击,也与人称为Path Traversal攻击。
0x01 目录穿越-漏洞危害
攻击者可以使用目录穿越攻击来查找,执行或存取Web应用程序所在的根目录以外的文件夹。如果目录穿越攻击成功,黑客就可以执行破坏性的命令来攻击网站。
0x02 写一个简单的目录穿越
<?php
if(isset($_GET['file'])){//判断我们传入的变量是否可控
readfile(filename:"file/" . $_GET['file']);//读取我们file文件夹下的文件
}
?>
<?php
$fileName='D:\PHPSTUDY2018\PHPTutorial\WWW\file\1.txt';
readfile($fileName);//显示所有内容
$a=readfile($fileName);//返回总字数并且显示所有内容
echo $a;
?>

0x03 目录穿越绕过方式
1:进行URL编码
点–>%2e 反斜杠–>%2f 正斜杠–>%5c
2:进行16为Unicode编码
点–>%u002e 反斜杠–>%u2215 正斜杠–>%u2216
3:进行双倍URL编码
点–>%252e 反斜杠–>%u252f 正斜杠–>%u255c
4:进行超长UTF-8 Unicode编码
点–>%c0%2e %e0$40%ae %c0ae
反斜杠–>%c0af %e0%80af %c0%af
正斜杠–>%c0%5c %c0%80%5c
常用来组合危害最大,比如文件上传后我们可以通过文件穿越获取到文件路径
0x04 目录穿越修复方案
1:在URL内不要使用文件名称作为参数
2:检查使用者输入的文件名是否含有“.."的目录阶层字符。
3:在php.ini文件中设置open_basedir来指定文件的目录。
4:使用realpath函数来展开文件路径中的”./" "../"等字符,然后返回绝对路径名称。
5:使用basename函数来返回不包含路径的文件名称。
2020/1/31 PHP代码审计之目录穿越漏洞的更多相关文章
- 2020/1/31 PHP代码审计之文件包含漏洞
0x00 文件包含简介 文件包含漏洞的产生原因是在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校检,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意 ...
- Winrar目录穿越漏洞复现
Winrar目录穿越漏洞复现 1.漏洞概述 WinRAR 是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面.2019年 2 月 20 日Check Point团队爆出了 ...
- nginx目录穿越漏洞复现
nginx目录穿越漏洞复现 一.漏洞描述 Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞. 二.漏洞原理 1. 修改nginx.conf,在如下图位置添加如下配置 在如 ...
- 【漏洞复现】WinRAR目录穿越漏洞(CVE-2018-20250)复现
前言 这漏洞出来几天了,之前没怎么关注,但是这两天发现开始有利用这个漏洞进行挖矿和病毒传播了,于是想动手复现一波. WinRAR 代码执行相关的CVE 编号如下: CVE-2018-20250,CVE ...
- Nginx目录穿越漏洞
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx经常被做为反向代理,动态的部分被proxy_pass传递给后端端口,而静 ...
- 2020/2/1 PHP代码审计之变量覆盖漏洞
0x00 变量覆盖简介 变量覆盖是指变量未被初始化,我们自定义的参数值可以替换程序原有的变量值. 0x01 漏洞危害 通常结合程序的其他漏洞实现完整的攻击,比如文件上传页面,覆盖掉原来白名单的列表,导 ...
- winrar目录穿越漏洞
地址: 参考: https://research.checkpoint.com/extracting-code-execution-from-winrar/ POC: https://github.c ...
- 2020/2/4 PHP代码审计之会话认证漏洞
0x00 会话认证漏洞简介 会话认证是个非常大的话题,涉及各种协议和框架,如cookie.session.sso.oauth.openid等. 而其中最常使用的是Cookie和Session,他们都能 ...
- 2020/1/28 PHP代码审计之命令执行漏洞
0x00 命令执行漏洞原理 应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system.exec.shell_exec.passthru.popen.proc_popen等函数可以执行 ...
随机推荐
- upload-labs-env文件上传漏洞 1-10关
Pass-01 首先先看源码: function checkFile() { ].value; if (file == null || file == "") { alert(&q ...
- springboot的maven多模块项目架构微服务搭建——构建多模块项目(依赖方式)
总想对微服务架构做一个小小的总结,不知如何下手,最近觉得还是从搭建微服务的过程来入手,对于springboot的maven项目从构建多模块架构进而衍化为常用的微服务架构来做个记录吧. 首先,创建多个s ...
- 007-PHP变量和函数相互转换
<?php function write($text) //定义function write()函数 { print($text); //打印字符串 } function writeBold($ ...
- 比较 CEILING 和 FLOOR
CEILING 函数返回大于或等于所给数字表达式的最小整数. FLOOR 函数返回小于或等于所给数字表达式的最大整数. 例如,对于数字表达式 12.9273,CEILING 将返回 13,FLOOR ...
- Essay Fail?可能是引用出了问题
新学期伊始,又有不少成功与雅思分手的学生们海外入学.本以为可以稍微喘口气,却发现漫天的essay接踵而至.因此,Hotessay小编为新瓜蛋子们特地准备了一期essay写作的干货.还不赶紧学起来,用到 ...
- Window Server 2019 配置篇(3)- 建立hyper-v集群并在其上运行win10 pro虚拟机
上次讲到我们的域里有了网关跟DHCP,这次我们要在域中建立hyper-v集群并在其上运行win10 pro虚拟机 那么什么是hyper-v集群呢? 就是两个及两个以上的运行hyper-v服务的服务器建 ...
- Web基础之Spring MVC
Spring MVC Spring MVC 说是框架,对Tomcat来说其实就是一个Servlet,关于如何从上古时期的Servlet演化到如今的SpringMVC的,可以看看这篇博文:Spring ...
- netty权威指南学习笔记三——TCP粘包/拆包之粘包现象
TCP是个流协议,流没有一定界限.TCP底层不了解业务,他会根据TCP缓冲区的实际情况进行包划分,在业务上,一个业务完整的包,可能会被TCP底层拆分为多个包进行发送,也可能多个小包组合成一个大的数据包 ...
- USB Windows驱动 音频解决方案芯片DP108
DP108是一款完全替代CM108的高度集成的单芯片USB音频解决方案芯片.方便的USB即插即用的兼容性,用户可以快速创建易用性,高质量和便携式USB音频产品基于高度集成的单芯片解决方案.所有重要的模 ...
- Centos7安装rabbitMQ3.6.0
文章中的erlang和rabbitmq3.6.0 http://pan.baidu.com/s/1c2Nn64w Centos7 系统操作 cd /etc/yum.repos.d/ mv Cent ...