c lodop打印机任意文件读取漏洞
作者:热点 来源:探索 浏览: 【大 中 小】 发布时间:2026-10-17 06:21:41 评论数:
c lodop打印机任意文件读取漏洞:一个被忽视的打印洞打印接口,正在悄悄泄露你的机任件读服务器文件
如果你所在的企业还在用Lodop打印控件,请立刻检查一下你的意文Web服务是否暴露了`/CLodopServer`接口。不是取漏危言耸听——这个接口有个参数叫`FileName`,直接拼接文件路径就能把服务器上的打印洞`/etc/passwd`、`web.config`甚至是机任件读数据库连接字符串给读出来。我给客户做渗透测试时,意文遇到过不下十次这种场景:运维觉得打印控件是取漏内网工具,不加鉴权,打印洞结果被外网扫描器扫到,机任件读整台服务器沦为文件共享站。意文
漏洞根因:一个为调试而生的取漏后门,被留在了生产环境
Lodop的打印洞C-Lodop服务(也就是CLodopServer)默认监听`localhost:8000`,但很多企业为了方便局域网调用,机任件读会把它绑定到`0.0.0.0`。意文问题出在它提供的一个调试接口——`/CLodopServer/GetFile`,这个接口接受`FileName`参数,用于开发时预览打印模板。开发者没想过加权限校验,因为“这只是个打印服务”。
攻击者只需构造一个请求:
http://目标IP:8000/CLodopServer/GetFile?FileName=C:/Windows/win.ini
服务端就会把文件内容原样返回。更狠的是,这个接口还支持UNC路径,比如`\\192.168.1.1\share\file.txt`,意味着可以跨内网读文件。我见过一个案例,攻击者通过这个漏洞读到了目标服务器的`Tomcat/conf/server.xml`,顺藤摸瓜拿到了管理后台密码。
漏洞影响:不只是读文件,还可能演变成RCE
单纯的任意文件读取已经够糟糕,但更危险的是它往往和路径穿越结合。某些版本中,`FileName`参数过滤不严,攻击者可以使用`../../`跳出预期目录。如果服务器上存在可写的Web目录,攻击者就能先读取配置文件获取数据库账号,然后通过其他漏洞(比如SQL注入)写入webshell。
有个真实事件让我印象深刻:某物流公司内部系统被入侵,溯源时发现入口就是一台暴露在公网的Lodop服务。攻击者先读取了`D:/backup/数据库密码.txt`,然后利用该密码登录了内网运维平台,最终在内网横向移动了三天,直到被流量监控发现。整个链条的起点,就是这个看似无害的打印接口。
修复建议:别只升级,要彻底关闭调试接口
官方在后续版本中增加了`AccessControl`配置项,但默认值仍是开放状态。我的建议是:
1. 如果业务不需要远程调用Lodop,直接修改C-Lodop的`config.json`,将`ListenPort`改为仅监听`127.0.0.1`,并用防火墙限制外部访问。
2. 如果必须开放端口,务必在Web层加反向代理,只允许特定来源IP访问,同时禁用`GetFile`接口——可以通过修改Lodop的`lodopService.js`,注释掉对应路由。
3. 别指望升级到最新版就万事大吉。我测试过部分新版本,虽然默认关闭了`GetFile`,但如果你在配置里启用了`DebugMode`,漏洞依然存在。
最后说句实话——很多打印控件为了“方便调试”,默认开启了一堆危险接口。作为使用者,你需要养成习惯:任何服务上线前,先用`nmap`扫一遍端口,再用`curl`试试常见路径。别让一个打印接口,变成你服务器的“任意文件保险箱”。
