渗透测试-百日筑基—文件上传篇&特征&截断&渲染&%00&绕过——下篇

目录

day10-渗透测试文件上传篇&绕过&特征&截断&渲染

一、黑名单大小写绕过代码分析

1、获取文件后缀名进行判断,如果后缀在这个字典里就禁止上传。

2、黑名单大小写绕过攻击

二、利用 windows 系统特征绕过上传

1、windows 系统特征绕过漏洞分析源码

2、windows 系统特征绕过攻击

三、NTFS 交换数据流::$DATA 绕过上传

1、NTFS 交换数据流::$DATA 代码分析

2、NTFS 交换数据流::$DATA 攻击绕过上传

四、利用 windows 环境的叠加特征绕过上传

1、黑名单源码分析

2、利用 windows 环境的叠加特征绕过上传攻击

3、双写后缀名绕过上传

五、文件上传双写绕过攻击

六、目录可控%00 截断绕过上传

1、上传参数目录可控代码分析

2、文件上传参数目录可控攻击

七、目录可控 POST 绕过上传

1、目录可控 post 上传代码分析

2、目录可控上传攻击

八、文件头检测绕过上传

1、常见的文件头

2、文件头检测上传代码分析

3、文件头检测绕过传攻击方法

九、绕过图片二次渲染上传

1、图片二次渲染分析代码

2、绕过图片二次渲染攻击

3、制作图片马

声明:请勿进行违法测试,任何教学出处与本博主无关


day10-渗透测试文件上传篇&特征&截断&渲染&%00&绕过

描述

    文件上传漏洞是一种常见的网络安全问题,它存在于许多Web应用程序中。当Web应用程序在处理用户上传的文件时,如果缺乏严格的安全检查和处理,攻击者就可能上传并执行恶意文件,从而对系统安全构成严重威胁。这种漏洞可能源于对上传文件的类型、大小、内容等属性的检查不严格,或对上传文件的保存路径、文件名等信息处理不当,以及未限制用户访问上传文件的权限, 如常见的头像上传,图片上传,oa 办公文件上传,媒体上传,允许用户上传文件,如果过滤不严格,恶意用户利用文件上传漏洞,上传有害的可以执行脚本文件到服务器中,可以获取服务器的权限,或进一步危害服务器。

一、黑名单大小写绕过代码分析

1、获取文件后缀名进行判断,如果后缀在这个字典里就禁止上传。

$deny_ext =array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",". pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx", ".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");

2、黑名单大小写绕过攻击

仔细阅读黑名单,查看是否有被忽略的后缀名,当前可以使用phP 绕过

二、利用 windows 系统特征绕过上传

    在 windows 中文件后缀名. 系统会自动忽略.所以 shell.php. 像shell.php 的效果一样。所以可以在文件名后面机上.绕过。

1、windows 系统特征绕过漏洞分析源码

同样是黑名单禁止上传,但是可以上传.php.这种文件后缀

2、windows 系统特征绕过攻击

抓包修改在后缀名后加上.即可绕过

三、NTFS 交换数据流::$DATA 绕过上传

如果后缀名没有对::$DATA 进行判断,利用 windows 系统NTFS 特征可以绕过上传。

1、NTFS 交换数据流::$DATA 代码分析

$deny_ext =array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",". pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx", ".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");

同样用黑名单过滤后缀名。但是程序中没有对::$DATA 进行过滤可以添加::$DATA 绕过上传。

2、NTFS 交换数据流::$DATA 攻击绕过上传

burpsuite 抓包,修改后缀名为 php::$DATA

四、利用 windows 环境的叠加特征绕过上传

    在 windwos 中如果上传文件名 moonsec.php:.jpg 的时候,会在目录下生产空白的文件名 moonsec.php,再利用 php 和 windows 环境的叠加属性, 以下符号在正则匹配时相等

双引号" 等于 点号.

大于符号> 等于 问号?

小于符号< 等于 星号*

文件名.<或文件名.<<<或文件名.>>>或文件名.>><空文件名

 

1、黑名单源码分析

同样是黑名单匹配,把.去掉 把空格也过滤了。::$data 也过滤了

2、利用 windows 环境的叠加特征绕过上传攻击

