实战|记一次有趣的文件上传绕过getshell

文章详细记录了一次渗透测试的过程,包括邮件信息收集、钓鱼尝试、Web打点策略,以及通过JS审计发现代码漏洞,利用文件上传白名单绕过获取shell权限的技巧。强调了在测试中细致的观察和创新的思路的重要性。

前言

记录一下某次授权的渗透测试,感觉思路还是挺不错的,所以记录一下,有些截图不全,开始之前,需要对环境进行一个简单的描述,由于这次目标是一个传统行业,人员整体安全意识可能比较差,所以前期准备了邮件信息收集和钓鱼,另外不清楚目标服务器是不是做了变态的设置,信一直发不过去,之后对邮件服务器添加了spf和dkim记录,信才发了过去,看样子目标部署了邮件网关设备,这样的话钓鱼的成功率不太大,之后就钓鱼和web打点同时进行。

曲折的web打点

拿到目标后的首要任务就是打点,按照常规手段对目标的域名,子域名,目录,端口,ip,ip段进行信息收集,之后进行指纹识别,发现目标集团在互联网上的暴露的业务并不多,由于集团对外的http业务很少,然后也没有登录,注册接口,后来对25端口爆破了一些邮箱,也没有进展,马上要准备放弃web打点了,但是在一个子域名下的敏感目录发现不太对劲,我们的细心的渗透大牛立刻开始对这个前端js审计~~~。

JS审计

发现这个js里的有个注释信息挺可疑,并留下了一串数字,猜测这个数字可能是记录产品版本号的,根据多年摸鱼经验,对于这种的突然出现的一串数字不能放过!!!于是开始了漫长的网盘,搜索引擎,码云,github敏感信息收集,这里推荐Git信息收集使用工具Gitrob。于是我们在github上发现了源码~~~
 

代码审计

拿到这个站点的部分源码,开始进行常规的java代码审计,通过对常见的sink函数进行定位,博主心中默念readobject,

在CTF比赛中,获取Web Shell以拿取Flag是一项常见的挑战任务。通常情况下,选手需要通过漏洞利用来上传或植入一个Web Shell,从而获得对目标系统的控制权限,最终提取出隐藏的Flag。 ### Web Shell的基本概念 Web Shell是一种恶意脚本文件,通常被攻击者上传到目标服务器上,用于远程控制服务器[^1]。它可以是PHP、ASP、JSP等格式,具体取决于目标服务器所使用的编程语言环境。例如,以下是一个简单的PHP Web Shell示例: ```php <?php if(isset($_POST['cmd'])) { echo "<pre>"; system($_POST['cmd']); echo "</pre>"; } ?> ``` 此代码接受来自HTTP POST请求中的`cmd`参数,并执行系统命令。这使得攻击者能够通过发送特定的POST请求(如使用`curl`或Burp Suite)来执行任意命令。 ### 获取Web Shell的常见方式 #### 1. 文件上传漏洞 CTF题目中经常会出现文件上传功能存在安全缺陷的情况。攻击者可以通过绕过文件类型检查,上传包含Web Shell的文件。例如,通过修改文件扩展名、使用`.php5`或`.phtml`等特殊扩展名绕过检测机制。 #### 2. 目录遍历与文件包含 如果应用程序存在目录遍历(Directory Traversal)或本地文件包含(LFI)漏洞,攻击者可以尝试读取敏感文件,甚至包含已上传的Web Shell文件。例如,通过构造类似`?page=../../uploads/zb.php`的URL来触发Web Shell。 #### 3. SQL注入结合文件写入 在某些情况下,SQL注入漏洞允许攻击者将Web Shell写入服务器文件系统。例如,在MySQL环境中,攻击者可能利用`INTO OUTFILE`语句将Web Shell写入Web根目录下的某个可访问路径。 ### 实战场景分析 根据提供的背景信息,参赛者在比赛中发现了一个名为`zb.php`的Web Shell,并且该Shell的密码为`pass`。这意味着攻击者可以通过向该文件发送POST请求,携带`pass`作为密码参数,从而执行任意命令。 例如,使用`curl`命令如下: ```bash curl -X POST http://target.com/path/to/zb.php -d "pass=whoami" ``` 通过这种方式,攻击者可以逐步探索目标系统,查找并读取Flag文件的内容。 ### CTF比赛中的Flag获取策略 一旦成功获取Web Shell,下一步就是寻找Flag文件的位置。通常,CTF比赛会将Flag存储在一个特定位置,如`/flag`、`/home/user/flag.txt`等。攻击者可以通过以下步骤进行探索: - 使用`ls`命令查看当前目录下的文件列表。 - 使用`cat /flag`或`cat /etc/flag`等命令直接读取Flag内容。 - 如果无法直接访问Flag文件,可以尝试提权操作,比如利用内核漏洞或弱权限配置。 ### 防御措施 为了防止Web Shell被上传和利用,开发者应当采取以下安全措施: - 对上传文件的类型进行严格限制,禁止执行类文件(如`.php`, `.jsp`)的上传。 - 对上传后的文件进行重命名,并将其存储在非Web根目录下。 - 设置适当的文件权限,确保上传的文件不可执行。 - 定期扫描Web目录,检测是否存在可疑的Web Shell文件。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值