当前位置: 首页 > article >正文

BUUCTF [HITCON 2017]SSRFme 1 深度解析:从代码审计到命令执行的完整攻击链

1. 代码审计从沙盒逃逸到命令执行的突破口拿到这道题目的源码时我第一眼看到shell_exec和GET的组合就意识到事情不简单。先来看关键代码段$sandbox sandbox/ . md5(orange . $_SERVER[REMOTE_ADDR]); mkdir($sandbox); chdir($sandbox); $data shell_exec(GET . escapeshellarg($_GET[url]));这里有几个危险信号直接使用shell_exec执行系统命令命令拼接了用户可控的$_GET[url]参数虽然用了escapeshellarg做过滤但后面我们会看到如何绕过沙盒目录的生成逻辑也很有意思它用当前IP地址的MD5值作为目录名。假设我们的IP是127.0.0.1那么实际创建的目录会是sandbox/cfbb870b58817bf7705c0bd826e8dba7这个沙盒机制看似安全但其实存在致命缺陷。GET命令是Linux下的一个HTTP客户端工具类似curl的简化版通常用于获取网页内容。但关键在于——它不仅能获取HTTP资源还能处理本地文件和其他协议2. 漏洞利用从SSRF到RCE的完整链条2.1 初探SSRF文件读取我们先尝试最基本的SSRF利用?url./../../filenametest这个payload做了两件事通过相对路径./../../向上跳转目录将读取到的内容写入沙盒内的test文件访问生成的文件后我们发现可以列出目录结构。继续向上跳转?url./../../../../../filenametest这时候就能看到根目录下的文件了。但直接读取flag文件会发现内容为空这是因为题目设置了需要执行/readflag二进制文件才能获取真正的flag。2.2 突破escapeshellarg的限制核心难点在于如何绕过escapeshellarg的限制。这个函数会给参数添加单引号并转义已有单引号例如escapeshellarg(file:bash -c /readflag) // 输出file:bash -c /readflag看似安全但结合GET命令的特性我们可以利用file:协议和管道符实现突破。最终构造的payload如下?urlfile:bash -c /readflag|filenameresult这里有几个关键点file:协议让GET命令执行本地文件|管道符将前一个命令的输出作为输入整个命令会被bash解析执行2.3 命令执行的完整流程让我们拆解下实际执行的命令流服务器拼接命令GET file:bash -c /readflag|bash解析时会将其转化为bash -c /readflag执行结果通过管道传递给GET命令最终输出被写入result文件访问生成的文件就能看到flag内容了。这个过程中最精妙的是如何利用GET命令的特性绕过过滤这也是这道题目的核心考点。3. 技术细节深度剖析3.1 GET命令的隐藏特性大多数人对GET命令的认识停留在HTTP客户端功能但它其实支持多种协议http://https://file:ftp://特别是file:协议它允许直接读取本地文件内容。但题目更进一步利用它执行了系统命令。3.2 escapeshellarg的绕过艺术escapeshellarg通常被认为是安全的但在这个场景下被完美绕过。关键在于单引号包裹的字符串中管道符|仍然会被bash解析GET命令会处理file:协议后面的内容整个字符串最终会被bash二次解析这种多层解析的特性创造了安全过滤被绕过的条件。3.3 Linux管道符的妙用管道符|在这个攻击链中起到了关键作用它让bash将GET命令的参数作为命令执行前一个命令的输出可以作为后一个命令的输入在这个场景下它帮助跳出了GET命令的上下文4. 防御方案与最佳实践4.1 安全的命令执行实现如果业务必须使用命令执行应该使用白名单限制可执行的命令避免直接拼接用户输入考虑使用更安全的替代方案如PHP的proc_open$descriptorspec [ 0 [pipe, r], 1 [pipe, w], 2 [pipe, w] ]; $process proc_open(safe_command, $descriptorspec, $pipes);4.2 输入过滤的强化方案单纯的escapeshellarg不够安全应该校验输入是否符合预期格式过滤特殊字符如|、、;使用正则表达式严格限制输入范围if (!preg_match(/^[a-z0-9\-\.]$/i, $_GET[url])) { die(Invalid input); }4.3 沙盒环境的正确实现沙盒机制需要使用chroot等真正的隔离技术设置适当的文件系统权限禁用危险函数和系统命令# 创建真正的隔离环境 mkdir -p /var/sandbox/{bin,lib,lib64} chown nobody:nogroup /var/sandbox chmod 750 /var/sandbox这道题目展示了从SSRF到RCE的完整攻击链关键在于理解每个组件的特性和它们组合时产生的化学反应。在实际开发中任何涉及命令执行和文件操作的功能都需要格外小心多层次的防御措施才能确保安全。

相关文章:

BUUCTF [HITCON 2017]SSRFme 1 深度解析:从代码审计到命令执行的完整攻击链

