Linux更换内核版本

本文最后更新于:2023-04-04 09:58

前言

参考链接:

是因为在复现提权漏洞的时候,漏洞与漏洞之间需要操作系统的内核版本不同,不同的内核版本会影响漏洞是否复测成功。但是,我们也不能因为这种事情就不停地用虚拟镜像装漏洞环境,这种方法太笨太麻烦了。所以我们要做的是更改系统内核版本,然后重启系统即可。

本次实验以Ubuntu为例,因为我们要用的环境也是Ubuntu的,其他的暂且一放。

Ubuntu

Ubuntu历史镜像下载链接:http://old-releases.ubuntu.com/releases/
Ubuntu历史kernel下载链接:https://kernel.ubuntu.com/~kernel-ppa/mainline/

我的基础环境为:

  • Ubuntu 14.04 LTS
  • 3.13.0-24-generic

以CVE-2018-18955为例,该漏洞要求Linux Kernel的范围在4.15.0~4.19.0且低于4.19.2

访问历史kenrel链接,找到4.15版本,其中rc后缀代表的是Release Candidate,意为发布候选版本,这个对于漏洞复现来说,影响应该不大吧。😆

点击进入文件夹,发现文件夹下有很多文件,内容大致如下:

其中前缀:

  • Linux-headers,指的是Linux开发头文件,.h文件
  • Linux-image,指的是编译好的内核
  • sources,指的是Linux内核源码文件

后缀主要是处理器架构,有:

  • arm64
  • amd64
  • i386
  • ……

他们的关系有时又要牵扯到他们的历史,这里不做过多介绍,下载amd64架构的image文件。

下载完成后,将其上传到Linux系统种,并使用root权限安装指定内核:

1
sudo dpkg -i linux-image-4.15.0-041500-generic_4.15.0-041500.201802011154_amd64.deb 
BASH

重新生成GRUB的启动菜单配置文件(/boot/grub/grub.cfg)。

1
sudo update-grub
BASH

查询可更换内核的序号。

1
cat /boot/grub/grub.cfg | grep menuentry
BASH

编辑/etc/default/grub修改启动引导。如果没有使用grub修改过内核,除注释第一行显示的应该是:

1
GRUB_DEFAULT=0
SHELL

0为默认kernel,我们需要将0修改为"Advanced options for Ubuntu>{需要更改的内核号}",内核号是从查询中得出的。

1
sudo vi /etc/default/grub
BASH

1
sudo update-grub
SHELL

更新启动项,重启完成后查看,内核更换成功。

Centos

参考链接:

我的环境跟链接作者的是一样的,都是Centos 7,我个人测试是成功的。


Linux更换内核版本
https://ahtoh.cn/2022/07/15/Linux更换内核版本/
作者
ahtoh
发布于
2022-07-15 12:50
许可协议