Skip to content

Latest commit

 

History

History
29 lines (19 loc) · 1.67 KB

README_zh.md

File metadata and controls

29 lines (19 loc) · 1.67 KB

介绍

分析

js2py是一个知名的python包,它可以在python解释器中执行JS代码。其经常用在各类爬虫中,用于解析网页的JS代码。

js2py的某个全局变量存在一个漏洞,攻击者可以使用这个漏洞在js代码中获得一个python对象的引用,使得攻击者可以逃逸js环境,在主机上执行任意命令。

用户一般会调用js2py.disable_pyimport()阻止JS代码使用pyimport调用python模块,从而防止代码沙盒逃逸。但是使用这个漏洞,攻击者可以绕过这个限制,在主机上执行任意代码。

攻击者可以在一个钓鱼网页上包含一个恶意的js代码文件,让爬虫爬取并解析;也可以通过HTTP请求将恶意代码发送给受害者解析。攻击者可以据此在受害者机器上执行任意python代码,从而执行任意shell指令,实现RCE.

漏洞细节

  • 影响的版本:
    • 在python3下运行的js2py(<=0.74)
  • 影响的代码:
  • 重现步骤:
    • 安装python3(不含3.12以上版本),js2py仍不支持python3.12
    • 运行pip install js2py安装js2py并执行poc.py,其会在主机上执行head -n 1 /etc/passwd; calc; gnome-calculator; kcalc;
    • 如果漏洞存在则脚本会打印Success! the vulnerability exists...或者弹出计算器

修复

官方修复暂时不存在,可以使用fix.py中的代码动态patchjs2py,也可以使用patch.txt手动修复原代码