1. 代码审计:从沙盒逃逸到命令执行的突破口 拿到这道题目的源码时,我第一眼看到shell_exec和GET的组合就意识到事情不简单。先来看关键代码段: $sandbox "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"…...

Modbus调试工具实战指南:从入门到精通

1. Modbus调试工具入门指南 第一次接触Modbus调试工具时,我也是一头雾水。记得当时为了调试一个温控器,整整折腾了两天都没能成功通讯。后来才发现,原来是因为波特率设置错误。这种经历让我深刻理解到,掌握Modbus调试工具的基础知…...

FreeCAD绘图尺寸标注插件终极指南:如何快速掌握专业工程图纸标注

FreeCAD绘图尺寸标注插件终极指南:如何快速掌握专业工程图纸标注 【免费下载链接】FreeCAD_drawing_dimensioning Drawing dimensioning workbench for FreeCAD v0.16 项目地址: https://gitcode.com/gh_mirrors/fr/FreeCAD_drawing_dimensioning FreeCAD绘图…...

一图胜千言:从LSTM到BiLSTM的演进与实战

1. 从RNN到LSTM:为什么我们需要记忆门控? 记得我第一次用RNN处理文本数据时,遇到一个头疼的问题——模型总是记不住前文的关键信息。比如分析"虽然菜品一般,但服务态度很好"这样的句子时,模型总是被后半句的…...

BilibiliDown:跨平台B站视频下载解决方案全面解析

BilibiliDown:跨平台B站视频下载解决方案全面解析 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bi…...

让你的小爱音箱变身私人音乐管家:XiaoMusic项目完全指南

让你的小爱音箱变身私人音乐管家:XiaoMusic项目完全指南 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 想象一下,每天早晨被自己喜欢的音乐…...

抖音素材备份神器:douyin-downloader 完整使用指南

抖音素材备份神器:douyin-downloader 完整使用指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…...

北斗短报文RDSS协议实战:手把手教你用C语言搞定中文GBK编码与浮点数传输

北斗短报文RDSS协议实战:手把手教你用C语言搞定中文GBK编码与浮点数传输 北斗短报文通信在野外监测、应急救灾等领域有着不可替代的作用。想象一下,当你在青藏高原部署的气象站需要回传数据,或是渔船在远海需要发送求救信息时,北斗…...

告别时钟漂移:用Verilog在Xilinx A7 FPGA上实现8B10B编码的完整流程与避坑指南

高速串行通信的时钟守护者:Xilinx A7 FPGA上8B10B编码实战全解析 时钟同步问题就像高速公路上突然出现的减速带——当你以Gbps速率传输数据时,哪怕微小的时钟漂移都可能导致整个通信链路崩溃。这就是为什么我在设计Xilinx Artix-7系列FPGA的高速接口时&a…...

如何让B站缓存视频重获新生?m4s-converter一键转换MP4全攻略

如何让B站缓存视频重获新生?m4s-converter一键转换MP4全攻略 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经遇到过这样的…...

Java Lambda里想改个变量值,编译器总报错?试试这3个绕过‘final’限制的实战技巧

Java Lambda变量修改难题:3种突破final限制的工程实践 刚接手一个多线程数据处理的Java项目时,我发现一个有趣的现象——在Lambda表达式里想修改外部变量,编译器就像个固执的安检员,死活不让通过。这不禁让我思考:为什…...

intv_ai_mk11 GPU部署避坑指南:解决乱码、延迟高、无响应等6类常见问题

intv_ai_mk11 GPU部署避坑指南:解决乱码、延迟高、无响应等6类常见问题 1. 环境准备与快速部署 在开始使用intv_ai_mk11 AI对话机器人前,确保您的GPU服务器满足以下基本要求: 操作系统:推荐Ubuntu 20.04/22.04 LTSGPU驱动&…...

域服务基础概念

(一)、域 定义:由DC(域控制器)统一管理用户基本信息,计算机,权限,组策略,安全策略的计算机逻辑组域是最小的安全边界域必须依赖DNS服务 (二)、三大…...

智能桌面分区革命:用NoFences打造你的Windows效率空间

智能桌面分区革命:用NoFences打造你的Windows效率空间 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 还在为杂乱的桌面图标而烦恼吗?NoFences是一款创…...

2026南宁建筑行业AI获客落地指南:AI获客服务商参考、成本与时效全详解

2026年南宁建筑行业机遇与挑战并存:平陆运河、中国—东盟自贸区3.0版、城市更新等重大项目持续释放需求,但2025年本地新增建筑相关企业超1200家,传统获客模式效能断崖式下滑。数字化精准获客已成为南宁建筑企业生存发展的核心命题。本文基于2…...

TCP可靠传输的基石:从停止等待到滑动窗口,ARQ协议如何守护你的数据?

