自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Webpack源代碼泄露漏洞研究

原創(chuàng) 精選
開發(fā)
Webpack是一個前端資源模塊化管理和打包工具,它可以將多種靜態(tài)文件(圖片、CSS、JS等)視為模塊,通過各種插件對這些模塊進行加載、轉換、分塊并最終輸出到合適的位置。

1.1Webpack簡介   

1.1.1Webpack簡介  

Webpack是一個前端資源模塊化管理和打包工具,它可以將多種靜態(tài)文件(圖片、CSS、JS等)視為模塊,通過各種插件對這些模塊進行加載、轉換、分塊并最終輸出到合適的位置。Webpack以其高度的可配置性和靈活性而聞名,已經(jīng)成為現(xiàn)代前端開發(fā)中最流行的構建工具之一。

1.1.2 Webpack主要功能  

支持各種模塊化規(guī)范,如CommonJS、ES6、AMD等。

能夠自動生成依賴樹,并生成對應的代碼塊。

支持各種類型的資源,如圖片、CSS、JS等。

可以使用各種插件和loader,例如壓縮、混淆代碼、樣式預處理等。

可以對代碼進行拆分和合并,提高代碼的性能和效率。

1.1.3 Webpack工作原理及架構  

Webpack的工作流程可以分為四個階段:輸入、處理、輸出和模塊熱替換(可選)。

輸入階段:Webpack通過入口文件作為啟動點來開始整個構建過程。

處理階段:Webpack將入口文件及其依賴分析后生成一個依賴圖,然后再根據(jù)配置文件中的規(guī)則將不同類型的文件轉化為相應的模塊。

輸出階段:Webpack根據(jù)依賴圖生成對應類別的代碼塊,并將每個代碼塊的代碼打包成一個(或者多個)輸出文件。

模塊熱替換階段:為了改善開發(fā)體驗,Webpack支持在開發(fā)過程中實時替換部分代碼,而不用重新編譯整個工程。

Webpack的架構由以下幾個核心組件組成:

Entry:入口模塊,指定Webpack開始分析的文件。

Output:輸出文件,指定Webpack輸出的打包文件名和路徑。

Loader:文件轉化器,用于將不同類型的文件轉化為Webpack可以識別的模塊。

Plugin:擴展插件,用于實現(xiàn)各種特殊功能和優(yōu)化Webpack打包過程。

1.1.4 Webpack的部署及配置  

在部署Webpack之前,需要安裝Node.js環(huán)境和NPM包管理器??梢酝ㄟ^以下命令進行安裝:

$ sudo apt-get install nodejs npm

然后使用NPM安裝Webpack:

$ npm install webpack

在安裝完成后,需要進行Webpack的配置,一般情況下Webpack的配置文件是webpack.config.js。以下是一個簡單的Webpack配置示例:

javascript

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        use: {
          loader: 'babel-loader'
        },
        exclude: /node_modules/
      }
    ]
  },
  plugins: [
    new CleanWebpackPlugin(['dist']),
    new HtmlWebpackPlugin({
      title: 'Webpack Demo',
      template: 'src/index.html'
    })
  ]
};

這個配置文件定義了入口文件、輸出文件路徑、模塊處理規(guī)則和插件等內(nèi)容。具體可以參考Webpack官方文檔進行配置。

1.2Webpack源代碼泄露漏洞  

Webpack 會為打包后的代碼生成 Source Map 文件,以便在運行時可以調(diào)試源代碼。然而,如果開發(fā)人員在生產(chǎn)環(huán)境中沒有正確地配置 SourceMap,攻擊者就可能獲得敏感信息,例如源代碼和服務器配置等。

攻擊者可以通過發(fā)送 HTTP 請求來獲取 Source Map 文件,并從中獲取敏感信息。這可以通過以下方式實現(xiàn):

在生產(chǎn)環(huán)境中開啟 SourceMap 功能:

javascript

// webpack.config.js
module.exports = {
  // ...
  devtool: 'source-map',
};

配置 Web 服務器,以便通過 HTTP 獲取 SourceMap 文件:

nginx

# nginx configuration
location /static/ {
  add_header 'Access-Control-Allow-Origin' '*';
  # 設置為源映射文件所在的目錄
  alias '/path/to/source-maps/';
}

構造對 SourceMap 文件的請求:

http://example.com/static/dist/app.js.map

攻擊者可以使用類似 Chrome DevTools 中 “Sources” 面板的工具來查看源代碼

1.3Webpack源代碼插件利用法  

1.3.1使用Chrome擴展插件SourceDetector  

1.下載SourceDetector

 SourceDetector在github上有兩個地址提供,在本案例中使用第二個。

(1)https://github.com/SunHuawei/SourceDetector

(2)https://github.com/Lz1y/SourceDetector-dist

2.加載插件

