最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

0x00 前言

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

0x01 漏洞簡(jiǎn)介

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 之間的版本會(huì)造成目錄穿越漏洞,讀取任意文件,而漏洞的原因是因?yàn)閷?duì)”..”的處理和另外的模塊不兼容。

打個(gè)比喻就是有一個(gè)人開發(fā)這個(gè)模塊,另外的一個(gè)人開發(fā)另外個(gè)模塊,大家對(duì)于這個(gè)東西的處理不一樣,從而導(dǎo)致出現(xiàn)了漏洞。而這里的模塊就是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® 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行時(shí)。 Node.js 使用高效、輕量級(jí)的事件驅(qū)動(dòng)、非阻塞 I/O 模型。它的包生態(tài)系統(tǒng),npm,是目前世界上最大的開源庫(kù)生態(tài)系統(tǒng)。(抄從官網(wǎng))

0x03 express是什么

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

0x04 如何復(fù)現(xiàn)

下面采用騰訊云開發(fā)者實(shí)驗(yàn)室搭建環(huán)境進(jìn)行快速?gòu)?fù)現(xiàn)。

復(fù)現(xiàn)準(zhǔn)備:

0. 騰訊云開發(fā)者實(shí)驗(yàn)室的云主機(jī)一臺(tái) (我這里用的是《基于 Ubuntu 搭建微信小程序服務(wù)》的實(shí)驗(yàn)主機(jī) 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

驗(yàn)證一下:

node -v

輸出版本號(hào)則表示配置成功

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

進(jìn)入express目錄下,安裝express

cd express-4.15.5 && npm install

進(jìn)入到expresss-4.15.5/examples/static-files目錄里

node index.js

Step 3 發(fā)送payload驗(yàn)證

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

0x05 漏洞原理分析

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

(還不是因?yàn)樽约翰?,分析不出。。。。?/p>

注意:該漏洞是建立在文件夾通過express.static 來托管的情況下,因?yàn)樵谶@種情況下才會(huì)使用normalize函數(shù)進(jìn)行path標(biāo)準(zhǔn)化。(發(fā)現(xiàn)來源于p神的分析)

比如代碼這樣寫:

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

那么payload應(yīng)該是

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

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

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

那么payload應(yīng)該為:

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

0x06 后記

復(fù)現(xiàn)很簡(jiǎn)單,但分析原理很難。至少我現(xiàn)在還沒弄明白。等我弄明白了,再寫寫怎么分析與跟蹤吧。

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

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

然后這里我們得出了一個(gè)結(jié)論,如果想要得到第一手漏洞預(yù)警與學(xué)習(xí),應(yīng)該時(shí)刻關(guān)注著CVE列表,努力做第一個(gè)吃螃蟹的人。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于commander.js使用及源碼分析

    關(guān)于commander.js使用及源碼分析

    這篇文章主要介紹了關(guān)于commander.js使用及源碼分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 利用yarn實(shí)現(xiàn)一個(gè)webpack+react種子

    利用yarn實(shí)現(xiàn)一個(gè)webpack+react種子

    其實(shí)以前就寫過如何使用React-router和Webpack快速構(gòu)建一個(gè)react程序。后來發(fā)現(xiàn)版本太老,于是乎最近又重新組織了下結(jié)構(gòu),使用最近發(fā)布的yarn作為包管理工具,介紹下基本安裝步驟,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • express框架中使用jwt實(shí)現(xiàn)驗(yàn)證的方法

    express框架中使用jwt實(shí)現(xiàn)驗(yàn)證的方法

    這篇文章主要給大家介紹了關(guān)于express框架中使用jwt實(shí)現(xiàn)驗(yàn)證的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用express具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Node.js實(shí)現(xiàn)Excel轉(zhuǎn)JSON

    Node.js實(shí)現(xiàn)Excel轉(zhuǎn)JSON

    本文給大家記錄的是個(gè)人項(xiàng)目中遇到的,使用node.js實(shí)現(xiàn)Excel轉(zhuǎn)換成Json的方法和過程,十分的簡(jiǎn)單實(shí)用,也很詳細(xì),這里推薦給有需要的小伙伴參考下。
    2015-04-04
  • 淺析Node.js非對(duì)稱加密方法

    淺析Node.js非對(duì)稱加密方法

    本篇文章主要給大家分享了Node.js非對(duì)稱加密方法以及代碼實(shí)例講解,對(duì)此有興趣的朋友參考學(xué)習(xí)下吧。
    2018-01-01
  • nodemon實(shí)現(xiàn)Typescript項(xiàng)目熱更新的示例代碼

    nodemon實(shí)現(xiàn)Typescript項(xiàng)目熱更新的示例代碼

    這篇文章主要介紹了nodemon實(shí)現(xiàn)Typescript項(xiàng)目熱更新的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Nginx 配置多站點(diǎn)vhost 的方法

    Nginx 配置多站點(diǎn)vhost 的方法

    這篇文章主要介紹了Nginx 配置多站點(diǎn)vhost 的方法,需要的朋友可以參考下
    2018-01-01
  • Nodejs使用fs-extra模塊進(jìn)行目錄和文件操作用法示例

    Nodejs使用fs-extra模塊進(jìn)行目錄和文件操作用法示例

    fs-extra模塊是基于fs?的文件操作相關(guān)工具庫(kù),封裝了一些fs實(shí)現(xiàn)起來相對(duì)復(fù)雜的工具,下面這篇文章主要給大家介紹了關(guān)于Nodejs使用fs-extra模塊進(jìn)行目錄和文件操作用法的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • Node.js結(jié)合FFmpeg構(gòu)建自動(dòng)化腳本實(shí)現(xiàn)轉(zhuǎn)碼視頻

    Node.js結(jié)合FFmpeg構(gòu)建自動(dòng)化腳本實(shí)現(xiàn)轉(zhuǎn)碼視頻

    傳統(tǒng)的視頻轉(zhuǎn)碼中,很常用的工具是FFmpeg,本文主要介紹了Node.js結(jié)合FFmpeg構(gòu)建自動(dòng)化腳本實(shí)現(xiàn)轉(zhuǎn)碼視頻,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • 詳細(xì)分析Node.js 多進(jìn)程

    詳細(xì)分析Node.js 多進(jìn)程

    這篇文章主要介紹了Node.js 多進(jìn)程的的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06

最新評(píng)論

达孜县| 怀宁县| 吕梁市| 华容县| 宝丰县| 廉江市| 泰和县| 汉中市| 达孜县| 郎溪县| 红安县| 贵溪市| 澄江县| 新泰市| 昌黎县| 来安县| 龙泉市| 德惠市| 太仆寺旗| 磴口县| 保德县| 庆云县| 新郑市| 莱芜市| 宁阳县| 石景山区| 登封市| 临邑县| 贵溪市| 车致| 监利县| 宜宾市| 德阳市| 临江市| 闵行区| 鄂温| 翁牛特旗| 嘉兴市| 马公市| 蒙山县| 井研县|