日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[HITCON 2016]Leaking-nodejsVM沙箱逃逸

發布時間:2024/3/7 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [HITCON 2016]Leaking-nodejsVM沙箱逃逸 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[HITCON 2016]Leaking

最近想學下nodejs相關的題目,所以去buu上又找了一道來做

進入題目后如上圖所示,直接給出了源代碼,老樣子,拿出之前收藏的nodejs相關安全問題來對比著看看,我發現這里用了VM沙箱,那最有可能考的就是VM逃逸了

emem由于之前沒做過,說實話,光看這個完全不知道該怎么做,還是老實找個大佬的WP來看看吧

那我們先來分析下代碼,下面這段代碼是整道題的核心

/* Orange is so kind so he put the flag here. But if you can guess correctly :P */eval("var flag_" + randomstring.generate(64) + " = \"hitcon{" + flag + "}\";")

首先是這一段,看注釋也能知道,這里生成了flag

if (req.query.data && req.query.data.length <= 12) {var vm = new VM({timeout: 1000});console.log(req.query.data);res.send("eval ->" + vm.run(req.query.data));

接下來是這一段,對我們傳入data參數的值進行判斷長度是否小于等于12,如果符合則會放到沙箱里去執行,這里可以用數組繞過

這里就得說說這道題的考點了,這里涉及到的是nodejs的遠古內存分配問題,nodejs在遠古版本(Node.js v5.4.1/v4.2.4)中的Buffer分配是就著以前用過的內存分配的,并且分配完了還不會初始化一下,也就意味著之前加載進內存然后被回收掉的內存位置可能被再次分配出來,并且還不會被初始化,原始數據還保留在那。這位外國老哥在這里分析了原理


所以如果使用new Buffer(size)或其別名Buffer(size))創建,則對象不會填充零,而只要是調用過的變量,一定會存在內存中,所以需要使用Buffer()來讀取內存,使用data=Buffer(9999)分配一個9999的單位為8位字節的buffer,因此很容易得到姿勢

這里寫個腳本

import requestssession = requests.Session() session.trust_env = False while True:response = session.get('http://24225844-3e1f-469b-b6bc-343124db15d5.node4.buuoj.cn:81/?data=Buffer(9999)')if "flag" in response.text:print(response.text)break


最后再提一下這題的考點

在較早一點的 node 版本中 (8.0 之前),當 Buffer 的構造函數傳入數字時, 會得到與數字長度一致的一個 Buffer,并且這個 Buffer 是未清零的。8.0 之后的版本可以通過另一個函數 Buffer.allocUnsafe(size) 來獲得未清空的內存。

參考文章:
https://y4tacker.blog.csdn.net/article/details/114003419?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-5.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-5.control
https://blog.z3ratu1.cn/%E5%88%B7%E9%A2%98%E5%88%B7%E9%A2%98.html

總結

以上是生活随笔為你收集整理的[HITCON 2016]Leaking-nodejsVM沙箱逃逸的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。