直接在Google瀏覽器中輸入“chrome://extensions/”打開插件,單擊“加載已解壓的擴展程序”,如圖1所示。選擇“SourceDetector-dist-master”子目錄中的dist文件夾,如圖2所示。

         圖片

圖1 打開插件管理及配置

圖片

圖2 選擇dist文件夾

3.配置“SourceDetector”插件成功

   如圖3所示,在Google擴展程序中正常顯示,則表示配置成功。

圖片

圖3插件配置成功

還可以在Google地址中找到擴展程序所在的圖標列,設置“SourceDetector”在地址欄可以直接使用,方便訪問網(wǎng)站直接使用。

圖片

圖4設置擴展程序展示

1.3.2獲取源代碼  

 1.瀏覽網(wǎng)站時使用快捷鍵“Ctrl+Shift+i”

   如圖5所示,單擊“Source”則可以查看并獲取目標網(wǎng)站的源代碼信息,在本例中可以看到webpack字樣,說明使用webpack。

圖片

圖5 查看目標源代碼

2.搜索js.map

    選中“webpack”文件夾,單擊搜索,輸入“js.map”即可獲取代碼中包含的js.map信息,如圖6所示。

圖片

圖6 搜索獲取js.map文件信息

3.直接下載獲取源代碼信息

(1)單擊剛才安裝的Google插件“SourceDetector”,如圖7所示,單擊“Download All”即可下載存在webpack代碼泄露的源代碼。

圖片

圖7 下載webpack代碼

(2)解壓壓縮包即可獲取所有泄露的源代碼

   如圖8所示,可以看到js等源代碼。

圖片

圖8獲取源代碼

1.3.3 Linux下配置node.js  

1.安裝node.js及npm

以Centos為例,執(zhí)行以下命令安裝nodejs及npm,如圖9所示,表示安裝成功。

sudo yum install epel-release
sudo yum install nodejs
sudo yum install -y npm
node--version
npm –version

圖片

圖9安裝node.js及nmp

2.安裝reverse-sourcemap

npm install   reverse-sourcemap

1.3.4在linux下還原js.map文件  

1.首先需要下載js.map文件

https://somesite.com/js/chunk-vendors.556e2737.js.map

注意有些js.map文件雖然在注釋中出現(xiàn),但實際不存在漏洞,所以無法下載。

2. 直接反編譯map文件

reverse-sourcemap --output-dir <輸出目錄> <源映射文件路徑>

(1)方編譯map文件命令

reverse-sourcemap --output-dir app.5ef4326406dfb69eb193.js app.5ef4326406dfb69eb193.js.map

reverse-sourcemap --output-dir chunk-vendors.f2592a04.js chunk-vendors.f2592a04.js.map

設置輸出目錄app.5ef4326406dfb69eb193.js,如圖10所示,命令執(zhí)行后直接獲取js源代碼信息

圖片

圖10 獲取js源代碼

1.4源代碼分析及利用  

當有網(wǎng)站的js源代碼文件后,可以逐個查看js文件,尋找一些配置信息,或者可以利用的url地址信息等。在本文中不詳細討論這些漏洞的利用。

1.5漏洞修復方法  

為避免這種漏洞,應該在生產(chǎn)環(huán)境中禁用 SourceMap 功能或限制 SourceMap 文件的訪問權限。例如,在 Webpack 配置中禁用 SourceMap 功能:

javascript

// webpack.config.js
module.exports = {
  // ...
  devtool: false,
};

或者,在 Web 服務器配置中限制 SourceMap 文件的訪問權限:

nginx

# nginx configuration
location /static/ {
  # 只允許本地訪問
  allow 127.0.0.1;
  deny all;
  alias '/path/to/source-maps/';
}
責任編輯:龐桂玉 來源: 51CTO
相關推薦

2012-04-10 10:50:49

2023-03-27 18:22:05

2020-11-14 11:20:56

滲透測試Cobalt Stri源代碼

2024-11-06 15:29:10

2021-01-07 11:09:58

源代碼泄露數(shù)據(jù)泄露勒索軟件

2013-10-11 13:36:46

2021-01-02 09:28:19

微軟黑客源代碼泄露

2020-09-25 16:00:36

Windows XPWindows

2020-05-22 18:12:14

數(shù)據(jù)泄露安全密碼

2011-02-22 11:04:01

2013-10-15 09:21:40

2020-05-24 17:12:29

任天堂操作系統(tǒng)代碼

2020-10-11 21:57:06

Windows 功能系統(tǒng)

2020-03-20 08:39:58

安全漏洞開源

2010-03-08 15:57:27

2023-11-10 15:35:24

2009-06-24 08:51:55

2021-09-30 10:29:46

蘋果安全漏洞

2020-12-18 09:49:48

iOS ChromiWKWebViewJavaScript

2022-07-21 12:49:21

數(shù)據(jù)泄露黑客
點贊
收藏

51CTO技術棧公眾號