E056-web安全应用-File Inclusion文件包含漏洞进阶

2023-10-18 15:44

本文主要是介绍E056-web安全应用-File Inclusion文件包含漏洞进阶,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

课程名称:

E056-web安全应用-File Inclusion文件包含漏洞进阶

课程分类:

web安全应用

---------------------------------------------------------------------------------------------------------------------------------

实验等级:

中级

任务场景:

【任务场景】

小王再次接到磐石公司的邀请,对该公司旗下网站进行安全检测,经过一番检查发现了该论坛的某个页面依然存在文件包含漏洞,并在服务器上发现一句话木马。反复测试后推测,小王总结了一下网站被上传一句话木马的方法可能是远程包含。为了让公司管理人员彻底的理解并修补漏洞,小王用DVWA情景再现。

任务分析:

【任务分析】

当网站服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件。恶意文件可能是一句话木马也可能是含有一句话木马的文档或者图片,只要访问页面就会在当前页面源文件目录下生成一句话木马。

预备知识:

【预备知识】

PHP文件包含漏洞,就是在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶意代码

当服务器的php配置中,选项allow_url_fopen与allow_url_include为开启状态时,服务器会允许包含远程服务器上的文件,如果对文件来源没有检查的话,就容易导致任意远程代码执行。

str_replace函数,能够对参数进行了一定的处理,将”http:// ”、”https://”、 ” ../”、”..\”替换为空字符,即删除。

文件包含漏洞主要涉及到的危险函数有四个: include():执行到include时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行。require():只要程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止脚本。

include_once()和require_once():若文件中代码已被包含则不会再次包含。

函数的绕过:

可以从上图中看到代码中调用了str_replace函数,利用该函数对page参数进行了一定的处理,将”http:// ”、”https://”、 ” ../”、”..”替换为空字符,减小了一定几率的代码利用,不过还是可以利用双写等措施来绕过替换规则

可以从上图中看到代码调用了fnmatch函数检查page参数,该函数要求page参数的开头必须是file,否则报错。可以利用file协议来绕过防护策略

---------------------------------------------------------------------------------------------------------------------------------

任务实施:

E056-web安全应用-File Inclusion文件包含漏洞进阶

服务器场景:p9_win7-1(用户名:test;密码:123456)

服务器场景操作系统:Windows 7


服务器场景:p9_ws03-1(用户名:administrator;密码:123456)

服务器场景操作系统:Microsoft Windows2003 Server

---------------------------------------------------------------------------------------------------------------------------------

网络拓扑

**************************************************************************************************************

实战复现:

        打开火狐浏览器,在地址栏输入靶机的地址访问网页,使用默认用户名admin密码password登录:

在DVWA页面点击“DVWA Security” 选择难易程度为“high” ,然后点击“Submit” 提交:

点击“File Inclusion”后点击“view_source”查看源代码:

构造链接

http://172.16.1.4/vulnerabilities/fi/?page=file:///C:\phpstudy\WWW\php.ini

可以发现正常显示出php.ini文件内容

以下是其他方法(难易程度自行绕过,以下以low为例)

远程包含一句话木马

点击“File Inclusion”

在本地在本地搭建一个可访问的网站并写好木马脚本

        远程包含木马文件(利用的原理就是畸形解析)访问后网站服务器会在/vulnerabilities/fi目录下生成一个一句话木马:

在网站服务器上查看目录:

大多数上传点是可以上传图片的,图片内容包含muma.txt中的内容就会生成shell.php从而被控制

使用封装协议读取php文件

———————————————————————————————————————————

构建链接

http://172.16.1.4/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=C:\phpstudy\WWW\vulnerabilities\fi\shell.php

访问后会将shell.php的内容用base64密文显示出来

用火狐插件hackbar将密文解码:

'

实验结束,关闭虚拟机。

这篇关于E056-web安全应用-File Inclusion文件包含漏洞进阶的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/233558

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和