常見Web應用源碼泄露問題

文章目錄

  • 前言
  • 一、常見的源碼泄露漏洞
    • git源碼泄露
    • SVN源碼泄露
    • DS_Store文件泄漏
    • 網站備份壓縮文件泄露
    • WEB-INF/web.xml泄露
    • CVS泄露
    • .hg源碼泄露
    • Bazaar/bzr泄露
    • .swp文件泄露


前言

在Web應用方面對于安全來說,可能大家對SQL注入、XSS跨站腳本攻擊、文件上傳等一些漏洞已經耳熟于心了,這些漏洞可以對系統造成嚴重的安全風險,今天的所講述的漏洞不亞于我們所提及到的 Owasp top 10,那就是系統源碼泄露,而且Web源碼泄露在實際項目中并不少見,一些大的廠商有可能也存在這類安全問題。


一、常見的源碼泄露漏洞

下圖中把常見的源碼泄露問題進行列舉整理
在這里插入圖片描述

git源碼泄露

漏洞成因
Git是一個開源的分布式版本控制系統,在執行git init初始化目錄的時候,會在當前目錄下自動創建一個 .git目錄,用來記錄代碼的變更記錄等。發布代碼的時候,如果沒有把 .git這個目錄刪除,就直接發布到了服務器上,攻擊者就可以通過它來恢復源代碼。

在這里插入圖片描述

  • HEAD 這個git項目當前處在哪個分支里
  • config 文件包含項目特有的配置選項,git config 命令會改動它
  • description 項目的描述信息
  • hooks/ 系統默認鉤子腳本目錄
  • info/ 目錄包含一個全局性排除(global exclude)文件,用以放置不希望被記錄在 .gitignore文件中的忽略模式(ignored patterns)
  • objects/ 目錄存儲所有數據內容(commits,trees,blobs,tags)
  • refs/ 標識你項目里的每個分支指向了哪個提交(commit)
  • index 文件保存暫存區信息

漏洞利用

利用工具 Githack

下載地址:https://github.com/lijiejie/GitHack

使用方式 python GitHack.py http://www.example.com/.git/
在這里插入圖片描述
修復建議

刪除 .git目錄或者修改中間件配置進行對 .git隱藏文件夾的訪問。

SVN源碼泄露

漏洞成因

SVN是源代碼本地管理軟件。使用SVN管理本地代碼過程中,會生成一個名為 .svn的隱藏文件夾,其中包含重要的源碼信息,而造成 .svn文件泄露的主要原因還是網站管理員在發布代碼時,沒有使用導出功能,而直接進行復制粘貼。這就使 .svn隱藏文件夾被暴露于外網環境,可以利用 .svn/entries 文件,獲取到服務器源碼。

漏洞利用

利用工具 svnExploit
下載地址:https://github.com/admintony/svnExploit

使用方式

安裝依賴庫
sudo pip install -r requirements.txt
查看幫助
python SvnExploit.py -h
檢測SVN源代碼泄露
python SvnExploit.py -u http://192.168.27.128/.svn
下載源代碼
python SvnExploit.py -u http://192.168.27.128/.svn --dump

修復建議

1、不要使用 svn checkoutsvn up 更新服務器上的代碼,使用svn export (導出)功能代替。
2、服務器軟件(NginxApacheTomcatIIS等)設置目錄權限,禁止訪問 .svn.git目錄

DS_Store文件泄漏

漏洞成因

.DS_Store 是Mac OS保存文件夾的自定義屬性的隱藏文件,如文件的圖標位置或背景色,相當于Windows 的 desktop.ini。由于開發人員發布代碼時未刪除文件夾中隱藏的 .DS_Store,可能造成文件目錄結構泄漏,源代碼文件等敏感信息的泄露。

漏洞利用

利用工具:ds_store_exp

下載地址:https://github.com/lijiejie/ds_store_exp

使用方式

python3 ds_store_exp.py http://27.0.0.1/.DS_Store

在這里插入圖片描述
修復建議

不影響應用運行的情況下刪除 .DS_Store 文件

網站備份壓縮文件泄露

漏洞成因

