作为 PortSwigger《Top 10 web hacking techniques of 2021》的第一名,依赖关系混乱 这一漏洞类型出自这篇文章
简单概括一下:很多大公司会维护自己内部的软件包,而在开发时将这些内部的软件包和公 共包混合使用,比如以下 package.json 文件中红色部分的包并不在公共 npm 仓库中,而 是 PayPal 自己维护的
那么如果攻击者上传同名的恶意软件包到公共仓库,很可能会被开发者们误下载从而导致任 意代码执行。总结一下攻击成功的关键点:
- 收集目标公司使用的内部包名称,npm 包很可能会在 js 文件中泄漏,其他语言的收集 难度比较高
- 让自己上传的恶意包下载优先级更高,比如 pip 使用了 —extra-index-url 参数时, 如果检索到内部和公共的同名软件包,会下载版本更高的那个
- (成功执行命令后)绕过 firewall/IDS 出网,比如 DNS 隧道