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

本文介绍了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       ADMINISTRATOR

Set 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-hpa

tee /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 ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

menuentry "start" {
	load_video
	insmod gzio
	if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
	insmod part_gpt
	insmod ext2
	set root='hd0,gpt2'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  115cd86a-146b-4c35-8c00-59c537ec34a0
	else
	  search --no-floppy --fs-uuid --set=root 115cd86a-146b-4c35-8c00-59c537ec34a0
	fi
	echo    '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_ldr
	echo    '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

四.截图

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

相关推荐

  1. 关于Linux环境LXD及Docker

    2024-06-16 07:24:03       19 阅读
  2. linux环境MySQL UDF

    2024-06-16 07:24:03       13 阅读
  3. 完整HTTP请求过程包括哪些内容

    2024-06-16 07:24:03       43 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 07:24:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 07:24:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 07:24:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 07:24:03       20 阅读

热门阅读

  1. 可以免费发外链的论坛有哪些?

    2024-06-16 07:24:03       7 阅读
  2. 012_redhat安装activemq

    2024-06-16 07:24:03       7 阅读
  3. Python

    Python

    2024-06-16 07:24:03      7 阅读
  4. 双指针【1】两数之和基础版 归并排序

    2024-06-16 07:24:03       6 阅读
  5. TPS、QPS、CPS、PV和UV

    2024-06-16 07:24:03       8 阅读
  6. 如何用蒙版制作玻璃划动效果

    2024-06-16 07:24:03       7 阅读
  7. Python知识点总结

    2024-06-16 07:24:03       5 阅读
  8. Redis

    Redis

    2024-06-16 07:24:03      8 阅读
  9. 数据结构之B树

    2024-06-16 07:24:03       7 阅读
  10. 华为Atlas 300I 推理卡显卡安装

    2024-06-16 07:24:03       7 阅读
  11. 数据分析的流程是啥样?

    2024-06-16 07:24:03       7 阅读
  12. RAG下的prompt编写探索

    2024-06-16 07:24:03       7 阅读