在網站正常使用中,往往需要經過修改和升級,這時就需要對網站或對某處數據進行備份。而備份文件會因為各種原因保存在網站Web目錄下,而當對此目錄沒有訪問權限限制時,就很可能會導致備份或緩存文件被下載下來。
該漏洞往往會導致服務器整站源代碼或者部分頁面的源代碼被下載,利用。源代碼中所包含的各類敏感信息,如服務器數據庫連接信息,服務器配置信息等會因此而泄露,造成巨大損失。

常見備份文件后綴名

  • .rar
  • .zip
  • .7z
  • .tar
  • .gz
  • .bak
  • .swp
  • .txt
  • .html

常見的網站源碼備份文件名

  • web
  • website
  • backup
  • back
  • www
  • wwwroot
  • temp

漏洞利用

像備份壓縮文件泄露,可以直接用專門的目錄掃描工具進行敏感文件掃描

利用工具:御劍、dirseach.py、gobuster 等

修復建議

1、做好目錄訪問限制
2、在不影響運行的情況下,及時刪除備份文件

WEB-INF/web.xml泄露

漏洞成因

WEB-INF是Java的WEB應用的安全目錄,該目錄原則上來說是客戶端無法訪問,只有服務端才可以訪問。如果想在頁面中直接訪問其中的文件,必須通過 web.xml 文件對要訪問的文件進行相應映射才能訪問。

WEB-INF主要包含以下文件或目錄:

? /WEB-INF/web.xml:Web應用程序配置文件,描述了 servlet 和其他的應用組件配置及命名規則
? /WEB-INF/classes/:含了站點所有用的 class 文件,包括 servlet class 和非servlet class,他們不能包含在 .jar文件中
? /WEB-INF/lib/:存放web應用需要的各種JAR文件,放置僅在這個應用中要求使用的jar文件,如數據庫驅動jar文件
? /WEB-INF/src/:源碼目錄,按照包名結構放置各個java文件。
? /WEB-INF/database.properties:數據庫配置文件

WEB-INF/web.xml泄露的起因就是我們在使用網絡架構的時候,對靜態資源的目錄或文件的映射配置不當,可能會引發一些的安全問題,導致web.xml等文件能夠被讀取。

漏洞利用

掃描后臺有沒有WEB-INF/web.xml,然后直接訪問 通過找到web.xml文件,分析可用敏感信息,推斷class文件的路徑,直接class文件,最后再通過反編譯class文件,得到網站源碼。

修復建議

合理配置,控制目錄訪問權限

CVS泄露

漏洞成因

cvs項目在初始化(cvs checkout project)的時候,會在project目錄下創建一個名為CVS的目錄,其中保存了各個文件的修改和commit記錄,通過此目錄可以獲取代碼的歷史版本,其中兩個關鍵文件為:CVS/Root和CVS/Entries,分別記錄了項目的根信息和所有文件的結構

漏洞利用

主要是針對CVS/Root以及CVS/Entries目錄,直接就可以看到泄露的信息。

利用工具:dvcs-ripper

下載地址:https://github.com/kost/dvcs-ripper

使用方式

rip-cvs.pl -v -u http://www.example.com/CVS/

修復方式

刪除CVS的CVS目錄

.hg源碼泄露

漏洞成因

Mercurial是一種輕量級分布式版本控制系統,使用 hg init 新建倉庫的時候,會生成一個備份文件 .hg

利用方式

利用工具:dvcs-rippergithub
下載地址:https://github.com/kost/dvcs-ripper
Example run (for hg):

rip-hg.pl -v -u http://www.example.com/.hg/

It will automatically do hg revert
or if you would like to ignore SSL certification verification (with -s):

rip-hg.pl -s -v -u http://www.example.com/.hg/

修復建議

刪除Web目錄中所有 .hg 隱藏文件夾

Bazaar/bzr泄露

漏洞成因

bzr也是個版本控制工具, 雖然不是很熱門, 但它也是多平臺支持, 并且有不錯的圖形界面。

利用方式

利用工具:dvcs-rippergithub
下載地址:https://github.com/kost/dvcs-ripper

Example run (for bzr):

rip-bzr.pl -v -u http://www.example.com/.bzr/

It will automatically do bzr revertor if you would like to ignore SSL certification verification (with -s):

rip-bzr.pl -s -v -u http://www.example.com/.bzr/

修復建議

