欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Node.js CVE-2017-14849 漏洞分析(詳細步驟)

 更新時間:2017年11月10日 08:29:07   作者:水泡泡  
這篇文章主要介紹了淺談Node.js CVE-2017-14849 漏洞分析(詳細步驟),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

0x00 前言

早上看Sec-news安全文摘的時候,發(fā)現騰訊安全應急響應中心發(fā)表了一篇文章,Node.js CVE-2017-14849 漏洞分析(https://security.tencent.com/index.php/blog/msg/121),然后想著復現,學習學習,就有了這篇文章。

0x01 漏洞簡介

CVE(http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14849)上面的描述是這樣的:

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was incompatible with the pathname validation used by unspecified community modules.

換成我們看的懂的意思就是node.js 8.5.0 到8.6.0 之間的版本會造成目錄穿越漏洞,讀取任意文件,而漏洞的原因是因為對”..”的處理和另外的模塊不兼容。

打個比喻就是有一個人開發(fā)這個模塊,另外的一個人開發(fā)另外個模塊,大家對于這個東西的處理不一樣,從而導致出現了漏洞。而這里的模塊就是node.js 和 express。

影響版本:

Node.js 8.5.0 + Express 3.19.0-3.21.2
Node.js 8.5.0 + Express 4.11.0-4.15.5

0x02 node.js是什么

Node.js® 是一個基于 Chrome V8 引擎的 JavaScript 運行時。 Node.js 使用高效、輕量級的事件驅動、非阻塞 I/O 模型。它的包生態(tài)系統(tǒng),npm,是目前世界上最大的開源庫生態(tài)系統(tǒng)。(抄從官網)

0x03 express是什么

Express是基于 Node.js 平臺,快速、開放、極簡的 web 開發(fā)框架。(同樣抄從官網)

0x04 如何復現

下面采用騰訊云開發(fā)者實驗室搭建環(huán)境進行快速復現。

復現準備:

0. 騰訊云開發(fā)者實驗室的云主機一臺 (我這里用的是《基于 Ubuntu 搭建微信小程序服務》的實驗主機 ubuntu 16.04 64位)

1. node.js 8.5.0 (https://nodejs.org/download/release/v8.5.0/

2. express-4.15.5 (https://github.com/expressjs/express/releases)

3. burpsuite

Step 1安裝node.js 8.5.0

下載node.js 8.5.0安裝包

wget https://nodejs.org/download/release/v8.5.0/node-v8.5.0-linux-x64.tar.gz

解壓安裝包

tar -zxvf node-v8.5.0-linux-x64.tar.gz

移到通用軟件安裝目錄/opt

mv node-v8.5.0-linux-x64 /opt/

安裝 npm 和 node 命令到系統(tǒng)命令

sudo ln -s /opt/node-v8.5.0-linux-x64 /bin/node /usr/local/bin/node 
sudo ln -s /opt/node-v8.5.0-linux-x64 /bin/npm /usr/local/bin/npm

驗證一下:

node -v

輸出版本號則表示配置成功

Step2 安裝express-4.15.5

下載express-4.15.5

wget https://github.com/expressjs/express/archive/4.15.5.tar.gz

解壓壓縮包

tar -zxvf 4.15.5.tar.gz

進入express目錄下,安裝express

cd express-4.15.5 && npm install

進入到expresss-4.15.5/examples/static-files目錄里

node index.js

Step 3 發(fā)送payload驗證

Payload: /../../../a/../../../../etc/passwd

0x05 漏洞原理分析

為什么payload會是這樣的呢?請參考騰訊應急響應中心的那篇文章(https://security.tencent.com/index.php/blog/msg/121),寫的很言簡意賅。

(還不是因為自己菜,分析不出。。。。)

注意:該漏洞是建立在文件夾通過express.static 來托管的情況下,因為在這種情況下才會使用normalize函數進行path標準化。(發(fā)現來源于p神的分析)

比如代碼這樣寫:

app.use(express.static(path.join(__dirname, 'static')));

那么payload應該是

/../../../a/../../../../etc/passwd

但代碼如果是這樣寫的話:

app.use('/static',express.static(path.join(__dirname, 'static')));

那么payload應該為:

/static/../../../a/../../../../etc/passwd

0x06 后記

復現很簡單,但分析原理很難。至少我現在還沒弄明白。等我弄明白了,再寫寫怎么分析與跟蹤吧。

其實這里有一個挺有意思的點,那就是一些重大漏洞的追蹤問題,關于這個漏洞官方早在九月份就已經發(fā)布了說明,而這個問題是在最近才得到重視,很明顯就算是騰訊也沒有第一時間去跟蹤CVE的更新列表。

而在騰訊發(fā)了這篇文章之后,P神把復現環(huán)境給弄到了vulhub(https://github.com/vulhub/vulhub/tree/master/node/CVE-2017-14849),速度之快令人驚奇。然后再代碼審計里面發(fā)了,在微博里面發(fā)了。再接著整個安全圈其實都知道了。

然后這里我們得出了一個結論,如果想要得到第一手漏洞預警與學習,應該時刻關注著CVE列表,努力做第一個吃螃蟹的人。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 淺析node中間件及實現一個簡單的node中間件

    淺析node中間件及實現一個簡單的node中間件

    這篇文章主要介紹了淺析node中間件及實現一個簡單的node中間件,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Nodejs + Websocket 指定發(fā)送及群聊的實現

    Nodejs + Websocket 指定發(fā)送及群聊的實現

    這篇文章主要介紹了Nodejs + Websocket 指定發(fā)送及群聊的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • nodejs之請求路由概述

    nodejs之請求路由概述

    這篇文章主要介紹了nodejs的請求路由概述,需要的朋友可以參考下
    2014-07-07
  • npm錯誤errno?-4048解決辦法

    npm錯誤errno?-4048解決辦法

    這篇文章主要給大家介紹了關于npm錯誤errno?-4048解決的相關資料,這個錯誤代碼通常表示文件系統(tǒng)錯誤或者硬件故障引起的問題,文中通過圖文將解決的辦法介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • npm install安裝模塊-save和-save-dev命令的區(qū)別

    npm install安裝模塊-save和-save-dev命令的區(qū)別

    這篇文章介紹了npm install安裝模塊-save和-save-dev命令的區(qū)別,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 解決node.js含有%百分號時發(fā)送get請求時瀏覽器地址自動編碼的問題

    解決node.js含有%百分號時發(fā)送get請求時瀏覽器地址自動編碼的問題

    這篇文章主要介紹了解決node.js含有%百分號時發(fā)送get請求時瀏覽器地址自動編碼的問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • NodeJs之word文件生成與解析的實現代碼

    NodeJs之word文件生成與解析的實現代碼

    這篇文章主要介紹了NodeJs之word文件生成與解析的實現代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Nodejs提取網址參數解決“querystring”已棄用問題

    Nodejs提取網址參數解決“querystring”已棄用問題

    無論是前端還是后端,經常出現的應用場景是URL中參數的處理,下面這篇文章主要給大家介紹了關于Nodejs提取網址參數解決“querystring”已棄用問題的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • NodeJS制作爬蟲全過程

    NodeJS制作爬蟲全過程

    這篇文章主要介紹了NodeJS制作爬蟲的全過程,包括項目建立,目標網站分析、使用superagent獲取源數據、使用cheerio解析、使用eventproxy來并發(fā)抓取每個主題的內容等方面,有需要的小伙伴參考下吧。
    2014-12-12
  • node.js使用redis儲存session的方法

    node.js使用redis儲存session的方法

    這篇文章主要介紹了node.js使用redis儲存session的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09

最新評論