第十届御网杯线下网络安全赛项部分题解(与复盘)
一、前言
我是菜鸡,没能拿到一等奖>﹏<
以下是正文。
二、组网技术
这道题是新出的,所以说我们是一点儿不会。在比赛之前,主办方也没有说用的路由器交换机是哪个品牌的,所以说我们只能赌。我就赌了华为,很显然,我们输了。o(≧口≦)o

事实证明我们等了不止一个小时ㄟ( ▔, ▔ )ㄏ
1 | 子任务描述: |
第一题还算稍微简单一些,不论是华为还是思科,大体思路还是相同的。

第一题任务场景主要是在这个核心交换机中。
主要创建vlan的代码如下
1 | enable |

配置好之后,我不知道从哪儿来了一个vlan 1,当时我以为这只是无伤大雅的bug,最后就没理
之后就是把接口编入vlan组的代码
1 | int g0/0 |

主要就是这三行代码,之后把另外几个接口编入另外一个vlan组就是把接口和vlan编号改一下的事情
然后就喜提

然后就发现了各种各样的问题。比如说我这里设置的是vlan 1000,最后却显示的是vlan 100。

还有之前的突然冒出来的vlan 1

然后在进行查阅的过程中突然发现我分配给vlan 100的IP地址突然分给了vlan 1,我就发现不对劲了。但是呢,我又没有解决方法
那所以我就只能分给vlan 1 一个IP地址,不让它挤占其他的,因为我也不知道为什么他会出现而且他还会挤占其他的IP地址。

解决了之后就

后边就彻底不会了,防火墙是hillstone,也是我根本没见过的东西,所以这一项就这么多。
三、应急响应
1.提示词注入
这算提示词注入吗?纯签到,哎呀

2.查看系统状态(日志分析)

根据提示,我们知道应当在/opt/lobster下寻找线索
然后我们就可以在system_real.log这个日志中寻找出flag

3.配置不当获取相关信息
同时,我们知道配置文件一般是yaml文件。所以我们就可以查看config.yaml,是flag3,上图可以看到。
4.分析历史命令
这道题我们没有分析出来,比赛结束之后,在群里讨论,有大手子说在账号为andy下的历史命令没有flag。要提权为root,root的历史命令里有flag4。后面,郑州信息工程职业学院的师傅给了我正确的思路,还有答案,这是他们的图片。在此表示感谢
另外这张图片也证明了flag是可以靠全局搜索搜出来的。

5.进程分析
执行
1 | ps aux |
得到下面一大堆,然后直接找flag5就行。

6.计划任务、自启动分析
分析var/log/syslog,它是系统日志。会记录一些启动项和计划任务的痕迹

我们可以发现计划任务中有一个flag6
7.分析异常日志
兜兜转转一圈,又回到了起点
/opt/lobster下面还有个日志叫lobster_access.log

现在的问题是:你发现了没有?这个flag是散布在主机的各个角落,所以。赛后也有很多人说直接全局搜索flag,除了历史命令那个flag搜不到,其他的都是能搜到的。Σ(っ °Д °;)っ
四、安全加固
linux加固那几道题,我原本认为修改/etc/security的相关配置就可以,但不知为何死活不出flag。所以呢linux加固我放弃了。主要还是Windows加固。
子任务六-禁止删除桌面上的计算机图标
对于。一些学校开了信息安全的课来说,Windows安全加固是一个比较常见的实验,所以说Windows安全加固这几道题都不难。除了第二题“三权分立”我不会。
然后因为相关的录屏文件缺失,Windows安全加固的相关操作会用我自己的虚拟机演示
打开组策略管理器
可以win+r输入gpedit.msc

如图所示,这道题目是:用户配置->管理模板->桌面

然后就是编辑策略设置。点击已启用,然后应用即可。
如果你想获得flag,别忘了重启一下让电脑设置应用这个策略,这样等运行脚本的时候才能拿到flag。
剩下的题目(除了第二题) 基本上都是这种过程
子任务八-禁止用户修改IP地址
1 | 题目要求:禁止添加或删除用于lan连接或远程访问连接的组件 |

子任务九-安全选项策略中,“关机:清除虚拟内存页面文件 ”策略状态为已启用

子任务十:为了方便企业安全管理,请做相关配置,关闭相关服务端口,创建 Rule1规则
1 | 题目要求:以下端口禁制开放:TCP23 |
windows防火墙->高级设置->入站规则->新建规则




五、实网渗透
渗透分为两个板块,一个是 Ping命令执行的容器,另一个是若依后台
1.若依后台获取
第一道题比较简单。若依后台的默认密码已经给了,你直接登录进去,在后台上随便翻找,有好几处都给你了相同flag,都能找到。

2.命令执行获取
很简单的ping命令执行

4.容器内信息收集获取
比赛的时候。我想到了要提权到root,但是我没想到的是他不用提权啊,直接root就行了∑( 口 ||

5.获取管理员权限然后在桌面
虽然题目比较谜语人,但是,我们能大致的猜出来出题人的意思就是Flag在桌面。
使用ruoyi vue扫描工具

我们发现存在任意文件读取,根据出题人提示说flag在管理员的桌面上,我们可以

6.容器逃逸在jack用户下获取
这道题的漏洞在于它是“特权容器”,对于特权容器,有以下几种的逃逸方式。
| 方式 | 本质 | 结果 |
|---|---|---|
| 宿主设备暴露 + mount | 容器能看到 /dev/sdX,又能 mount |
把宿主文件系统挂进容器 |
| Docker socket 暴露 | 容器能控制宿主 Docker daemon | 直接让 daemon 起一个更高权限容器 |
| 共享 host namespace | 跟宿主共用 PID/NET/IPC | 看到或影响宿主资源 |
| 真正的内核漏洞 | 利用 kernel bug | 从容器打到宿主内核 |
对于这道题,我们可以先看一下容器的Linux capability 的有效权限
1 | -1;cat /proc/1/status | grep CapEff |

按常见 Linux capability 编码,这代表低位大量 capability 都处于启用状态,包括:
CAP_SYS_ADMINCAP_SYS_MODULECAP_SYS_PTRACECAP_SYS_RAWIOCAP_MKNODCAP_NET_ADMINCAP_SYS_CHROOTCAP_DAC_OVERRIDE
这已经不是普通容器的默认权限,而是接近“特权容器”的能力集合。尤其是:CAP_SYS_ADMIN.它权限非常宽,经常被称为 Linux capability 中的“万能管理员权限”,挂载文件系统等操作通常需要它。
因此我们可以挂载文件
创建一个挂载点 mkdir /mnt/host
将宿主机的根目录磁盘挂载到容器内 mount /dev/sda2 /mnt/host
检查
1 | -1;df -h |

那么 挂载之后/mnt/host 实际上就是宿主机根文件系统的一个入口,此时容器内的进程可以通过这个目录看到宿主机的目录,因此

根据题目提示是Jack用户,那么一般会有./home/jack,从这里可以找到flag

7.读取宿主机root目录
跟第四题一样,说是提权,但是一点儿都不用提啊

好的渗透就讲到这里,后边的就真不会了
六、some others
这上面的一部分题目我在赛场没写出来,赛后,我们隔壁院校的大手子在群里发布了他的WP,一些题目是按照他的WP思考的思路。
感谢郑州信息工程职业学院的杨师傅,他提供了应急响应第四题历史命令分析的正确思路和答案。
感谢信阳学院的师傅,一些没有做出来的题目的思路参考的是他们的WP。