刪除web目錄中所有.bzr隱藏文件夾

.swp文件泄露

漏洞成因

swp即swap文件,在編輯文件時產生的臨時文件,它是隱藏文件,如果程序正常退出,臨時文件自動刪除,如果意外退出就會保留,文件名為 .filename.swp

漏洞利用

可通過直接訪問.swp文件,下載回來后刪掉末尾的.swp,獲得源碼文件。

修復建議

刪除web目錄中所有.swp隱藏文件夾

防范措施

源碼泄露的危害是巨大的,因此在企業內要根據實際情況選擇恰當的方式去發現以及杜絕此類風險。

1) nginx上配置拒絕對對相應目錄的訪問
2)上線時檢測是否存在相應的目錄,防止帶有.git的目錄上線
3)線上定期巡檢web目錄,檢查是否有相關的目錄

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

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

相關文章

記錄一次wifi版有人物聯串口服務器調試經過

1、首先買了一個華為的wifi路由器,連接上以后,設置好網絡名字和wifi密碼 2、用網線連接串口服務器,通過192.168.1.1登錄,進行配置 找到無線客戶端配置,先在基本配置中打開5G配置,然后再去5.8G配置中設置 …

Android 平臺架構系統啟動流程詳解

目錄 一、平臺架構模塊 1.1 Linux 內核 1.2 硬件抽象層 (HAL) 1.3 Android 運行時 1.4 原生 C/C 庫 1.5 Java API 框架 1.6 系統應用 二、系統啟動流程 2.1 Bootloader階段 2.2 內核啟動 2.3 Init進程(PID 1) 2.4 Zygote與System Serv…

【Windows下Gitbook快速入門使用】

Windows下Gitbook快速入門使用 1 工具安裝1.1 Node.js下載安裝1.1 環境變量1.2 npm配置1.3 安裝gitbook 2 gitbook使用2.1 gitbook 無法執行2.2 gitbook常用命令 Gitbook是一個軟件,使用Git和Markdown來編排書本; GitBook helps you pushlish beautiful …

RK3588V2--HYM8563TS RTC 實時時鐘適配移植

1. 什么是RTC RTC(Real-Time Clock,實時時鐘)是一種電子設備或芯片,它用于保持當前時間和日期,即使系統關閉或斷電也能持續計時。RTC 通常用于計算機、嵌入式系統、物聯網設備等需要精確時間管理的場景。 1.1 RTC 的…

MHA集群

一.MHA集群 MHA master high avavibility 主服務器高可用 如上圖所示,我們之前說過,如果在主從復制架構中主服務器出現故障,就需要我們將從服務器作為主服務器,等故障的主服務器修復好之后,再將修好的主服務器作為從服…

10 【HarmonyOS NEXT】 仿uv-ui組件開發之Avatar頭像組件開發教程(一)

溫馨提示:本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦! 目錄 第一篇:Avatar 組件基礎概念與設計1. 組件概述2. 接口設計2.1 形狀類型定義2.2 尺寸類型定義2.3 組件屬性接口 3. 設計原則4. 使用…

微信小程序+SpringBoot的單詞學習小程序平臺(程序+論文+講解+安裝+修改+售后)

感興趣的可以先收藏起來,還有大家在畢設選題,項目以及論文編寫等相關問題都可以給我留言咨詢,我會一一回復,希望幫助更多的人。 系統背景 (一)社會需求背景 在全球化的大背景下,英語作為國際…

鴻蒙HarmonyOS評論功能小demo

