首页 > 其他分享 >Portswigger 靶场之“文件上传”

Portswigger 靶场之“文件上传”

时间:2023-02-18 10:11:33浏览次数:55  
标签:Web shell 文件 Portswigger upload via 靶场 上传

File upload vulnerabilities

All labs | Web Security Academy (portswigger.net)

1. Remote code execution via web shell upload

通过 Web shell 上传远程执行代码

目标:读取/home/carlos/secret文件的内容

过程

登录用户,选择一个图片上传。用 burp 分别拦截“上传文件”和“查看文件”的数据包,一个 POST 请求,另一个是 GET 请求

在 burp 上传文件中文件名后缀改为.php,删除原来图片的内容,替换为 php webshell,并且上传

查看文件数据包中,访问上传的 webshell;或者回到浏览器,先刷新页面,后右键图片在新标签页打开

# PHP 的读取代码
<?php echo file_get_contents('/home/carlos/secret'); ?>

# file_get_contents() 把整个文件读入一个字符串中。

2. Web shell upload via Content-Type restriction bypass

通过 Content-Type 限制绕过 Web shell 上传

先登录,上传图片,在 burp 的 http history 中拦截“上传文件”和“查看文件”的数据包,并转发到 Repeater,重命名为Upload File Show File以便更好地观察

在 burp 上传文件中,修改名称、删除图片内容替换为 php webshell,最重要的一点是Content-Type 修改为image/jpeg

后续步骤如法炮制而来

<?php echo file_get_contents('/home/carlos/secret'); ?>

3. Web shell upload via path traversal

Web Shell 通过路径遍历上传

传入 webshell 后<?php echo file_get_contents('/home/carlos/secret'); ?>,访问文件的时候显示了未经解析的源代码,由此想到该目录没有执行权限,需要上传到其他目录,进行目录遍历

在 burp 上传数据包,将文件名改为../文件名,需要经过 URL 编码,编码后是..%2f文件名,文件将被上传到“上一层”文件夹

4. Web shell upload via extension blacklist bypass

Web Shell上传通过扩展黑名单绕过

按照往常一样上传 PHP webshell,服务器回答说“不允许”上传 PHP 文件。从响应中,注意到正在运行的服务器是 Apache,

.htaccess文件是 Apache 服务器的一个配置文件,负责相关目录下的网页配置。能够实现改变文件扩展名、允许/阻止特定的用户或者目录的访问

可以欺骗 Apache 服务器将任意自定义文件扩展名映射到可执行的 MIME 类型。

第一步、修改.htaccess文件

# 修改名称 
.htaccess

# 修改 Content-Type
text/plain

# 修改内容
AddType application/x-httpd-php .shell

实现的功能就是:所有上传的.shell文件都会被当作php文件执行

接着上传一个后缀名为shell的文件,完成实验室任务

# 修改名称 
code.shell

# 修改 Content-Type
image、png

# 修改内容
<?php echo file_get_contents('/home/carlos/secret'); ?>

5. Web shell upload via obfuscated file extension

通过混淆文件扩展名上传 Web Shell

利用%00 截断

文件名用 Burp 改 code.php%00.png

在 url 中 %00 表示 ascll 码中的 0 ,而 ascii 中 0 作为特殊字符保留,表示字符串结束,所以当 url 中出现 %00 时就会认为读取已结束

当一个字符串中存在空字符的时候,在被解析的时候会导致空字符后面的字符被丢弃

6. Remote code execution via polyglot web shell upload

通过多语言 web shell 上传远程代码执行

服务器可能通过图像的字节序列来判断是否是jpeg、png文件等;使用 ExifTool 创建包含元数据中恶意代码的多语言 JPEG 文件

在 kali 中安装 ExifTool

apt install libimage-exiftool-perl

利用 ExifTool

exiftool -Comment="<?php echo 'START ' . file_get_contents('/home/carlos/secret') . ' END'; ?>" code.jpg -o code.php

7. Web shell upload via race condition

通过竞争条件上传 Web shell

通过 Race Condition,上传的 webshell 文件会先存到一个文件夹中,然后才会确认是否合法,如果不合法再删掉。文件被删除之前这段间隙去突破

标签:Web,shell,文件,Portswigger,upload,via,靶场,上传
From: https://www.cnblogs.com/yii-ling/p/17132035.html

相关文章

  • 原生上传
    <template><divstyle="display:flex;margin:0012px0;flex-wrap:wrap;"><templatev-if="files.length>0"><divclass="imgItem"v-for="(v,i)in......
  • day12-SpringMVC文件上传
    SpringMVC文件上传1.基本介绍SpringMVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。spring用JacartaCommonsFileUpload技术......
  • SpringMVC09 - 文件的下载与上传
    文件下载ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文使用ResponseEntity实现下载文件的功能①浏览器触发下载<ath:href......
  • dokuwiki编辑器支持ppt上传
    ​ Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧?Chrome高版本提供了可以将单张图片转换在BASE64字符串的......
  • yunUI组件库解析:图片上传与排序组件yImgPro
    yunUI是笔者开源的微信小程序功能库。目前其中包含了一些复杂的功能组件。方便使用。未来它将分为组件、样式、js三者合为一体,但分别提供。本文所用代码皆来源于组件库中的......
  • 博客园本地上传markdown(自记)
    最近开始要写很多的博客,无奈之前每篇博客都要将本地的图片拖动上传一番,才能完整地发好一篇随笔。便STFW了一下,发现了好东西。记以自用。项目地址:https://github.com/do......
  • 记录uniapp-小程序文件上传问题
    1.支付宝文件上传问题 uni.uploadFile如果缺少fileType运行到微信没有问题,但是运行到支付宝会报错,需要补齐fileType2.接口返回需要注意,res.data为字符串,需要转换JSON......
  • 使用nginx代理时上传图片413
    1、错误描述2、错误原因1.上传文件时,利用localhost访问系统,不会出现这个问题;用域名访问这个系统时,出现这个问题,提示是:请求实体太大由于Nginx反向代理服务器client_max_......
  • Java 文件上传
    一:配置springBoot上传文件限制spring:servlet:multipart:max-file-size:100MB#单个文件大小max-request-size:1024MB#总文件大小二:代码i......
  • 七牛云上传
    .net上传七牛云七牛云快速入门文档:https://developer.qiniu.com/kodo/1233/console-quickstart在使用之前首先要获取自己的AK和SK,地址>个人信息>密钥管理.使用方法......