代码编织梦想

文件上传漏洞总结:原理与利用技巧

一、形成原理

攻击者突破了服务端的限制成功上传了可执行的恶意脚本文件。(或是上传大量文件——DOS攻击)

二、利用技巧

Ⅰ.前端验证

前端验证没有安全性

  • 在浏览器禁用JS
  • 在浏览器正常发包,用代理软件抓包并篡改

Ⅱ.黑名单验证

黑名单验证有一定的安全性,绕过的思路是利用解析漏洞(Ⅰ.利用后端验证代码存在的匹配缺陷(过滤不全)Ⅱ.利用中间件的解析漏洞)

A.利用后端验证代码存在的匹配缺陷(过滤不全)

1. 可被脚本程序解析的其他后缀

​ php:(.phpar | .php3 | .php4 | .php5 | .phps等)

​ 其他参考某靶场的一个黑名单:

$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",".ini"
);
2. 大小写绕过

.php => .Php.pHp

3. 双写绕过

.php => .phphpp

4. 点绕过

.php => .php.

5. 空格绕过

后端验证代码未删除空格(从而绕过黑名单),而Windows在处理文件名时会把空格省略

.php => .php(空格)

6. ::$DATA绕过

Windows的NTFS会将文件名后带::$DATA的当作文件流处理,躲过验证并保留之前的文件名

.php => .php::$DATA

B.利用中间件的解析漏洞

1. Apache解析漏洞

(从右往左识别,并跳过无法识别的后缀名)

webshell.php.abc.def => Apache解析 => webshell.php

2. 上传.htaccess来修改Apache的解析配置项

如上传这样的.htaccess文件:

<FilesMatch "webshell">
SetHandler application/x-httpd-php
</FilesMatch>

​ 那么文件名为“webshell”的文件都会被当作php脚本执行(这里的文件名不包含后缀,如webshell.jpgwebshell.png

Ⅲ.白名单验证

白名单一般有更好的安全性(不会漏掉过滤项),绕过思路是找更底层的解析漏洞(C语言将0认为是程序语句结束的标志)

1. MIME-Type绕过、Content-Type绕过(可尝试大小写)

在BurpSuite中修改即可

2. %00绕过——GET

对于GET,在BurpSuite的Raw视图下,对请求行添加%00
在这里插入图片描述

3. 0x00绕过——POST

对于POST,则需要在BurpSuite的Hex视图下,修改对应的二进制数据

在这里插入图片描述

Ⅳ.程序设计逻辑缺陷

  • 对文件内容进行二进制验证(仅对文件头验证)

    • 在文件二进制内容的开头添加文件幻数

      • GIF:47 49 46 38 39 61(GIF89a)

      • JPG:FF D8 FF E0 10 4A 46 49 46

      • PNG:89 50 4E 47 0D 0A 1A 0A

  • 进行二次渲染

    对比经由服务器渲染前后的图片的二进制内容(用WinHex等),尝试把“仍然存活,未变化”的内容替换为一句话木马

  • 先存再判断是否删除

    • 条件竞争:多线程快速上传并访问一个能生成新webshell的脚本文件

Ⅵ.其他

1. 制作图片马

在这里插入图片描述

2. To be continued…

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_51789211/article/details/131026869

breakdance评测:改变游戏规则的wordpress网站生成器-爱代码爱编程

您是否厌倦了与复杂的网站生成器打交道?这些网站生成器需要很长时间才能创建您想要的网站,Breakdance Builder改变了网站建设的游戏规则,彻底改变了网站的创建方式。 使用 Breakdance,您可以忘记必须学习复杂的编码语言和花费数小时来设置您的网站。您可以通过其直观的拖放界面立即创建您的网站。使用此构建器,您可以自由地将您的想法变为现实。