前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用jscythe并通过Node.js的Inspector机制执行任意JS代码

如何使用jscythe并通过Node.js的Inspector机制执行任意JS代码

作者头像
FB客服
发布2023-03-29 15:47:23
1.6K0
发布2023-03-29 15:47:23
举报
文章被收录于专栏:FreeBuf

 关于jscythe 

jscythe是一款功能强大的Node.js环境安全测试工具,在该工具的帮助下,广大研究人员可以利用Node.js所提供的Inspector机制来强制性让基于Node.js/Electron/v8实现的进程去执行任意JavaScript代码。值得一提的是,即使是在目标进程的调试功能被禁用的情况下,jscythe也能做到这一点。

当前版本的jscythe1在Visual Studio Code、Discord和任意Node.js应用程序上进行过完整测试,请广大研究人员放心使用。

 Node.js的Inspector机制是什么?

Node.js 提供的 Inspector 非常强大,不仅可以用来调试 Node.js 代码,还可以实时收集 Node.js 进程的内存、 CPU Profile 和堆栈内存快照等数据,同时支持静态、动态开启,是一种调试和诊断 Node.js 进程非常好的方式。

通过它可以收集 Node.js 进程的堆快照分析是否有内存泄漏,可以收集 CPU Profile 分析代码的性能瓶颈,从而帮助提高服务的可用性和性能。另外,它支持动态开启,降低了安全风险,同时支持对子线程进行调试,是一个非常强大的工具。

 工具运行机制 

1、定位到目标进程; 2、向目标进程发送SIGUSR1信号,此时将会打开一个端口并开启调试器; 3、通过在发送SIGUSR1信号之前和之后比较打开的端口来确定调试端口; 4、从http://localhost:<port>/json获取WebSocket调试URL和会话ID; 5、使用提供的代码发送一个Runtime. evaluate请求; 6、搞定!

 工具下载 

该工具基于Rust语言开发,因此我们首先需要在本地设备上安装并配置好Rust环境。

接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/evilsocket/jscythe.git
代码语言:javascript
复制

项目构建

切换到项目目录下,然后通过cargo命令完成项目代码构建:

代码语言:javascript
复制
cd /jscythecargo build --release
代码语言:javascript
复制

 工具运行 

指定一个目标进程,并执行一个基础表达式语句:

代码语言:javascript
复制
./target/debug/jscythe --pid 666 --code "5 - 3 + 2"
代码语言:javascript
复制

从一个文件执行代码:

代码语言:javascript
复制
./target/debug/jscythe --pid 666 --script example_script.js
代码语言:javascript
复制

(向右滑动、查看更多)

example_script.js文件中的代码可以require任何代码模块并执行任意代码,例如:

代码语言:javascript
复制
require('child_process').spawnSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator', { encoding : 'utf8' }).stdout
代码语言:javascript
复制
(向右滑动、查看更多)

通过表达式语句搜索进程信息:

代码语言:javascript
复制
./target/debug/jscythe --search extensionHost --script example_script.js
代码语言:javascript
复制

(向右滑动、查看更多)

查看工具帮助信息:

代码语言:javascript
复制
jscythe --help
代码语言:javascript
复制

 工具运行截图 

 许可证协议 

本项目的开发与发布遵循GPLv3开源许可证协议。

 项目地址 

jscythe:https://github.com/evilsocket/jscythe

参考资料:

代码语言:javascript
复制
https://nodejs.org/en/docs/guides/debugging-getting-started/

精彩推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  关于jscythe 
  •  Node.js的Inspector机制是什么?
  •  工具运行机制 
  •  工具下载 
    • 项目构建
    •  工具运行 
    •  工具运行截图 
    •  许可证协议 
    •  项目地址 
    • 参考资料:
    相关产品与服务
    手游安全测试
    手游安全测试(Security Radar,SR)为企业提供私密的安全测试服务,通过主动挖掘游戏业务安全漏洞(如钻石盗刷、服务器宕机、无敌秒杀等40多种漏洞),提前暴露游戏潜在安全风险,提供解决方案及时修复,最大程度降低事后外挂危害与外挂打击成本。该服务为腾讯游戏开放的手游安全漏洞挖掘技术,杜绝游戏外挂损失。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档