
Research
/Security News
Critical Vulnerability in NestJS Devtools: Localhost RCE via Sandbox Escape
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
github.com/Jeric-X/SyncClipboard
中文 | English
SyncClipboard.Server支持跨平台运行,依赖ASP.NET Core 8.0,安装ASP.NET Core 运行时
后,通过以下命令运行
dotnet /path/to/SyncClipboard.Server.dll --contentRoot ./
工作目录与dll所在目录一致,需要写入权限。如需修改工作目录,拷贝一份appsettings.json
到新工作目录并修改--contentRoot
后的路径
服务器通过appsettings.json
文件配置,形式如下:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"http": {
"Url": "http://*:5033"
},
//"https": {
// "Url": "https://*:5033"
//}
},
//"Certificates": {
// "Default": {
// "Path": "/path/to/pem",
// "KeyPath": "/path/to/pem_key"
// }
//}
},
"AppSettings": {
"UserName": "your_username",
"Password": "your_password"
}
}
如需启用HTTPS,请取消https
和Certificates
部分的注释,并设定HTTPS证书路径。最后将http
部分注释或删除以关闭不安全的连接。如需同时启用HTTP和HTTPS,请将二者Url
设置为不同的端口号
不同类型证书的配置方法可以参考微软官方文档
用户名和密码支持使用环境变量配置,当环境变量SYNCCLIPBOARD_USERNAME
、SYNCCLIPBOARD_PASSWORD
均不为空时,将优先使用这两个环境变量作为用户名和密码
环境变量ASPNETCORE_hostBuilder__reloadConfigOnChange
用于配置是否自动识别appsettings.json变动并重载配置,默认值为false
,修改为任何非false
值后会启用此功能
[!WARNING]
HTTP使用明文传输,在公共网络部署服务器请启用HTTPS或使用反向代理工具配置HTTPS。无法从证书颁发机构获取证书时,推荐使用开源工具mkcert或其他方式生成自签名证书
# docker
docker run -d \
--name=syncclipboard-server \
-p 5033:5033 \
-e SYNCCLIPBOARD_USERNAME=your_username \
-e SYNCCLIPBOARD_PASSWORD=your_password \
--restart unless-stopped \
jericx/syncclipboard-server:latest
# docker compose
curl -sL https://github.com/Jeric-X/SyncClipboard/raw/master/src/SyncClipboard.Server/docker-compose.yml
docker compose up -d
如需配置HTTPS,请自行映射appsettings.json
和证书文件,appsettings.json
的容器内路径为/app/appsettings.json
paru -Sy syncclipboard-server
配置文件路径为/etc/syncclipboard/appsettings.json
,修改配置后使用systemctl
命令启动即可:
sudo systemctl enable --now syncclipboard.service
桌面客户端(Windows/Linux/macOS)内置了服务器功能,可以使用可视界面配置
可以使用支持WebDAV协议的网盘作为服务器
测试过的服务器:
桌面客户端(Windows/Linux/macOS)运行在后台时将自动同步剪贴板
在Release页面下载名字以SyncClipboard_win_
开头的zip文件,解压后运行SyncClipboard.exe
在Release页面下载名字以SyncClipboard_macos_
开头的安装包,双击后拖动SyncClipboard图标到Applications文件夹
由于开发者无法验证,“SyncClipboard”无法打开
:
在macOS的设置
->隐私与安全性
页面,点击仍要打开
“SyncClipboard”已损坏,无法打开
:在终端中执行sudo xattr -d com.apple.quarantine /Applications/SyncClipboard.app
在Release页面下载名字以SyncClipboard_linux_
开头的安装包
Arch Linux 用户可以直接从AUR安装(由 @devome 维护):
paru -Sy syncclipboard-desktop
安装后从菜单中启动即可。如果在命令行中使用命令syncclipboard-desktop
启动报错,请将环境变量LANG
设置为en_US.UTF-8
,以LANG=en_US.UTF-8 syncclipboard-desktop
来启动。
xclip
(X11)或wl-clipboard
(Wayland),SyncClipboard会使用这些工具辅助获取剪贴板以增强稳定性。使用xclip -version
或wl-paste -version
命令确认是否已安装deb
、rpm
安装包时,升级安装失败时,请先删除旧版再安装新版[!NOTE]
需要彻底删除SyncClipboard时请手动删除配置文件和临时文件目录:
%AppData%\SyncClipboard\
(Windows),~/Library/Application Support/SyncClipboard/
(macOS),~/.config/SyncClipboard/
(Linux)
关闭已经运行的SyncClipboard,运行新的实例
运行指定命令,{command-name}
为命令名称,设置快捷键后,在配置文件中可以查看对应的命令名称,即使清除快捷键配置,命令行参数仍然有效
当存在已经运行的SyncClipboard时,不会启动新的实例,而是调用已经运行的SyncClipboard执行命令。当不存在已经运行的SyncClipboard时,将在启动完成后立刻执行命令
支持多个--command-{command-name}
参数,多个命令同时执行
[!NOTE]
macOS使用命令行参数时,请使用可执行程序的完整路径/Applications/SyncClipboard.app/Contents/MacOS/SyncClipboard.Desktop.MacOS
导入这个配置文件,修改变量
中的UserName
,UserToken
,url
, url
不要以斜线分隔符/
结尾。HTTP Request Shortcuts
支持从下拉菜单、桌面组件、桌面图标、分享菜单中使用
导入js文件、修改每个文件头部的用户配置后,手动点击运行,或者为每个js文件设置触发方式,例如:开机时触发
Tasker是一款安卓系统上非常强大的自动化工具软件,你可以根据SyncClipboard的API创建适合自己的配置文件,如果你认为你的配置文件非常通用并希望分享出来,欢迎联系我置于此处
全平台依赖三条必要配置(配置的拼写可能会有所不同,含义相同)。
https://domain.com/dav/folder1/working%20folder
,特殊符号需要使用url转义字符代替,不要使用这个文件夹存储其他文件。不使用桌面客户端(Windows/Linux/macOS)时需在工作目录中再创建file
文件夹以同步文件,桌面客户端会在设置服务器时自动创建file
文件夹。url尽量不要以斜线分隔符/
结尾,在部分客户端中会出现问题。API基于WebDAV,在独立服务器运行环境下设定环境变量ASPNETCORE_ENVIRONMENT为Development后运行服务器,或桌面客户端打开服务器并打开设置里的诊断模式后,
访问http://ip:端口/swagger/index.html
可以打开API页面,以下是部分关键API
GET /SyncClipboard.json
PUT /SyncClipboard.json
GET /SyncClipboard.json
HEAD /file/filename // optional
GET /file/filename
PUT /file/filename
PUT /SyncClipboard.json
{
"Type" : "Text"
"Clipboard" : "Content",
"File":""
}
{
"Type": "Image", // or "File", "Group"
"Clipboard": "hash, optional",
"File": "filename"
}
Magick.NET
.NET Community Toolkit
H.NotifyIcon
WinUIEx
moq
Avalonia
FluentAvalonia.BreadcrumbBar
FluentAvalonia
Vanara
Tmds.DBus
SharpHook
DotNetZip.Semverd
Quartz.NET
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.