首先抓包上传 a.php:.php 上传会在目录里生成 a.php 空白文件,接着再次提交把a.php 改成 a.>>>

3、双写后缀名绕过上传

在上传模块,有的代码会把黑名单的后缀名替换成空,例如a.php 会把php 替换成空,但是可以使用双写绕过例如 asaspp,pphphp,即可绕过上传

文件上传双写绕过漏洞分析

同样是黑名单过滤。str_ireplace 对上传的后缀名是黑名单内的字符串转换成空

五、文件上传双写绕过攻击

抓包上传,把后缀名改成 pphphp 即可绕过上传

六、目录可控%00 截断绕过上传

以上都是一些黑名单被绕过的,如果黑名单上传检测后,没有限定后缀名,绕过的方法很多,与黑名单相对的就是白名单,使用白名单验证会相对比较安全,因为只允许指定的文件后缀名。但是如果有可控的参数目录,也存在被绕过的风险。

1、上传参数目录可控代码分析

    使用白名单限制上传的文件后缀名,只允许指定的图片格式。但是$_GET['save_path']服务器接受客户端的值,这个值可被客户端修改。所以会留下安全问题。

2、文件上传参数目录可控攻击

上传参数可控当 gpc 关闭的情况下,可以用%00 对目录或者文件名进行截断。

php 版本小于 5.3.4  首先截断攻击,抓包上传将%00 自动截断后门内容。

例如 1.php%00.1.jpg 变成 1.php

七、目录可控 POST 绕过上传

    上面是 GET 请求的,可以直接在 url 输入%00 即可截断,但是在post 下直接注入%00 是不行的,需要把%00 解码变成空白符,截断才有效。才能把目录截断成文件名。

1、目录可控 post 上传代码分析

这段代码同样是白名单限制后缀名,$_POST['save_path']是接收客户端提交的值,客户端可任意修改。所以会产生安全漏洞。

2、目录可控上传攻击

    文件名可控,通过抓包修改可控的参数,与不同的中间件的缺陷配合使用

使用%00 截断文件名 再 post 环境下%00 要经过 decode 但是受gpc 限制使用 burpsutie POST %00 截断文件名

八、文件头检测绕过上传

    有的文件上传,上传时候会检测头文件,不同的文件,头文件也不尽相同。常见的文件上传图片头检测 它检测图片是两个字节的长度,如果不是图片的格式,会禁止上传。

1、常见的文件头

JPEG (jpg),文件头:FFD8FF

PNG (png),文件头:89504E47

GIF (gif),文件头:47494638

TIFF (tif),文件头:49492A00

Windows Bitmap (bmp),文件头:424D

2、文件头检测上传代码分析

这个是存在文件头检测的上传,getReailFileType 是检测jpg、png、gif 的文件头

如果上传的文件符合数字即可通过检测

3、文件头检测绕过传攻击方法

制作图片一句话,使用 copy 1.gif/b+moon.php shell.php 将php 文件附加再jpg图片上,直接上传即可。

本例子因为限制了后缀为 jpg,可以考虑文件包含将图片文件包含进去getshell

九、绕过图片二次渲染上传

    有些图片上传,会对上传的图片进行二次渲染后在保存,体积可能会更小,图片会模糊一些,但是符合网站的需求。例如新闻图片封面等可能需要二次渲染,因为原图片占用的体积更大。访问的人数太多时候会占用,很大带宽。二次渲染后的图片内容会减少,如果里面包含后门代码,可能会被省略。导致上传的图片马,恶意代码被清除。

1、图片二次渲染分析代码

    只允许上传 JPG PNG gif 在源码中使用 imagecreatefromgif 函数对图片进行二次生成。生成的图片保存在,upload 目录下

2、绕过图片二次渲染攻击

    首先判断图片是否允许上传 gif,gif 图片在二次渲染后,与原图片差别不会太大。所以二次渲染攻击最好用 git 图片马

3、制作图片马

将原图片上传,下载渲染后的图片进行对比,找相同处,覆盖字符串,填写一句话后门,或者恶意指令。

声明:请勿进行违法测试,任何教学出处与本博主无关

上一篇:玩转Docker | Docker基础入门与常用命令指南-基本概念


下一篇:SDWebImage