周三下午,一个安全研究员盯着屏幕上的Python库文档,发现了三个能穿透内网的漏洞。这个库叫Crawlee,Apify维护的爬虫框架,从个人项目到多租户SaaS都在用——监控着数百个客户的网站数据。不是什么边缘工具,是基础设施级别的存在。
三个漏洞按利用难度和危害分层。第一案:curl-impersonate模式下,把gopher://、dict://、ftp://这些协议藏进sitemap,就能对内网服务发起盲打。第二案:按官方文档推荐写法,存在一处能完整外泄数据的curl调用点。第三案:覆盖全部三个HTTP后端的SSRF,HTTP协议层面的内网穿透。
![]()
关键前提是CurlImpersonateHttpClient。Crawlee有三个HTTP后端:httpx和impit只认http/https,传gopher直接报错,底层库就不支持。但curl-impersonate基于curl-cffi,继承了curl的协议宽容性——这才是攻击面敞开的根源。
历史上有过用HTTP封装调用TCP服务的绕过手法,所以"设计上允许访问私有地址"这种辩解站不住脚。如果真是设计如此,文档得每页用粗体红字标明"禁止生产环境使用"。实际上直到不久前,这个库连URL scheme验证都没有,老issue里提过这事。
现在的"验证"更像个摆设:只在Request.from_url这一个函数里存在,其他所有收URL的地方都是裸字符串直传给HTTP客户端。这个模式贯穿全库,也是后续所有问题的根因。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.