📢 免责声明
添加超级用户账号命令:
echo "test:x:0:0::/:/bin/sh" >> /etc/passwd #增加超级用户账号passwd test #修改test的密码为123456
在默认的情况下,root不允许远程SSH密码登录!!!(配置文件默认注释了, #PermitRootLogin prohibit-password ,且没有PermitRootLogin yes)

/etc/ssh/ssh_config文件下的PermitRootLogin 配置项的选项 :
PermitRootLogin 配置项有几个可能的选项,决定了如何允许 root 用户远程登录:
PermitRootLogin yes: 允许 root 用户通过 SSH 登录,无论是使用密码还是密钥认证。PermitRootLogin no: 禁止 root 用户通过 SSH 登录,无论是密码还是密钥认证。PermitRootLogin prohibit-password: 允许 root 用户通过 SSH 登录,但只允许使用 SSH 密钥认证,而禁止使用密码进行登录。PermitRootLogin without-password: 同上,允许通过密钥认证但禁止密码认证(这个选项与 prohibit-password 等价)。PermitRootLogin forced-commands-only: 允许 root 用户通过 SSH 登录,但仅限于执行特定命令(例如,通过配置文件指定的特定命令),这是一个更为严格的安全设置。通过vim在/etc/ssh/sshd_confgi中添加(PermitRootLogin yes),并重启ssh服务(systemctl restart ssh)即可成功远程登录root权限用户!!!


远程登录成功!!!


echo "0xSec:x:1000:1000::/:/bin/sh" >> /etc/passwd #增加普通用户账号passwd 0xSec #修改0xSec的密码为123456
用户名 = 可读标签UID = 真正身份系统内部识别身份用的是:
UID(User ID)不是字符串名字。
默认普通用户:
kali:x:1000:1000:...而你追加了:
0xSec:x:1000:1000::/:/bin/sh现在 /etc/passwd 里出现:
kali:x:1000:1000:...0xSec:x:1000:1000:...两个用户名👉 同一个 UID=1000
whoami 实际调用的是:
getpwuid(getuid())关键点:
返回第一个匹配 UID=1000 的条目
而 /etc/passwd 里:
kali 在前0xSec 在后所以返回:
kali反之返回:
0xSec

#centos系列:useradd hhh -u 0 -o -g root -G root|| echo "123456" | passwd --stdin hhh #创建账户hhh、密码123456且为root权限useradd hhh -u 0 -o -g root -G root|| echo "123456" | passwd --stdin hhh #创建账户hhh、密码123456且为root权限#debian/ubuntu系列:useradd hhh -u 0 -o -g root -G root|| echo "hhh:123456" | chpasswduseradd hhh -u 0 -o -g root -G root|| echo "hhh:123456" | chpasswd



#centos系列:useradd hhh02echo "123456" | passwd --stdin hhh02#debian/ubuntu系列:useradd hhh02echo "hhh02:123456" | chpasswd
对密码强队有要求
使用 -e 选项启用转义字符,使得 \n 可以正确表示换行符,passwd 需要两次输入密码。确保两次密码一致,才能成功更改密码。
useradd -u 0 -o -g root -G root hhh03 |echo -e "0xSec123456\n0xSec123456"|passwd hhh03useradd -u 0 -o -g root -G root hhh03 |echo -e "0xSec123456\n0xSec123456"|passwd hhh03

awk -F: '$7 !~ /nologin|false/ {print $1}' /etc/passwd
命令解释:
① -F:
指定分隔符为冒号 :
因为 /etc/passwd 是冒号分隔格式。
② $7 !~ /nologin|false/
含义:
$7!~/nologin|false/意思是:
👉 只保留 shell 不是:
/sbin/nologin/bin/false的用户
③ {print $1}
输出用户名。
awk -F: '$2 !~ /^!/ && $2 !~ /^\*/ {print $1}' /etc/shadow
命令逐段解释
$2 !~ /^!/
密码字段 不是以 ! 开头
$2 !~ /^\*/
密码字段 不是以 * 开头
&&
两个条件都要满足
每一行结构形式:
用户名:密码占位:UID:GID:描述:家目录:登录Shell字段编号从 1 开始:
字段号 | 含义 |
$1 | 用户名 |
$7 | 登录 shell |
: 分隔,共 9 个字段:用户名:加密密码:上次修改密码的日期:最小密码年龄:最大密码年龄:密码过期前警告天数:密码过期后的宽限天数:账户失效日期:保留字段Shell 路径 | 是否可交互登录 | 类型 | 说明 |
| ✅ 可以 | 主流交互 Shell | 默认 Shell,绝大多数发行版使用 |
| ✅ 可以 | 标准 Shell | POSIX 标准,通常链接到 bash 或 dash |
| ✅ 可以 | 增强型 Shell | 功能丰富,很多安全研究员常用 |
| ✅ 可以 | 轻量 Shell | Debian/Ubuntu 默认 指向它 |
| ✅ 可以 | Korn Shell | 企业系统常见 |
| ✅ 可以 | C Shell 变体 | 较少见 |
| ✅ 可以 | 传统 C Shell | 旧系统使用 |
| ✅ 可以 | 现代 Shell | 交互体验友好 |
| ❌ 不可登录 | 禁止登录 | 系统服务账号常用 |
| ❌ 不可登录 | 禁止登录 | 某些发行版路径不同 |
| ❌ 不可登录 | 直接退出 | 强制拒绝登录 |
空字段 | ❌ 通常不可登录 | 异常 | 配置错误或特殊账号 |
cat /etc/shells
awk -F: '$3==0 {print$1}' /etc/passwd
发现除了 root 账户,还有账户:test、hhh、hhh03都有 root 权限,因为只有 root 账户是管理员自己创建的属于正常的,其它账户都不是他创建的属于可疑账户。
进入 /home 目录,一半创建账户之后,会在 home 目录下新建一个账户的文件夹,因此可以查看账户文件夹的的创建时间来确定账号创建时间

发现只有kali的
/因为:
这其实是一个常见权限维持手法。
last -i | grep pts/
发现在2.28、2.27有root、0xSec、test、hhh02、hhh、test多个可疑用户ssh登录
终端类型 | 含义 | 是否 SSH |
pts/x | 伪终端 | ✅ SSH / 远程 |
tty1 | 本地控制台 | ❌ 本地 |
:0 | 图形界面 | ❌ 本机 GUI |
console | 本地物理终端 | ❌ |
lastb
history

userdel -f 0xSecuserdel -f testuserdel -f hhhuserdel -f hhh02userdel -f hhh03