| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Pikachu靶场之文件上传漏洞详解 -> 正文阅读 |
|
[网络协议]Pikachu靶场之文件上传漏洞详解 |
Pikachu靶场之文件上传漏洞详解前言本篇文章用于巩固对自己文件上传漏洞的学习总结,其中部分内容借鉴了以下博客。 文件上传漏洞简述什么是文件上传漏洞??? 凡是存在文件上传的地方均有可能存在文件上传漏洞,关于上传文件操作的时候对方代码写的是否完整、是否安全,一旦疏忽了某个地方可能会造成文件上传漏洞。 文件上传的原理? 网站Web应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个webshell到一个Web可访问的目录上,并将恶意文件传递给如PHP解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。还有一部分是攻击者通过Web服务器的解析漏洞来突破Web应用程序的防护 文件上传漏洞有哪些危害?文件可以自定义,可以成为Webshell,通过文件上传来上传后门,直接获取网站权限,属于高危漏洞。上传漏洞与SQL注入或者XSS相比,其风险更大。可以获取数据库信息,可以对服务器提权,获取内网权限。 文件上传漏洞如何查找及判断1.黑盒查找 文件后台 ??? 进入网站后台不一定能获得网站权限,可以从后台获取网站权限 会员中心 ??? 通过图片上传 ? 文件扫描 ? ?? 使用工具扫描出后台路径 2.白盒查找 ? 通过代码分析到上传漏洞 ? 查找文件上传功能 文件上传如何防御
文件上传漏洞绕过的方式有哪些
第一关 client check进入第一关有一个文件上传的按钮 如下图所示,刚选好文件,还没有点 “开始上传” 的时候,就弹出了提示 上传的文件不符合要求 绕过方法客户端验证一般两种绕过方法 (1)浏览器禁用javascript (2)burpsuite抓包改后缀 方法一、浏览器禁用javascript
抓到上图所示的报文,右键 send to repeater 把文件名改成muma.php,点send,上传成功 问题分析网页上 右键 查看网页源代码 可以在比较靠后的地方看到下图所示的代码 虽然是白名单过滤,但是放在前端就。。pi用没有。。 第二关 MIME type进入第二关,发现和上一关一样,也是一个上传界面 绕过方法关卡名字都透题了就直接来吧 说起来是两个思路,不过严格来说不能算两个思路,稍微有点殊途,很快同归 (1)上传muma.php,burpsuite抓包修改MIME type (好处是服务器上不会多一个没用的文件) (2)上传muma.png,burpsuite抓包修改文件后缀 (好处是只要这个文件上传成功了,MIME type肯定是对的) 这里就不两个都演示了,反正最后请求报文都是一样的,用第二个方法来演示一下。 上传muma.png,burpsuite抓包 把filename改成muma.php,点forward,文件上传成功 问题分析关于MIME类型的介绍可以看这个网页链接: MIME类型,在HTTP request报文中MIME类型在Content-Type字段体现。 本关的防护代码如下图所示 $mime是一个包含合法MIME类型的数组,也就是MIME类型白名单;然后将这个白名单作为参数传入了upload_sick()函数进行服务器端的检测。 upload_sick()函数的定义如下,该函数不安全之处在于两点: (1)仅检查了MIME类型,可以通过抓包修改绕过。 (2)保存文件的时候没有重命名文件,这样即使网页不回显文件保存路径,也有很大概率可以被攻击者猜测到。 整个关卡还有一处不安全,就是回显了文件保存路径。 成功上传webshell,并且知道文件保存路径后,攻击者就可以连接shell了。 第三关 getimagesize和之前一样传一个muma.php,上传失败,提示和上一关有区别,多了个上传文件后缀名不能为空,由于上传的文件是有后缀名的,也许后端代码会删掉原本的后缀名并根据一些规则替换新的后缀名?或者这里只是迷惑操作? 绕过方法这关的名字看起来是个函数,先用搜索引擎搜索一下试试:
上传一张图片马(图片中间插入一句话木马),返回了文件保存路径 查看上述路径的图片,发现图片中仍保留着一句话木马,也就是说没有对图片内容进行检查和修改。 而从burpsuite截获的本关的request报文来看,本关也并不满足00截断的条件。 图片马可以是基于真实图片的,也可以只是加个文件头。只加magic number就可以绕过的时候,直接加文件头的方式固然是更方便;但是普遍来说,还是在真实图片基础上制作图片马更保险。比如本关,直接加magic number是难以成功的,推测可能是因为getimagesize()函数检测的东西比较多,不仅仅是magic number。 问题分析这关是三关里面最安全的了,不能上传php文件,需要结合文件包含漏洞(或者中间件解析漏洞),但是还不够安全。 不够安全的最主要原因是上传的文件中还是可以包含php代码。 先来看一下本关的代码: 本关首先指定了两个白名单,$ _type是文件名后缀白名单,$_mime是MIME type白名单,然后将两个白名单伙同一些其他参数一起送入upload()函数 (1)123~127行,用文件名后缀白名单$type过滤后缀名不在白名单中的文件 (2)130~134行,用MIME type白名单$mime过滤MIME type不在白名单中的文件 (3)136~140行,用getimagesize()函数来判断是否是真实图片(可以通过图片马绕过) (4)157~161行,修改文件名为随机值(本来是防止攻击者猜测文件路径的,但是由于网页上回显了文件保存路径,所以这个重命名的步骤显得没有什么卵用了。) |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:57:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |