【墨者学院】主机溢出提权漏洞分析

背景介绍

公司内部服务器,上面有一简单的上传入口,刚入职的小伙伴在C盘根目录下有一个TXT文本文件,说权限设置的很低,除Administrator外,其他用户无法读取到内容,直接向安全工程师"墨者"发出挑战,让其测试。

实训目标

1、掌握文件上传的技巧;
2、掌握IIS中间件存在的畸形解析漏洞;
3、了解Windows系统CMD命令执行;
4、了解查看操作系统安全补丁情况;
5、了解Windows操作系统的文件权限设置;
6、了解操作系统的溢出漏洞的提权方式;

解题方向

通过上传脚本文件,读取C盘下TXT文件内容。
在这里插入图片描述

解题思路:

这道题总体来说要用到的知识点很多,iis解析漏洞的利用,windows提权工具的使用。

一:我们需要收集信息,可以按F12查看到server 为iis6.0,程序语言为asp。
在这里插入图片描述

二:上传一句话木马,我这边上传了一个.txt的一句话木马,新建一个shell.asp的目录,这样shell.asp目录里面不管什么后缀的目录都会以.asp执行,尝试过1.asp;.jpg,发现不行,服务端对上传的文件做了重命名。
在这里插入图片描述

在这里插入图片描述

三:上传成功之后菜刀连接:
在这里插入图片描述

查看key所在的c盘文件,提示没有权限。
在这里插入图片描述

四:提权
在upload目录上传一个32位cmd.exe(这里一定要上传32位的,64位的无法执行)
在这里插入图片描述

右键打开cmd,这样就可以可以执行命令了,直接查看key显示的是拒绝访问。
在这里插入图片描述

查看系统补丁情况,放到补丁对比工具中对比,我这里使用了MS09-012/巴西烤肉工具
可以利用的工具很多。
在这里插入图片描述

这里就需要提权了,我们上传一个Churrasco.exe,然后调用工具查看key值。
C:\Inetpub\wwwroot\upload> Churrasco.exe “type c:\KEY_2702114221.txt”
/xxoo/–>Build&&Change By p
/xxoo/–>This exploit gives you a Local System shell
/xxoo/–>Got WMI process Pid: 1348
begin to try
/xxoo/–>Found token SYSTEM
/xxoo/–>Command:type c:\KEY_2702114221.txt
Mozhe5c2e1d0288d9dee85a25c7d93a5

其实还可以做很多操作,比如说新建管理员账户,如果机器开启了远程的3389端口的话就可以登录服务器了。

### 墨者学院 WebShell 文件上传漏洞分析与溯源方法 #### 背景概述 WebShell 是一种嵌入到目标服务器中的脚本程序,攻击者可以通过它远程控制受害者的服务器。文件上传漏洞通常允许攻击者通过伪造请求或其他手段绕过安全机制,在服务器上放置恶意脚本。 在墨者学院的相关题目中到的内容涉及多个方面,包括 MIME 类型篡改、禁用 JavaScript 绕过前端验证以及利用后缀名规避检测等技术[^1]。 --- #### 漏洞成因分析 文件上传漏洞的主要原因在于服务端对上传文件的安全校验不足。具体表现为以下几个方面: 1. **MIME 类型校验不严格** 攻击者可以使用工具(如 Burp Suite)抓取 HTTP 请求并修改其 MIME 类型字段,从而绕过基于内容类型的限制。例如,将 `.txt` 文件伪装为 `image/jpeg` 格式的图片文件。 2. **依赖客户端验证** 如果仅依靠浏览器端的 JavaScript 验证来阻止非法文件类型,则容易被禁用或绕过。一旦禁用了 JavaScript 功能,就可以轻松交不符合预期规则的文件[^2]。 3. **扩展名校验缺陷** 当某些应用只检查文件名而未深入解析实际内容时,可能会接受带有特殊后缀名(比如 `.php5`, `.pht` 等变种 PHP 扩展)的文件作为合法输入[^3]。这使得即使表面上看似正常的文件也可能隐藏潜在威胁。 --- #### 解决方案建议 为了有效防范此类问题的发生,可以从以下几方面着手改进防护措施: - 加强服务端逻辑设计, 不应单纯信任来自用户的任何数据; - 对于上传过程实施多重过滤策略, 如限定白名单内的 mime-type 和尺寸范围之外还需确认最终存储形式确实无害; - 定期审查现有代码库寻找可能存在的安全隐患点,并及时修补已知漏洞; 以下是实现上述部分功能的一个 Python 示例演示如何初步判断一个给定字符串是否可能是危险命令执行语句的一部分: ```python import re def is_potentially_dangerous(input_string): pattern = r'(?:exec|passthru|shell_exec|system|proc_open|popen)' match_result = re.search(pattern, input_string.lower()) return bool(match_result) test_strings = ["<?php echo 'hello'; ?>", "<?php system('ls'); ?>"] for s in test_strings: print(f"'{s}' -> {is_potentially_dangerous(s)}") ``` 此函数会返回 True 或 False 表明传入参数是否存在可疑的关键字组合。 --- #### 总结 通过对墨者学院案例的学习可以看出,针对 web shell 的防御工作需要综合考虑多层面的因素,从前端界面交互直至后台数据库操作均需保持高度警惕以防万一环节疏漏造成严重后果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值