CTF-Web(3)文件上传漏洞

news/2024/5/19 20:53:13 标签: 网络安全, 网络协议, web安全, CTF

笔记目录

CTF-Web(2)SQL注入
CTF-Web(3)文件上传漏洞

1.WebShell介绍


(1)一句话木马定义

     一种网页后门,以asp、php、jsp等网页文件形式存在的一种命令执行环境,而 一句话木马往往只有一行WebShell代码
     作用:
  • 攻击获得网站控制权限
  • 查看、修改、删除网站数据
  • 通过提权漏洞可获得主机权限

(2)一句话木马工作原理

  • eval函数:把字符串按照PHP代码执行,该字符串必须是合法的PHP代码,且必须以分号结尾。
  • $_POST:PHP超全局变量$_GET和$_POST用于收集表单数据。

(3)一句话木马(多整理防止被过滤运行不成功)

①基础版
<?php @eval($_GET['cmd']); ?>
②替代版
<?php @eval($_REQUEST['cmd']);?>
③防过滤版
<script language="php">@eval($_POST['cmd']);</script>
【精选】PHP一句话木马集合_思源湖的鱼的博客-CSDN博客

2.文件上传漏洞介绍


(1)原理

    由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致攻击者能够向某个可通过 Web 访问的目录上传恶意文件,并被脚本解析器执行,这样就可以在远程服务器上执行恶意脚本

(2)文件上传流程

    ①A 客户端javascript 检测 ( 客户端,通常检测扩展名)
    ②B 服务端MIME 类型检测 (请求Content-Type 内容)
    ③C 服务端目录路径检测 (检测跟path 参数相关的内容)
    ④D 服务端文件扩展名检测(检测跟文件extension 相关的内容)
    ⑤E 服务端文件内容检测(检测内容是否合法,如检测十六进制内容)

(3)漏洞分类

注:如果随便上传奇怪文件后缀,不允许上传为文件白名单(只允许几种后缀通过),否则为黑名单 (只允许几种后缀不通过)

(4)漏洞类型判断流程

3.漏洞分类(upload-labs靶场)


(1)JS前端验证突破(pass-01)

①原理
    如客户端上传文件时,可能现在本地JS验证文件类型是否正确再上传
②攻击方式
  • 抓包修改文件名

(2)MIME验证实例(pass-02)

①原理
    服务端对上传文件的Content-Type类型进行检测,判断 是否在 白名单规定内
②攻击方式
  • 抓包修改Content-type类型
注意:文件后缀名变更可能需要修改Content-Type类型,否则

(3)黑名单--特殊后缀名(pass-03)

①原理
    服务端对上传文件名后缀进行检测,判断 是否为禁止文件类型
②攻击方式
  • 文件后缀名字典攻击
    • ASP语言类:.asa .cer .cdx
    • PHP语言类: .php3 .php4 .php5 .phtml
    • .net语言类:.ashx
    • jsp语言类:jspx jspf

(4)黑名单--.htaccess(pass-04)

①原理
    htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法
②攻击方式
  • 上传htaccess文件
<FilesMatch "jpg">                              ###如所有jpg文件解析为php文件
setHandler application/x-httpd-php       
</FilesMatch>

(5)黑名单-- .user.ini(pass-05)

①原理
    php5.3版支持.ini代替.htaccess 此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。
    除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
②攻击方式
  • 首先构造.user.ini文件,因为.htaccess在黑名单
  auto_prepend_file=a.jpg
  • 然后构造jpg(GIF89a 后期有题目过滤内容) ,此时执行其他php代码都会执行a.jpg内容
GIF89a
<script language='php'>echo 'a.jpg success'; @eval($_POST['pass']);</script>
【当.user.ini不在白名单中,无法上传】
  • 首先构造.user.ini文件
GIF89a
auto_prepend_file=a.jpg
  • 将 Content-Type: application/octet-stream 修改为 Content-Type: image/jpg
    
  • 最后上传图片代码
(6)文件名绕过
  .[空格].
  • .后缀名+ .[空格]. ,最后只剩下.php(仅适用于windows系统)
    