評論頁面小demo 效果展示 1.拆解組件,分層搭建 我們將整個評論頁面拆解為三個組件,分別是頭部導航,評論項,回復三個部分,然后統一在index界面導入 2.頭部導航界面搭建 Preview Component struct HmNavBar {// 屬性&a…

解析 SQL,就用 sqlparse!

文章目錄 解析 SQL,就用 sqlparse!一、背景:為什么你需要 sqlparse?二、什么是 sqlparse?三、如何安裝 sqlparse?四、簡單易用的庫函數1\. parse(sql)2\. format(sql, **options)3\. split(sql)4\. get_typ…

點云軟件VeloView開發環境搭建與編譯

官方編譯說明 LidarView / LidarView-Superbuild GitLab 我的編譯過程: 安裝vs2019,windows sdk,qt5.14.2(沒安裝到5.15.7),git,cmake3.31,python3.7.9,ninja下載放到…

【一文學會 HTML5】

目錄 HTML概述基本概念HTML 發展歷程HTML 基本結構 網頁基本標簽標題標簽&#xff08;<h1> - <h6>&#xff09;段落標簽&#xff08;<p>&#xff09;換行標簽&#xff08;<br>&#xff09;水平線標簽&#xff08;<hr>&#xff09;注釋&#xff0…

Spring Boot面試問答

1. Spring Boot 基礎知識 問題 1:什么是Spring Boot?它與Spring框架有何不同? 回答: Spring Boot是基于Spring框架的一個開源框架,旨在簡化新Spring應用的初始化和開發過程。與傳統的Spring框架相比,Spring Boot提供了以下優勢: 自動配置:根據項目依賴自動配置Spring…

DeepSeek系列模型技術報告的閱讀筆記

DeepSeek系列模型技術報告的閱讀筆記 之前仔細閱讀了DeepSeek系列模型的主要技術方面內容與發展脈絡&#xff0c;以下是DeepSeek系列模型技術報告的筆記&#xff0c;有錯誤的地方歡迎指正&#xff01; 文章目錄 DeepSeek系列模型技術報告的閱讀筆記GQADeepseek MoEAbstractIn…

MyBatis @Param 注解詳解:多參數傳遞與正確使用方式

Param 注解主要用于 MyBatis 進行參數傳遞時給 SQL 語句中的參數 起別名&#xff0c;通常用于 多參數 方法&#xff0c;使參數在 XML Mapper 文件或注解 SQL 語句中更清晰易用。 1. 基本用法 在 Mapper 接口中使用 Param 來為參數命名&#xff0c;避免 MyBatis 解析時出現參數…

OpenBMC:BmcWeb connect讀取http請求

OpenBMC:BmcWeb構造connect對象-CSDN博客 OpenBMC:BmcWeb server.run-CSDN博客 1.構造了connect對象后,通過connection->start()開始處理來自客戶端的請求 //http\http_connection.hpp void start() {...startDeadline();readClientIp();boost::beast::async_detect_ssl…

SparkStreaming之04:調優

SparkStreaming調優 一 、要點 4.1 SparkStreaming運行原理 深入理解 4.2 調優策略 4.2.1 調整BlockReceiver的數量 案例演示&#xff1a; object MultiReceiverNetworkWordCount {def main(args: Array[String]) {val sparkConf new SparkConf().setAppName("Networ…

軟考初級程序員知識點匯總

以下是計算機技術與軟件專業技術資格&#xff08;水平&#xff09;考試&#xff08;簡稱“軟考”&#xff09;中 程序員&#xff08;初級&#xff09; 考試的核心知識點匯總&#xff0c;涵蓋考試大綱的主要方向&#xff0c;幫助你系統復習&#xff1a; 一、計算機基礎 計算機組…

Gauss數據庫omm用戶無法連接處理

確保gauss數據庫服務已經打開 重啟gauss服務 gs_om -t restart 連接gauss gsql -d postgres -p 26000 -r 結果發現 查看數據庫運行情況 gs_om -t status --detail 我們可以看到 cluster_state 的值是 Unavailable 不可用 那么問題大概率是出現在了這里 然后我們再查看一…

36-Openwrt wifi命令工具iwconfig、iwinfo、iwpriv、iwlist

增對wifi的調試命令有很多,這邊列出我們常用的命令提供參考,方便查看信息定位問題。 1、iwconfig 查看當前 WIFI 的工作信道以及工作帶寬模式: root@openwrt:/# iwconfig ra0 ra0 mt7603e ESSID:"openwrt" Mode:Managed Channel:8 Access Point: DC:4B…

Android 低功率藍牙之BluetoothGattDescriptor詳解

BluetoothGattDescriptor 詳解 BluetoothGattDescriptor 是 Android 中用于表示藍牙低功耗&#xff08;BLE&#xff09;設備中 GATT&#xff08;Generic Attribute Profile&#xff09;描述符 的類。描述符是 GATT 架構中的一種屬性&#xff0c;用于提供關于 特征值&#xff0…