利用NPM仓库充当文件托管服务

倾旋
倾旋
技术分享|2021-7-2|最后更新: 2023-6-22|
type
status
date
slug
summary
tags
category
icon
password
URL

0x00 什么是NPM?

NPM是随同NodeJS一起安装的包管理工具,NPM可以通过NPM的源下载安装源上发布的JS代码。目前官方源的地址是:https://www.npmjs.com/ 任何人都可以在社区上发布自己的Nodejs代码,但NPM官方的服务器是在境外的,国内想要快速的访问到就必须通过同步源,于是出现了各种NPM镜像源,每隔一段时间就会拉取官方的源同步。既然任何人都可以发布自己的代码到NPM上,我们就可以把NPM的仓库当作一个简单的文件服务器存储一些能够适当公开的静态文件。

0x01 托管代码前的准备工作

 
NPM的认证机制是双因素的(密码+邮箱验证码),注册的时候需要提供真实邮箱:https://www.npmjs.com/signup
注册完毕后,本地安装好NPM环境:sudo apt install npm
notion image
 
本地登录NPM:npm login 同样会需要邮箱验证码
 
notion image
 

0x02 托管第一个静态文件

 
新建一个包名的目录,注意包名不能与NPM官方源上发布的包名同步
 
这里我新建目录名为 my-npm
notion image
 
npm init 可以初始化一个包的基本信息,例如版本号、作者、描述、测试命令等等。
 
notion image
在设置package name时为了怕重复,我设置包名为touch-file。
 
notion image
可以看到已经生成了package.json这个包的基础信息文件,接下来可以继续创建这个包内的其他文件,这里我随便写了一个index.js。
 
npm publish 用于发布这个包。
notion image
 

0x03 如何使用静态文件?

 
NPM有很多源,这里我随便写几个:
notion image
notion image
可以看到至少阿里、腾讯是有NPM同步的,但是文件是压缩包,而jsdelivr可以直接访问源文件,这一点可以当作图床、文件传输.... 我博客的图床就是用的Github + jsdelivr进行加速。
发挥想象:
  • 免费图床
  • 文件下载服务器(小工具、webshell、shellcode?)
  • JS后门...
  • ....
 
PS:如果遇到不太正常的NPM,可以通过Report举报滥用。
notion image
 
©2021-2024 倾旋. All rights reserved.