②大小写绕过 (pass-06 ,限Linux
③黑名单-加空格 (pass-07 ,限windows
  • 代码没有对空格过滤,可利用windows系统特性,最终上传的文件被去掉了空格
④黑名单-加点 (pass-08
    由于没有代码: $file_name = deldot($file_name);//删除文件名末尾的点,因此可加点
⑤黑名单-双写绕过 (pass-11
    此处将黑名单文件替换为空字符串, php → pphphp
⑥黑名单-数据流 (pass-09
    没有代码, $file_ext = str_ireplace('::$DATA', '', $file_ext); //去除字符串::$DATA
  • 文件名后加  ::$DATA 标识, 访问时去掉标识即可
(7)白名单-%00截断null(GET) (pass-12,待实现
原理:URL遇到%00自动丢弃  %00+后面字符,因为%00 url解码为null
    此处白名单检测,只允许上传'jpg','png','gif'格式的文件。 但是上传路径是可以控制的,可以使用%00 截断更改地址栏中的上传路径,将后面处理过的文件名进行截断。只能用于php版本低于5.3的。
(8)文件头请求
    思路:首先上传一张简单的图片,然后抓包修改文件名后缀php,并在文件内注入木马(修改文件名+添加代码)。 如果能上传则成功

http://www.niftyadmin.cn/n/5126207.html

相关文章

Ubuntu 内核降级到指定版本

reference https://www.cnblogs.com/leebri/p/16786685.html 前往此网站&#xff0c;找到所需的内核 https://kernel.ubuntu.com/~kernel-ppa/mainline/ 查看系统架构 dpkg --print-architecture 二、下载安装包 注意&#xff1a;下载除lowlatency以外的deb包 三、安装内核 3…

Java零基础入门-逻辑运算符

前言 Java是一种广泛应用的编程语言&#xff0c;在在这里插入代码片软件开发中有着重要的地位。本文将介绍Java中的逻辑运算符及其在程序设计中的应用&#xff0c;希望能够帮助零基础的读者更好地入门学习Java。 摘要 本文将介绍Java中的三种逻辑运算符&#xff1a;与运算符…

SDL窗口创建以及简单显示(1)

项目创建步骤 1. 使用Qt Creator创建一个C项目 2. 将SDL库文件放到源文件目录下 在项目pro文件中添加库文件 win32{INCLUDEPATH $$PWD/SDL2-2.0.10/includeLIBS $$PWD/SDL2-2.0.10/lib/x86/SDL2.lib } 使用SDL创建一个窗口 #include <stdio.h>#include <SDL.h>…

通过minikube搭建k8s单机环境

minikube官方git地址&#xff1a;GitHub - kubernetes/minikube: Run Kubernetes locally 参考&#xff1a; 第五篇:minikube安装使用 - 知乎 minikube 如何简单搭建 kubernetes&#xff08;k8s&#xff09;环境&#xff1f; - 知乎 minikube安装及使用_minikube安装教程_l…

Java-数据类型

Java-数据类型 一、字面常量二、数据类型&#xff08;1&#xff09;基本数据类型 三、变量1、变量概念2、语法格式&#xff08;1&#xff09;语法&#xff1a;&#xff08;2&#xff09;示例&#xff1a; 3、整型变量&#xff08;1&#xff09;整型变量&#xff08;int&#xf…

各类统计模型R语言的详细使用教程-R语言的线性回归使用教程

各类统计模型R语言的详细使用教程-R语言的线性回归使用教程 前言R语言的线性回归代码示例回归诊断误差项正态qq图内学生化残差外学生化残差线性关系异常值的发现、处理帽子矩阵的方法DFFITS 准则Cook统计量COVRATIO准则多重共线性summaryKlein判别法特征根法条件指数法方差膨胀…

读图数据库实战笔记01_初识图

1. 图论 1.1. 起源于莱昂哈德欧拉在1736年发表的一篇关于“哥尼斯堡七桥问题”的论文 1.2. 要解决这个问题&#xff0c;该图需要零个或两个具有奇数连接的节点 1.3. 任何满足这一条件的图都被称为欧拉图 1.4. 如果路径只访问每条边一次&#xff0c;则该图具有欧拉路径 1.5…

Spring Security漏洞防护—HttpFirewall和 HTTPS

一、HttpFirewall Spring Security有几个领域&#xff0c;你所定义的 pattern 会针对传入的请求进行测试&#xff0c;以决定应该如何处理请求。这发生在 FilterChainProxy 决定请求应该通过哪个过滤链时&#xff0c;以及 FilterSecurityInterceptor 决定哪些安全约束适用于请求…