1. 从零理解ARQ协议:TCP可靠传输的守护者 想象你正在给朋友寄一封重要信件。如果只是简单地把信扔进邮筒,你怎么知道对方是否收到?现实中我们可能会要求对方签收后寄回回执——这正是ARQ协议(自动重传请求)的核心思想。…...

别再瞎调K-Means的K值了!用sklearn的silhouette_score和silhouette_samples帮你科学选簇数

科学选择K-Means聚类数量的实战指南:从轮廓系数到可视化诊断 第一次接触K-Means聚类时,很多人都会陷入一个误区——凭直觉选择K值。你可能见过这样的场景:数据科学家盯着肘部法则(Elbow Method)生成的折线图&#xff0…...

FPGA制造与测试全流程

FPGA制造与测试全流程(从设计到出货) FPGA是可编程逻辑芯片,核心结构含LUT、触发器、可编程互联、I/O、配置SRAM/Flash,制造与测试分前端设计→晶圆制造→晶圆测试(CP)→封装→封装测试(FT)→可靠性/系统测试→出货六大阶段&…...

AI赋能CI/CD:用Gemini一键生成高效脚本

技术文章大纲:Gemini实战——用AI写CI/CD脚本引言CI/CD在现代软件开发中的重要性传统编写CI/CD脚本的挑战(复杂性、维护成本)AI(如Gemini)如何简化脚本生成过程理解Gemini与CI/CDGemini的核心能力(自然语言…...

Excel公式美化终极指南:让复杂公式一目了然的免费工具

Excel公式美化终极指南:让复杂公式一目了然的免费工具 【免费下载链接】ExcelFormulaBeautifier Excel Formula Beautifer,make Excel formulas more easy to read,Excel公式格式化/美化,将Excel公式转为易读的排版 项目地址: https://gitcode.com/gh_mirrors/ex/…...

小米手表表盘设计终极指南:如何快速设计个性化表盘

小米手表表盘设计终极指南:如何快速设计个性化表盘 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create 你是否厌倦了千篇一律的小米手表表盘&#xff1…...

别再让电机乱抖了!手把手教你用51单片机+TB6600驱动42步进电机(附完整接线图与C代码)

51单片机精准控制42步进电机实战指南:从接线到代码全解析 刚接触步进电机控制的新手们,是否遇到过这样的场景:按照教程接好线,烧录完程序,满怀期待地按下电源——结果电机要么纹丝不动,要么疯狂抖动发出刺耳…...

APK Installer:在Windows上轻松安装安卓应用的终极方案

APK Installer:在Windows上轻松安装安卓应用的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了臃肿的安卓模拟器?是否想在…...

如何用Lan Mouse实现跨设备键鼠共享:多电脑无缝控制的终极方案

如何用Lan Mouse实现跨设备键鼠共享:多电脑无缝控制的终极方案 【免费下载链接】lan-mouse mouse & keyboard sharing via LAN 项目地址: https://gitcode.com/gh_mirrors/la/lan-mouse 你是否曾经在多个电脑间来回切换时感到困扰?每次都要移…...

国家中小学智慧教育平台电子课本解析工具:一键下载PDF教材的终极解决方案

国家中小学智慧教育平台电子课本解析工具:一键下载PDF教材的终极解决方案 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本…...

PyTorch 模型部署:TorchScript vs ONNX 深度对比

PyTorch 模型部署:TorchScript vs ONNX 深度对比 核心结论 TorchScript:适用于 PyTorch 生态系统内的部署,支持动态图和静态图,调试友好ONNX:跨平台部署标准,支持多种推理引擎,生态系统丰富性能…...

Topit:深度解析macOS窗口强制置顶技术原理与实战应用

Topit:深度解析macOS窗口强制置顶技术原理与实战应用 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 在macOS多任务处理场景中,开发者、…...

SLF4J的学习路线

SLF4J 是 Java 生态里一个日志组件 先搞懂“它不是日志框架,而是日志门面” 1. 先打基础:先搞懂它到底是什么 这一阶段目标只有一个: 分清楚这几个角色: SLF4J:日志接口 / 门面Logback / Log4j2:真正输出…...

AI 技术在招投标文档编制中的应用实践

随着生成式 AI 技术在办公领域的普及,传统依赖人工完成的大量文本处理工作,正在逐步走向智能化与自动化。招投标场景下的标书编制工作,由于文档结构复杂、条款繁多、格式要求严格,成为 AI 辅助办公的典型落地场景。本文从技术应用…...

ESXi 定时快照与自动清理:脚本化运维实战

1. 为什么需要自动化快照管理 在虚拟化环境中,快照就像给虚拟机拍了一张"照片",能够完整记录某个时间点的系统状态。想象一下,当你在测试新软件或者进行系统升级时,突然发现出了问题,这时候如果能一键恢复到…...