一、啥是反弹shell
1.1含义
反弹shell / 反向shell / 反弹壳 / 反弹外壳
客户端连接服务端为正向连接(如:远程桌面、ssh等),反向连接弹shell(即反弹shell为攻击者为服务端,受害者主机为客户端主动连接攻击者的服务端)
1.2目的
• 对方主机在外网无法访问 • 对方主机防火墙限制,只能发送请求,不能接收请求 • 对方IP动态变化
• 攻击了一台主机需要在自己的机器上交互式地执行目标机器中的cmd/bash命令
• 遇到各种AV(AntiVirus,杀软)对正向的连接数据包检测,对出网的检测不严格
1.3原理
让对方目标机器主动连接攻击者机器(攻击者指定服务端,受害者主机主动连接攻击者的服务端程序)
- 攻击者A开启19111端口TCP服务
- 受害者B连接19111端口TCP服务
- A、B建立TCP连接
- A通过TCP服务将待执行命令发送到B
- B执行命令后将结果发送给A
二、具体实操
2.1 举例说明:linux bash反弹shell
2.1.1 操作方法
攻击者:192.168.123.192 受害者:192.168.159.129
攻击者nc监听端口:
受害者执行:
攻击者成功拿到一个cmd shell:
2.1.2 命令原理
通过查看受害者运行的服务可知:在受害者本地开启了一个bash通过46944端口向远程地址192.168.123.192的19111端口走tcp协议
(漏洞特征!运维可以通过此标志检查主机是否沦陷,以及远控主机是谁!此方法经典但不隐蔽!!!)
命令解析如下:
参数 | 详细解释 |
---|---|
bash -i | 产生一个交互式的bash shell |
>& | 将标准输入和标准错误输出重定向到文件(目的:为了不在受害者终端中显示执行的命令) 当>&后边接文件时,表示将表示将标准输入输出重定向到文件 当>&后边接文件描述符时,表示讲前面的文件描述符重定向到后边的文件描述符 |
/dev/tcp(/ip/port) | reverse order while sorting |
文件描述符 | 0 - stdin,代表标准输入 1 - stdout,代表标准输出 2 - stderr,代表标准错误输出 |
0>&1 | 将标准输入重定向到标准输出 |