Locker靶机—难度easy知识点-分号截断,Sulogin #
Nmap扫描发现端口开放 #
我们访问发现一个网页感觉没什么关键地方
这里穿越啊 注入啊 包含 都不行
结果使用分号截断
所以平时多用分号没问题
拿到shell权限 #
我们到web权限查看发现一个sulogin
sulogin: 用于 单用户模式下获取 root 权限 如
- 系统故障修复(如忘记 root 密码时重置密码)。
- 维护模式下执行特权操作(需通过安全验证)。
它可以直接读取环境变量里面的值
例如:export SUSHELL=/tmp/恶意程序 && sulogin 会直接执行 /tmp/恶意程序。
| 工具 | 环境变量依赖 | 执行逻辑 | 安全设计目的 |
|---|---|---|---|
sulogin |
仅依赖 自定义变量 | 直接执行指定路径的程序 | 避免被 PATH 注入恶意程序 |
cat 等命令 |
依赖 PATH | 按 PATH 顺序搜索可执行文件 | 提供用户自定义路径的灵活性 |
拿root #
我们用老版本的C语言编写一个设置系统命令的代码
C语言代码
#include<stdio.h> // 基础输入输出库
#include<stdlib.h> // 提供 system() 等函数,用于执行系统命令
#include<unistd.h> // 提供 setuid()、setgid() 等系统调用
int main(){
setuid(0); // 将进程的有效用户 ID 设置为 0(root 用户的 UID)
setgid(0); // 将进程的有效组 ID 设置为 0(root 组的 GID)
system("/bin/bash"); // 执行 /bin/bash,启动一个新的 Shell
}
为什么要建立C文件
- 区别:C 程序通过
setuid(0)直接修改进程权限,而 Shell 脚本依赖外部机制(如 SUID 权限)间接提权。
我们WGET下来添加X 后 记得导入环境变量SUSHELL是我自定义的变量他会优秀读取后读/etc/passwd的root
总结一下 #
1:多用用;截断
2:sulogin是 Linux 系统中专门用于单用户模式的登录程序,路径为/sbin/sulogin。当系统进入单用户模式时,会自动调用 sulogin`,要求用户输入 root 密码(部分旧系统可直接进入)。 这靶机把root锁定了不能SU ROOT 感叹号可以把root锁定在/etc/shadow里面
root:!:18649:0:99999:7::: # 表示 root 被锁定
本身可以-e 获得权限可能被锁定了就不行
SUSHELL是sulogin调用的另一个环境变量 手动指定就行
3:单用户模式是操作系统的一种特殊启动状态,仅允许一个超级用户(root)登录系统,且不加载网络服务、图形界面等非必要组件
4:sulogin 和 path 的区别
4.1sulogin 会执行你的命令 安全风险- 依赖 PATH 可能引入路径遍历风险
4.2path会找命令的程序找到就执行 比如 CAT他就会在如BIN里面找 安全风险 - 环境变量修改