【技术学习】一次Node.js站点渗透
前言
遇到一個站,后端是Node.js寫的,對于這種類型的站點,一般比較難getshell,但也實現了最終的目標,拿到后臺權限
信息搜集
先進行常規的信息搜集,子域名掃描、端口掃描、目錄掃描等
這個站后端腳本語言是Node.js
目錄探測發現404界面也極像Node.js的404頁面,后面重點關注js文件
突破接口
點擊查看【相關技術學習文檔】
在進行目錄掃描的時候,發現了一個有用的目錄:
前面說了,重點關注js文件,查看頁面源代碼,發現一個有趣的js文件,為什么說這個文件有趣呢?因為這個js的文件名和產品名一致
進去之后發現了新世界
這個網站的前端界面都是通過在js文件里document.write函數構造
頁面動態渲染的數據是通過js函數中ajax請求獲取
$ . ajax ({url : host + "/agent/getPlayerInfo" ,type : "post" ,dataType : 'json' ,headers : { "content-type" : "application/json" },data : JSON . stringify ({ "uid" : uid })}). done ( function ( data ){console . log ( data );核心的所有功能接口都是未授權訪問的,根據不同的js文件里的ajax請求,使用postman直接構造數據包,即可實現后臺相對應的功能
登陸后臺
通過上述接口,可以通過用戶的uid獲取用戶的用戶名,將所有的用戶名作為字典,放入burp爆破弱口令
分析后臺登陸包,密碼被加密了
在js中找到加密方式,截取的是16位的md5
根據js代碼里的if邏輯可以很清楚的看到:返回包code值為101100是密碼錯誤,200就是登陸成功,
成功爆破出多個用戶存在弱口令
密碼錯誤:
密碼正確:
進入管理員后臺
利用爆破的用戶登陸后臺,發現不是管理員權限
但是繼續閱讀js代碼,發現存在如下的代碼:登陸成功后data.code == 200,再根據返回包的agentClass值,可以控制顯示的是管理員界面還是客服界面還是一級、二級用戶界面。由于是前端判斷且通過document.write函數渲染界面,因此可以前端繞過,直接修改返回包中的agentClass值為管理員的值,就可以進入到管理員界面,且后端所有接口也都如上面一樣不存在鑒權,因此管理員的后臺所有功能都可以使用
agentClass=1時:
agentClass=2-4時:
那么只要修改返回包的agentClass=1即可
成功進入管理員后臺
總結
以上是生活随笔為你收集整理的【技术学习】一次Node.js站点渗透的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中如何使用Htop监控工具?【
- 下一篇: 【web安全】Spring Boot e