burp学习路径-文件上传

文件上传漏洞

文件上传漏洞是指Web服务器允许用户将文件上传到其文件系统,而不充分验证文件的名称、类型、内容或大小等内容。如果不能正确地执行这些限制,可能意味着即使是基本的图像上传功能也可以用来上传任意的和潜在危险的文件。这甚至可以包括支持远程代码执行的服务器端脚本文件。

服务器处理静态文件请求

(1)不可执行文件:文件类型是不可执行的,例如图像或静态HTML页面,则服务器可能只会在HTTP响应中将文件的内容发送到客户机。
(2)可执行文件:文件类型为可执行文件(如PHP文件),并且服务器配置为执行此类型的文件,则服务器将在运行脚本之前根据HTTP请求中的标头和参数分配变量。然后可以在HTTP响应中将结果输出发送到客户端。
(3)可执行文件,但配置不执行:文件类型为可执行文件,但服务器不是配置为执行此类型的文件时,它通常会以错误响应。但在某些情况下,文件的内容可能仍以纯文本形式提供给客户端。此类错误配置偶尔会被利用来泄漏源代码和其他敏感信息。

可执行文件-利用不受限制的文件上传来部署web shell

从安全角度来看,最糟糕的情况是网站允许您上载服务器端脚本(如PHP、Java或Python文件),并且还配置为将它们作为代码执行。这使得在服务器上创建自己的web shell变得很简单。

Web shell是一种恶意脚本,攻击者只需通过向正确的端点发送HTTP请求,就可以在远程Web服务器上执行任意命令

如果能够成功地上传一个web shell,那么实际上就拥有了对服务器的完全控制。这意味着可以读取和写入任意文件、泄露敏感数据,甚至使用服务器来针对内部基础架构和网络外部的其他服务器发起攻击。

1
2
3
4
5
6
7
8
9
例如,以下PHP一行程序可用于从服务器的文件系统读取任意文件:
<?php echo file_get_contents('/path/to/target/file'); ?>
上传后,发送此恶意文件的请求将在响应中返回目标文件的内容

1、更通用的web shell可能如下所示:
<?php echo system($_GET['command']); ?>

2、此脚本允许通过查询参数传递任意系统命令,如下所示:
GET /example/exploit.php?command=id HTTP/1.1

可执行文件,但配置不执行

返回纯文本源码