Ubuntu 18.04下普通用户的一次提权过程

2024-06-16 00:12

本文主要是介绍Ubuntu 18.04下普通用户的一次提权过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Ubuntu 18.04下普通用户的一次提权过程

  • 一.背景介绍:
  • 二.主要调试过程:
  • 三.相关命令:
    • 1.设置BMC密码,获取BMC IP
    • 2.找一台ubuntu搭建TFTP服务,用来替换grub.cfg文件
    • 3.从调试服务器的/boot/grub/grub.cfg中提取出recovery mode的配置,简化并生成新的配置文件grub.cfg,放在tftp服务的目录下/srv/tftp/grub.cfg
    • 4.UEFI Shell中操作步骤
  • 四.截图

本文介绍了Ubuntu 18.04下普通用户的一次提权过程

一.背景介绍:

  • 1.OS为Ubuntu 18.04.6 LTS
  • 2.docker服务非开机自启动,需要管理员手动启动(之前并不知道)
  • 3.重启后,数据盘也需要管理员手动挂载(之前并不知道)
  • 4.目前给我的帐号为普通用户
  • 5.我需要测试关掉IOMMU的效果,得进BIOS设置,服务器在远程,又遇到周末没人支持
  • 6.万幸我的帐号有–privileged启动容器的权限

二.主要调试过程:

  • 1.以–privileged创建容器,安装ipmitool,设置BMC密码(不需要知道原始密码也能设置)
  • 2.通过BMC的控制台进入BIOS设置,关掉IOMMU,重启服务器
  • 3.进入OS发现docker服务没有启动,我又没有root权限,仅有BMC的权限
  • 4.通过BMC的控制台,重启服务器,发现选择不了ubuntu的启动项,不能借此进入恢复模式
  • 5.再次通过BMC的控制台,重启服务器,按F11,选择UEFI Shell
  • 6.在UEFI Shell中,备份grub.cfg,修改grub.cfg文件(设置为恢复模式)
    执行grubx64.efi,进入恢复模式,将我的用户名加入/etc/sudoers
    恢复grub.cfg,重启OS,我的帐号即可享有root权限

三.相关命令:

1.设置BMC密码,获取BMC IP

docker run --gpus all --shm-size=32g -ti -e NVIDIA_VISIBLE_DEVICES=all \--privileged --net=host --rm nvcr.io/nvidia/pytorch:23.07-py3 /bin/bash# 1.安装ipmitool工具
apt update
apt install ipmitool  -y	# 2.查询BMC用户列表
ipmitool user list 1# 3.修改admin的密码(admin用户对应的ID为2)
ipmitool user set password 2 Hello@123# 4.获取BMC IP
ipmitool lan print | grep "IP Address"

输出

ID  Name             Callin  Link Auth  IPMI Msg   Channel Priv Limit
1                    true    false      false      Unknown (0x00)
2   admin            false   false      true       ADMINISTRATORSet User Password command successful (user 2)IP Address Source       : Static Address
IP Address              : xxx.xxx.xxx.xxx

2.找一台ubuntu搭建TFTP服务,用来替换grub.cfg文件

apt install tftpd-hpa tftp-hpatee /etc/default/tftpd-hpa <<-'EOF'
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
EOF
mkdir -p /srv/tftp
chown -R tftp:tftp /srv/tftp
chmod -R 755 /srv/tftp
systemctl restart tftpd-hpa
systemctl enable tftpd-hpa

3.从调试服务器的/boot/grub/grub.cfg中提取出recovery mode的配置,简化并生成新的配置文件grub.cfg,放在tftp服务的目录下/srv/tftp/grub.cfg

普通用户有权限读取/boot/grub/grub.cfg,但无法修改

tee /srv/tftp/grub.cfg <<-'EOF'
set timeout=30
function load_video {if [ x$feature_all_video_module = xy ]; theninsmod all_videoelseinsmod efi_gopinsmod efi_ugainsmod ieee1275_fbinsmod vbeinsmod vgainsmod video_bochsinsmod video_cirrusfi
}menuentry "start" {load_videoinsmod gzioif [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fiinsmod part_gptinsmod ext2set root='hd0,gpt2'if [ x$feature_platform_search_hint = xy ]; thensearch --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  115cd86a-146b-4c35-8c00-59c537ec34a0elsesearch --no-floppy --fs-uuid --set=root 115cd86a-146b-4c35-8c00-59c537ec34a0fiecho    'Loading Linux 5.4.0-120-generic ...'linux   /boot/vmlinuz-5.4.0-120-generic root=UUID=115cd86a-146b-4c35-8c00-59c537ec34a0 ro recovery nomodeset dis_ucode_ldrecho    'Loading initial ramdisk ...'initrd  /boot/initrd.img-5.4.0-120-generic
}
EOF

4.UEFI Shell中操作步骤

# 1.通过BMC的控制台,F11选择,进入恢复模式# 2.配置IP
ifconfig -s eth1 static 192.168.1.100 255.255.255.0 192.168.1.1# 3.Ping上面的tftp服务器,确认网络通畅
ping 192.168.1.200# 4.进入grub目录
FS0:
cd EFI\ubuntu# 5.备份grub.cfg
cp grub.cfg grub.cfg.bk# 6.从tftp下载新的grub.cfg,并替换
rm grub.cfg
tftp 192.168.1.200 grub.cfg# 7.启动grub,进入恢复模式
grubx64.efi# 8.选择root模式# 9.vim /etc/sudoers,把自己的用户名加进去# 10.恢复grub.cfg
mv /boot/efi/EFI/ubuntu/grub.cfg.bk /boot/efi/EFI/ubuntu/grub.cfg# 11.reboot

四.截图

在这里插入图片描述
在这里插入图片描述!

这篇关于Ubuntu 18.04下普通用户的一次提权过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064978

相关文章

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.