网安入门10-文件上传(中国蚁剑)

什么是文件上传漏洞——来自GPT-4

文件上传漏洞是一种常见的安全漏洞,它出现在Web应用程序中,允许攻击者上传恶意文件到服务器。这种漏洞可能导致严重的安全问题,例如服务器被入侵、数据泄露和应用程序功能受损。

文件上传漏洞通常由以下几个原因导致:

  1. 不充分的文件类型验证:Web应用程序应该仅允许用户上传特定类型的文件,例如图片、文档等。如果验证不严格,攻击者可能会上传恶意文件,如脚本或可执行文件。

  2. 不安全的文件名处理:攻击者可能会尝试使用特殊字符或路径遍历技术来上传文件到非预期的目录。这可能导致对服务器上其他文件的访问或覆盖。

  3. 不恰当的权限设置:如果上传目录的权限设置不当,攻击者可能会利用上传的文件执行恶意操作,例如执行代码或访问敏感数据。

为了防止文件上传漏洞,作为一名软件工程师,我们可以采取以下措施:

  1. 限制允许上传的文件类型:仅允许用户上传预定义的安全文件类型,并对文件扩展名和MIME类型进行严格验证。

  2. 对文件名进行安全处理:对上传的文件名进行过滤和验证,移除特殊字符,防止路径遍历攻击。

  3. 设置合适的权限:确保上传目录的权限设置正确,限制对敏感数据和系统文件的访问。

  4. 文件内容检查:对上传的文件进行内容检查,以防止潜在的恶意代码或嵌入式恶意内容。

  5. 使用隔离的文件存储:将上传的文件存储在与应用程序隔离的位置,以降低潜在的安全风险。

  6. 定期更新和打补丁:保持Web应用程序和服务器组件的更新,以修复已知的安全漏洞。

我的理解

最简单的文件上传例子:新建微信/QQ账号,上传新头像;或者学校宿舍报修系统,宿舍水龙头坏了,上传报修图片。

文件上传靶场

这里我们使用Pikachu皮卡丘平台,选择一张图片点击上传即可,注意给的是相对路径

输入相对路径就可以找到我们上传的图片了

此时,已经把我们的图片上传到对方服务器当中了,我们打开上帝视角
以上是正常客户的操作——老老实实上传图片,如果你是个黑客呢?

一句话木马

现在到了最经典的部分

<?php @eval($_POST['w']);?>

eval():执行代码层面命令
system():执行系统层面命令

先把上面这段话写好,保存到一个名为1.php的文件中,接着按照图片的位置上传我们的马子

经过不到0.1秒跳出来下面这个,所以我们判断是前端校验

通过浏览器的定位器定位到源码有个前端函数checkFile()我们直接删掉他
然后就上传成功

然后就可以成功在对方网站执行代码啦

用HackBar执行命令显得很low,所以我们使用流量连接工具——中国蚁剑

除了蚁剑,shell连接工具还有菜刀,冰蝎,哥斯拉等
菜刀最开始给网站运维人员(站主)用的,后面被黑客发现就变成黑客工具了
冰蝎和哥斯拉在功能上更强,有自己特有的流量(AES加密),流量特征不一样

挂上蚁剑的代理,抓一下蚁剑的流量

经过URL解码,可以发现蚁剑的流量是没有被加密的

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

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

相关文章

【源码解析】Apache RocketMQ发送消息源码

send message源码解析 引入 send message方法作为我们经常使用的方法&#xff0c;平时我们很难去关注他底层到底做了什么。大部分人只知道通过send message方法可以将消息发送到broker&#xff0c;然后供消费者进行消费。其实不然&#xff0c;消息从客户端发送到broker&#x…

GPU的硬件架构

SM: streaming Multiprocessor 流多处理器 sm里面有多个(sp)cuda core 32个线程称为一个warp&#xff0c;一个warp是一个基本执行单元 抽象概念&#xff1a;grid 网格 block 块 thread 线程 块中的线程大小是有讲究的&#xff0c;关乎到资源的调度&#xff0c;一般是128&#x…

SSD固态硬盘的黄金原则:抱最高的希望,做最坏的打算-1

随着SSD固态硬盘日益普及&#xff0c;在个人电脑中已成为基本的配置选项。在体验SSD固态硬盘带来的性能优势的同时&#xff0c;你有没有想过一个问题&#xff0c;SSD的数据如果误删除或发生故障丢失&#xff0c;还有没有可能找回来呢&#xff1f;这也许是固态硬盘飞入寻常百姓家…

如何在 Windows 电脑上恢复硬盘数据

虽然硬盘偶尔发出安静的咔哒声无需担心&#xff0c;但响亮、持续的咔哒声&#xff08;有时称为“死亡咔哒声”&#xff09;应该认真对待。您应该尽快从发出咔嗒声的硬盘驱动器中恢复数据&#xff0c;因为它会比您想象的更快失效。我们下面的指南将探讨从点击硬盘驱动器获取数据…

【读书】《白帽子讲web安全》个人笔记Ⅱ-1

目录 第二篇 客户端脚本安全 第2章 浏览器安全 2.1同源策略 2.2浏览器沙箱 2.3恶意网址拦截 2.4高速发展的浏览器安全 第二篇 客户端脚本安全 第2章 浏览器安全 近年来随着互联网的发展&#xff0c;人们发现浏览器才是互联网最大的入口&#xff0c;绝大多数用户使用互联…

