提权
提权做的少,感觉真碰上了只觉得sudo熟悉,多多看下其他可行可考的方法
定时任务
定时任务(cron job)被用于安排那些需要被周期性执行的命令。
利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间内周期性地运行。
cron 是 Linux 或者类 Unix 系统中最为实用的工具之一。
cron 服务(守护进程)在系统后台运行,并且会持续地检查 /etc/crontab 文件和 /etc/cron.*/ 目录。它同样也会检查 /var/spool/cron/ 目录。crontab -l cat /etc/crontab``ls -l /etc/cron*查看定时任务
软链接
湾区杯有一道定时任务提权题目
1 | !/bin/bash |
注意几个点
- 这个脚本是root权限,可以复制flag等文件
- 这里用的是cp复制,而*属于我们可以注入的地方
- chmod 755 -R,说明这个目录是可读的
我们需要构造一个名称”-L”的文件,这要可以复制软链接指向的文件
然后我们再建立一个软链接指向/flag等待定时任务执行即可读取flag1
2touch -- "-L"
ln -s /flag link
文件利用提权
shadow文件
可读
ls -liah /etc/shadow
枚举shadow文件,发现全局可读,存在利用条件
提取出hash用户
1 | cat /etc/shadow | grep ':\$' |
得到root密码,登录系统
可写
1 | mkpasswd -m sha-512 123456 |
即可登录获取权限
不难,但是得知道
suid权限
suid允许普通用户在无需切换到超级用户的情况下以root身份执行命令,这样本来一个是test的用户,如果当前环境有一个base32具备sudo权限,可以以root身份执行。
那么可以执行base32 /flag读取高权限的文件
这毫无疑问,是提权学习的重点
查找suid
1 | find / -user root -perm -4000 -print 2>/dev/null |
1 | find / -perm -u=s -type f 2>/dev/null |
找到这些可执行程序之后,就可以查找是否有suid权限ls -al /usr/bin/su
如果有,类似base,rev,nl可以直接读/flag
也存在一些出题人,重写了类如rev,这时候需要你base64把二进制文件弄下来进行逆向
这里推荐一个网站,很方便查找https://gtfobins.github.io/
若干suid程序的提权方法
find
1 | find 具有suid权限的filename -exec whoami \; -quit |
cp/mv
据我了解cp和mv覆盖方式是差不多的,这里以cp进行详解
主要是利用cp命令覆盖/etc/passwd从而进行提权,这里我看了一下网上都没有写主要步骤的,都是搪塞了过去,我这里研究了一下原理,写一下我的cp覆盖过程
1 | whoami |
bash
bash命令有的靶机是设置了suid权限的,有的没有设置suid权限
我的靶机没有设置suid权限,这里就口头描述一下
1 | id |
awk
awk利用以下命令进入shell,其原理和上面的bash差不多
1 | awk 'BEGIN {system("/bin/bash")}' |
至于其他若干可执行命令,可自行在网站进行查询
其他奇怪的提权方式
1 | cat ~/.bash_history |
这个命令可以查看当前用户使用过的历史命令
有可能会得到root登录的密码
结语
各式提权方式很多,但是等实际碰到了再做归纳
参考文章
https://www.huangmj.com/17116743651246.html#5-sudo-awk
https://www.cnblogs.com/yuy0ung/articles/18421480
https://www.huangmj.com/17123057141312.html
https://haslet007.cn/2025/03/27/suid%E6%8F%90%E6%9D%83sudo%E6%8F%90%E6%9D%83/