IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 上传漏洞-绕过上传 -> 正文阅读

[PHP知识库]上传漏洞-绕过上传

目录

绕过内容检查实现文件上传

绕过白名单检查实现文件上传

绕过黑名单检查实现文件上传


绕过内容检查实现文件上传

文件上传漏洞简介

通常web站点会有用户注册功能,而当用户登录之后大多数情况下会存在类似头像上传、附件上传之类的功能,这些功能点往往存在上传验证方式不严格的安全缺陷,导致攻击者通过各种手段绕过验证,上传非法文件,这是在web渗透中非常关键的突破口。

文件上传漏洞危害

攻击者绕过上传验证机制上传恶意文件,通过上传的web后门获得整个web业务的控制权,复杂一点的情况是结合web服务器的解析漏洞来获取权限。

文件上传检测流程

通常一个文件以HTTP协议进行上传时,将以POST请求发送至web服务器,web服务器收到请求并同意后,用户与web服务器将建立连接,并传输数据。

制作图片马木

图片马制作方法:copy test.gif /b + eval.php /a eval.gif

将PHP一句话追加到gif图片末尾,b表示二进制文件,a表示ASCII码文件,形成一个包含webshell代码的新gif文件eval.gif。

任务描述:绕过文件头检查,添加GIF图片的文件头绕过GIF图片检查,上传图片木马,配合文件包含漏洞执行webshell。

显示源码,根据源码提示进行文件上传:

上传eval.gif并用burpsuite抓包:

?可以看到图片马最后包含webshell代码;添加GIF图片的文件头GIF89a:

点击go后查看响应:

?配合文件包含漏洞执行webshell:

在upload目录下写一个include.php文件,内容为:

菜刀连接webshell:

点这个‘+’号,输入webshell地址:http://10.1.1.100/upload-labs/upload/include.php?page=7820200101163204.gif

?在后面的post数据输入框里输入:test=phpinfo();

?点击post数据输入框后面的提交键,即可连接webshell:

任务描述:突破getimagesize(),配合文件包含漏洞执行webshell。

这里使用getimagesize()获取文件类型,直接上传图片马,添加GIF图片的文件头绕过GIF图片检查。

上传eval.gif并用burpsuite抓包,添加GIF图片的文件头GIF89a,点击‘go’之后查看响应内容:

?利用菜刀,配合文件包含漏洞连接webshell:

任务描述:还可以通过上传.php文件,修改Content-Type,添加GIF图片的文件头GIF89a进行绕过。

写一个PHP一句话木马eval.php:

上传eval.php并用burpsuite抓包,修改Content-Type为image/gif,添加GIF图片的文件头GIF89a:

?利用菜刀,配合文件包含漏洞连接webshell:

?

成功连接。


绕过白名单检查实现文件上传

常见的MIME类型

  1. 超文本标记语言.html文件的MIME类型为:text/html
  2. 普通文本.txt文件的MIME类型为:text/plain
  3. PDF文档.pdf的MIME类型为:application/pdf
  4. MicrosoftWord文件.word的MIME类型为:application/msword
  5. PNG图像.png的MIME类型为:image/png
  6. GIF图像.gif的MIME类型为:image/gif
  7. MPEG文件.mpg、.mpeg的MIME类型为:video/mpeg
  8. AVI文件.avi的MIME类型为:video/x-msvideo

00截断

1.0x00截断

??? ? ? 0x00是十六进制表示方法,表示ASCII码为0的字符,在一些函数处理时,会把这个字符当作结束符。

???? ?? 0x00可以用在对文件名的绕过上,具体原理:系统在对文件名进行读取时,如果遇到0x00,就会认为读取已经结束。但要注意是文件的十六进制内容里的00,而不是文件名中的00。也就是说系统是按二进制或十六进制读取文件,遇到ASCII码为0的位置就停止,而这个ASCII码为0的位置在十六进制中是00。

????? 总之就是利用ASCII码为0这个特殊字符,让系统认为字符串已经结束。

2.%00截断

? ?? ?? url发送到服务器后被服务器解码,这时还没有传到验证函数,也就是说验证函数里接收到的不是%00字符,而是%00解码后的内容,即解码成了0x00。总之就是%00被服务器解码为0x00发挥了截断作用。

3.0x0a

? ? ??? 0x0a是十六进制表示方法,表示ASCII码为/n的换行字符,具体为换行至下一行行首起始位置。

任务描述:通过修改MIME类型,使其符合$_FILES['upload_file']['type']的白名单,达到上传恶意文件的目的。

在桌面写一个简单的一句话木马eval.php:

查看源码可以发现是白名单判断,只允许上传$_FILES['upload_file']['type']为'image/jpeg'、'image/png'及'image/gif'的文件。

?上传eval.php并用burpsuite抓包:

?修改Content-Type为image/gif,点击‘go’之后在Response处查看响应内容:

?成功上传木马文件到upload文件夹。

任务描述:$img_path直接拼接,利用%00截断进行绕过,上传恶意文件并通过浏览器连接webshell。

根据源码提示进行文件上传:

可以看到是白名单判断,但是$img_path直接对上传的文件名拼接,使用$_GET传参,我们可以利用%00截断进行绕过。

:%00截断的条件:

  1. PHP版本小于5.3.4;
  2. 打开PHP的配置文件php-ini,将magic_quotes_gpc设置为Off。

