作者:李安@星闌科技PortalLab
原文鏈接:https://mp.weixin.qq.com/s/XBsBNAzyciWwCRP3bMZnOw

漏洞描述

Lanproxy 0.1 存在路徑遍歷漏洞,該漏洞允許目錄遍歷讀取/../conf/config.properties來獲取到內部網連接的憑據。

Lanproxy

lanproxy是一個將局域網個人電腦、服務器代理到公網的內網穿透工具,支持tcp流量轉發,可支持任何tcp上層協議(訪問內網網站、本地支付接口調試、ssh訪問、遠程桌面...)

漏洞版本

Lanproxy 0.1

修復前:

修復補丁:https://github.com/ffay/lanproxy/commit/7787a143f9abf31ada4588e11741c92f0e145240

修復方式:如果在路徑中檢測到../ ,直接返回 Forbidden。

漏洞成因:對用戶輸入的路徑、沒有進行過濾、攻擊者可以使用該漏洞去訪問任意文件。

環境搭建

漏洞復現

拉取源碼

git clone https://github.com/ffay/lanproxy.git

回退到漏洞修復之前

cd lanproxy/

git reset --hard f768adb1fca4dbcb83c16778d9f3407bb8b2f524

maven編譯項目

mvn package

項目編譯完成后、會在項目根目錄下創建distribution目錄、包含服務端、客戶端。

config.properties

漏洞測試

1、運行啟動命令:

sh distribution/proxy-server-0.1/bin/startup.sh

2、訪問http://127.0.0.1:8090端口、出現如下界面、環境啟動成功:

3、測試Payload:/%2F..%2F/conf/config.properties

在使用Payload后、獲取到config.properties 配置文件。該文件中包含:管理頁面用戶名、密碼、以及ssl相關配置。

漏洞分析

開啟debug模式

Lanproxy 的啟動腳本 distribution/proxy-server-0.1/bin/startup.sh 、 debug 參數可以開啟調試模式。調試端口為8000。

sh distribution/proxy-server-0.1/bin/startup.sh debug

IDEA 配置

動態調試

將斷點打到 src/main/java/org/fengfei/lanproxy/server/config/web/HttpRequestHandler.java#outputPages,先通過URI實例,獲取到uriPath(請求路徑):/%2F..%2Fconf%2Fconfig.properties

接下來,會判斷該路徑是否為/,是/返回 index.html,否則返回獲取到的uriPath。

PAGE_FOLDER 是獲取當前程序所在的目錄。

緊接著、會拼接PAGE_FOLDER與uriPath。

然后、生成一個新的File實例,rfile,然后判讀是否是目錄、還會檢查該文件是否存在。

最后,使用 RandomAccessFile() 去讀取文件。到這一步,已經可以讀取到 config.properties 文件。

修復建議

安裝最新Lanproxy版本,可以通過源碼或者最新的安裝包進行更新。

源碼:https://github.com/ffay/lanproxy

安裝包:https://file.nioee.com/d/2e81550ebdbd416c933f/


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1997/