【python学习】-用matplotlib实现将二维数据绘制为三维图形(三维多线图)并实战(三维散点图)

文章目录 绘制一幅三维线图结合for循环绘制多幅三维线图&#xff08;在一幅图上&#xff09;美化图形 绘制一幅三维线图 #将二维数据绘制三维图&#xff08;三维多线图&#xff09; import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import axes3d import numpy as…

STM32F4xx之库函数

一、库函数介绍 库函数与寄存器的区别 库函数&#xff1a;不需要自己写很多代码&#xff0c;可以利用软件生成代码。使用的时候必须添加库文件。库文件是芯片厂商写好了。占用空间大。 寄存器&#xff1a;自己写的代码量大&#xff0c;没有软件生成代码。使用的时候不需要库文件…

QT c++和qml交互实例

文章目录 一、demo效果图二、c和qml交互的基本方式1、qml访问C类对象 三、关键代码1、工程结构图2、c代码MainWindow.cppMainQuickView.cppStudentInfoView.cppStudentInfoModel.cpp 3、qml代码main.qmlMainQuickTopRect.qmlMainQuickMiddleRect.qmlMainQuickMiddleTableRect.q…

@Async正确使用姿势

Async注解可以使被修饰的方法成为异步方法&#xff0c;简单且方便&#xff0c;这篇文章将教你如何正确的使用它 先谈谈大多数人对Aysnc的认识&#xff1a; 如果直接使用Async&#xff0c;未指定线程池 并且 容器内也没有beanName为taskExecutor的bean&#xff0c;则会使…

im6ull学习总结(三-3)freetype

1、Freetype简介 FreeType是一个开源的字体渲染引擎&#xff0c;主要用于将字体文件转换为位图或矢量图形&#xff0c;并在屏幕上渲染出高质量的字体。它提供了一组API&#xff0c;使开发者能够在自己的应用程序中使用和呈现字体。 FreeType最初是作为一个独立项目开发的&…

欢乐钓鱼^^

欢迎来到程序小院 欢乐钓鱼 玩法&#xff1a;点击鼠标左键左右晃动的鱼钩&#xff0c;下方左右移动的鱼对准鱼的方向即可进行钓鱼&#xff0c; 不同的鱼不同的分数&#xff0c;快去钓鱼吧^^开始游戏https://www.ormcc.com/play/gameStart/241 html <div id"gamediv&qu…

(leetcode)替换所有的问号 -- 模拟算法

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题链接 力扣&#xff08;LeetCode&#xff09; 输入描述 string modifyString(string s) 输入一个字符串&#xff0c;字符串中仅包含小写字母和 ‘?’ 字符。 输出描述 将问号替换为小写字母&#xff0c;且这个替…

数据结构期末复习

章节知识点分析 第一章绪论 基本概念 数据 数据元素&#xff08;记录、表目&#xff0c;是数据集合中一个个体&#xff09; 数据项&#xff1a;一个数据元素可由若干数据项组成 数据对象&#xff1a;性质相同的数据元素的集合&#xff0c;是数据的一个子集 数据结构&…

LLM漫谈(二)| QAnything支持任意格式文件或数据库的本地知识库问答系统

一、QAnything介绍 QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统&#xff0c;可断网安装使用。 您的任何格式的本地文件都可以往里扔&#xff0c;即可获得准确、快速、靠谱的问答体验。 目前已支持格式: PDF&…

MiniCom串口调试工具使用

一、程序安装 执行下面代码&#xff0c;安装minicom。 sudo apt-get install minicom 二、查看串口设备名称 先拔掉串口运行下面指令&#xff0c;获得所有设备名称,插上串口再运行一次&#xff0c;新增的就是串口设备名称&#xff0c;记住串口设备名称&#xff0c;以串口设备名…

LeetCode-整数反转(7)

题目描述&#xff1a; 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231&#xff0c;231− 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff0…

[4K80 AI ISP IPC芯片]

4K80 AI ISP IPC芯片 Hi3403V100是一颗面向监控市场推出的专业 Ultra-HD Smart IP Camera SOC&#xff0c;该芯片最高支持四路sensor输入&#xff0c;支持最高4K60的ISP图像处理能力&#xff0c;支持3F WDR加粗样式、多级降噪、六轴防抖、硬件拼接等多种图像增强和处理算法&am…

C++多态性——(5)运算符重载(第二节)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 身先才能率人&#xff0c;律己才能服人…

【SpringBoot】公共字段自动填充功能实现(枚举、自定义注解、AOP、反射)

1. 自定义注解 使用interface语法来定义注解&#xff08;Annotation&#xff09;。 注解的参数类似无参数方法&#xff0c;可以用default设定一个默认值&#xff0c;比如String value() default "";。 元注解&#xff1a;有一些注解可以修饰其他注解&#xff0c;这…

基础面试题整理2

1.抽象类与接口区别 语法&#xff1a; 抽象类用abstract定义&#xff1b;接口用interface定义抽象类被子类继承extends&#xff08;不可用final修饰&#xff09;&#xff1b;接口被类实现implements抽象类的属性访问无限制,方法不可用private修饰&#xff1b;接口中的方法只能…