桌面写一个test.jpg文件:

Windows中修改PHP配置文件php.ini:

?保存后重启phpStudy。

上传test.jpg并使用burpsuite抓包,save_path改为../upload/test.php%00:

连接webshell:

任务描述:0x00截断绕过,利用burpsuite的hex功能将save_path改成../upload/test.php[二进制00]形式,上传恶意文件并通过菜刀浏览器连接webshell。

通过源码提示进行文件上传:

?和之前不同的是,'save_path'是通过post传进来的,需要在二进制文件中进行修改,因为post不会像get那样对%00进行自动解码。

上传test.jpg并使用burpsuite抓包,利用burpsuite的hex功能将save_path改成../upload/test.php[二进制00]形式:

?在../upload/后添加test.php (.php后面加空格),filename不用修改,然后点击‘Hex’:

0x0a是十六进制表示方法,表示ASCII码为/n的换行字符,具体为换行至下一行行首起始位置;而0x0d表示ASCII码为/r的回车字符,回车的作用只是移动光标至该行的起始位置。

?最终上传的是test.php文件。使用菜刀连接webshell:

任务描述:本关考察CVE-2015-2348,move_uploaded_file() 00截断,上传webshell同时自定义保存名称,上传成功后用菜刀连接

发现move_uploaded_file()函数中的$img_path是由post参数save_name控制的,可以在save_name中利用00截断进行绕过。

保存名称修改为‘test.php+空格.1.jpg’,点击‘上传’;

?在‘Hex’中将20(表示php后的那个空格)改为00,然后点击‘go’查看响应内容:

?最终上传的是test.php文件。

?通过菜刀连接webshell:

菜刀连接webshell成功。


绕过黑名单检查实现文件上传

任务描述:后缀大小写绕过实现文件上传。

通过源码提示进行文件上传:

?可以看出此处对后缀名为. php等的文件做了限制,但是没有将后缀进行大小写统一,我们可以通过大小写绕过上传恶意文件。

在桌面写一个简单的一句话木马eval.php:

上传eval.php并用burpsuite抓包,将文件后缀改为.phP,点击‘go’之后在Response处查看响应内容:

可以看到文件已经成功上传,但是文件名已经变成了202204020052033933.phP。一些网站会对上传的文件进行文件名随机修改,以防攻击者通过原文件连接webshell,如果不通过burpsuite抓包检测很难发现这一点。

Firefox浏览器访问脚本http://10.1.1.100/upload-labs/upload/201904101753558013.phP,并开启post data:

任务描述:空格绕过实现文件上传。

通过源码提示进行文件上传:

发现还是黑名单检测,但是没有对后缀名进行去空处理,可以通过在后缀名后加空进行绕过。

还是上传之前的PHP一句话木马eval.php并用burpsuite抓包,将文件后缀改为.php+空格:

利用菜刀进行webshell连接:

任务描述:利用Windows系统的文件名特性,通过点绕过实现文件上传。

通过查看源码可以发现没有对后缀名进行去‘.’处理,利用Windows系统的文件名特性,会自动去掉后缀名最后的‘.’,通过在文件名后加‘.’进行绕过。

上传eval.php并用burpsuite抓包,将文件名改为‘eval.php.’:

虽然在burpsuite里看到的是.php.文件,但是在Windows里保存的会是.php文件

通过菜刀连接:

任务描述:利用Windows特性,通过::$DATA绕过实现文件上传。

通过源码提示进行文件上传:

发现没有对后缀名进行去‘::$DATA’处理,利用Windows下NTFS文件系统的一个特性,即NTFS文件系统存储数据流的一个属性$DATA,当我们访问aa.asp::$DATA时,就是请求aa.asp本身的数据。可以在后缀名后加‘::$DATA’,绕过对黑名单的检测。

上传eval.php并使用burpsuite抓包,修改后缀名为.php::$DATA,点击‘go’之后查看响应内容:

?成功上传文件到upload文件夹下。

Windows文件流特性绕过,上传成功后实际保存的文件名是202204020245414181.php

使用菜刀连接webshell:

任务描述:配合解析漏洞,构造‘点+空格+点’的形式实现文件上传。

?

还是黑名单过滤,注意第15行和之前不太一样,路径拼接的是处理后的文件名,直接上传.php、.php+点、.php+空都会被当成黑名单过滤掉,因为源代码做了删除文件名末尾的点和首尾去空处理。可以配合解析漏洞,构造‘点+空格+点’的形式,绕过黑名单的检测上传恶意文件。

上传eval.php并使用burpsuite抓包,修改后缀名为.php. .(点+空格+点):

成功上传文件至upload文件夹,而Windows系统存在文件名特性,最终保存的文件名为eval.php。

通过菜刀连接webshell:

任务描述:双后缀名绕过实现文件上传。

通过源码提示进行文件上传:

依然是黑名单限制,注意到这里将问题后缀名替换为空,我们可以利用双写绕过,进行恶意文件的上传。

上传eval.php并使用burpsuite抓包,修改后缀名为pphphp,点击‘go’之后查看文件是否上传成功:

?通过菜刀连接webshell:

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 15:58:20  更:2022-04-06 15:58:56 
 
开发: 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/23 6:33:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码