pyLoad远程代码执行漏洞(CVE-2023-0297)复现以及原理流量特征分析

news2025/1/9 13:01:38

声明:

请勿用于非法入侵,仅供学习。传送门 -》中华人民共和国网络安全法

文章目录

  • 声明:
  • pyLoad介绍
  • 漏洞介绍
  • 影响版本
  • 不受影响版本
  • 漏洞原理
  • 漏洞环境搭建以及复现
  • 流量特征分析

pyLoad介绍

pyLoad是一个用 Python 编写的免费和开源下载管理器,可用于NAS、下一代路由器、无头家庭服务器以及任何能够连接到互联网并支持 Python 编程语言的设备。

漏洞介绍

pyLoad 存在代码注入漏洞,未经身份验证的攻击者可以通过滥用 js2py 功能执行任意 Python 代码。

影响版本

pyLoad <= 0.4.20
另外,小于0.5.0b3.dev31版本的pyLoad开发版本也受此漏洞影响。

不受影响版本

pyLoad > 0.4.20(正式版本尚未发布)
另外,官方已更新pyLoad安全开发版本0.5.0b3.dev31可供下载。

漏洞原理

这里直接给github链接,里面也有exp可进行利用
https://github.com/bAuh0lz/CVE-2023-0297_Pre-auth_RCE_in_pyLoad

漏洞原理看的一知半解

此处通过request在前端页面处直接传值给jk
eval_js函数再将jk传入的值当成js代码来执行
也就是说此时我们可以执行任意js代码

在这里插入图片描述
并且程序中默认开启了pyimport

pyimport声明:
最后,Js2Py还支持使用“pyimport”语句从JavaScript导入任何Python代码

在这里插入图片描述
好的,到这里基本就差不多了,总结下原理:

1.直接在前端传值
2.传入内容为pyimport语句格式的字符串,然后赋值给上面的jk
3.jk中的pyimport语句字符串到下面被eval_js函数当成js代码执行了
4.此时字符串被js执行后,pyimport语句格式的字符串也就不再是字符串了,它就变成正常的js代码了,也就是说js会去加载执行pyimport
5.上面说了pyimport语句会将js代码导入python中执行
6.此时我们写入的恶意pyimport语句就会被带入python代码中执行

漏洞环境搭建以及复现

搭建环境的时候踩了很多坑,浪费了很多的时间

github上直接下载环境 https://github.com/pyload/pyload

可以进去下载历史版本进行搭建

因为我在搭建历史版本环境的时候总是报错,所以就没有使用历史版本。直接下载最新版本,然后将版本更新后的代码更改回去。

将程序放kali中,因为centospython的版本默认是2.7的,就懒得去弄了,直接放到kali
在这里插入图片描述
此处是更新后修改的内容,进入src/pyload/core/utils/misc.py中进行修改

在这里插入图片描述

到目录下执行
python3 setup.py build
python3 setup.py install
python3 setup.py build_locale
pyload
在这里插入图片描述
启动服务后访问9666端口

在这里插入图片描述

访问/flash/addcrypted2并用burp抓包,更改请求方式为POST

如果看懂了上面的漏洞原理分析,那么这个payload应该能秒懂

就是给jk参数传入pyimport语句,语句的内容为用os.system执行系统命令创建一个文件
到服务中eval_jsjk中的pyimport语句当js执行
pyimport变成js后继续执行,将后面的os.system当成python代码执行

在这里插入图片描述
发送数据包后查看tmp目录,命令执行成功

在这里插入图片描述

流量特征分析

通过wireshark抓取数据包分析
看数据包的时候发现,有的时候攻击的请求头是http协议有的时候是tcp协议,但返回包是http
就很不理解,问了下师傅,因该有可能是网络或者服务连接的问题

同样如果看懂了上面的漏洞原理分析,那特征也就很好提取了
1.请求方式为POST
2.url固定为/flash/addcrypted2
3.请求体中必须给jk传值,并且值必须含有pyimport
4.os.system执行命令
ps(我不知道python还有没有别的执行命令的函数哈,如果有,童鞋们的拦截规则可多添加几个)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算GPS两个点之间的距离

参考&#xff1a;Https://blog.csdn.net/u011339749/article/details/125048180任意两点对应的经纬度A(lat0,long0),B(lat1,long1)则C(lat1,long0),D(lat0,long1)。通过A、B、C、D四个点可以确定一个四边形平面。同一纬度相互平行&#xff0c;可知连接ACBD四点构成了一个等腰梯…

干货|PCB板上的丝印位号与极性符号的组装性设计

PCB板上的字符很多&#xff0c;那么字符在后期起着那些非常重要的作用呢&#xff1f;一般常见的字符:“R”代表着电阻&#xff0c;"C”代表着电容&#xff0c;“RV”表示的是可调电阻&#xff0c;“L”表示的是电感&#xff0c;“Q”表示的是三极管&#xff0c;“D”表示的…

剑指Offer 第27天 JZ75 字符流中第一个不重复的字符

字符流中第一个不重复的字符_牛客题霸_牛客网 描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如&#xff0c;当从字符流中只读出前两个字符 "go" 时&#xff0c;第一个只出现一次的字符是 "g" 。当从该字符流中读出前六个字符 “google&…

MDS75-16-ASEMI三相整流模块MDS75-16

编辑-Z MDS75-16在MDS封装里采用的6个芯片&#xff0c;是一款工业焊机专用大功率整流模块。MDS75-16的浪涌电流Ifsm为920A&#xff0c;漏电流(Ir)为5mA&#xff0c;其工作时耐温度范围为-40~150摄氏度。MDS75-16采用GPP硅芯片材质&#xff0c;里面有6颗芯片组成。MDS75-16的电…

ThreadPoolExecutor原理解析

1. 工作原理1.1 流程图1.2 执行示意图从上图得知如果当前运行的线程数小于corePoolSize(核心线程数)&#xff0c;则会创建新线程作为核心线程来执行任务(注意&#xff0c;执行这一步需要获取全局锁)。如果运行的线程等于或多于corePoolSize&#xff0c;则将任务加入BlockingQue…

C语言const的用法详解

有时候我们希望定义这样一种变量&#xff0c;它的值不能被改变&#xff0c;在整个作用域中都保持固定。例如&#xff0c;用一个变量来表示班级的最大人数&#xff0c;或者表示缓冲区的大小。为了满足这一要求&#xff0c;可以使用const关键字对变量加以限定&#xff1a;constin…

大型智慧校园系统源码 智慧班牌 智慧安防 家校互联 智慧校园小程序源码

一款针对中小学研发的智慧校园系统源码&#xff0c;智慧学校源码&#xff0c;系统有演示&#xff0c;可正常上线运营正版授权。 技术架构&#xff1a; 后端&#xff1a;Java 框架&#xff1a;springboot 前端页面&#xff1a;vue element-ui 小程序&#xff1a;小程序原生…

【CDP】CDP集群修改solr 存储路径 引发组件的ranger-audit 大量报错的解决方案

前言 我们生产上公司是使用的CDP集群&#xff0c;一次管理员通知&#xff0c;Solr 组件的数据存放路径磁盘空间不够。 我们的solr 组件时为 Ranger 服务提供日志审计功能&#xff0c; 在我们更改了磁盘路径&#xff0c;并重启了Solr 组件&#xff0c;然后发现相关组件&#…

立创eda专业版学习笔记(6)(pcb板移动节点)

先要看一个设置方面的东西&#xff1a; 进入设置-pcb-通用 我鼠标放到竖着的线上面&#xff0c;第一次点左键是这样选中的&#xff1a; 再点一次左键是这样选中的&#xff1a; 这个时候&#xff0c;把鼠标放到转角的地方&#xff0c;点右键&#xff0c;就会出现对于节点的选项…

关于VSCode安装go插件问题

比较常见的go开发编辑工具有VSCode、GoLand等&#xff0c;其中&#xff0c;使用VSCode需要下载相关的go语言插件。但是大多数情况都会下载失败&#xff0c;因为有些资源需要翻墙的原因&#xff0c;有时候翻墙了还是会报错。   本文将介绍一种帮助大家成功下载go插件的方法&am…

流水线使用(测试->构建->部署上线)

流水线介绍&#xff08;可直接查阅云效中流水线介绍&#xff09; 流水线在项目中的使用 1、选择我的流水线—>新建流水线 2、选择流水线模板&#xff08;可以根据需求选择不同模板&#xff09; 3、流水线配置 ①选择代码源&#xff1a;我目前展示的是直接使用codeup中的代码…

apipost-一键压测

apipost新功能可实现一键压测接口压测实践使用场景对指定接口进行性能测试。实现方式为实现高性能的并发需求&#xff0c;使用自研的压测引擎&#xff0c;可以实现一万以上并发。项目已经开源&#xff0c;github地址&#xff1a;https://github.com/Apipost-Team/runnerGo压测结…

antd日期组件时间范围动态跟随

这周遇到了一个很诡异但又很合理的需求。掉了一周头发&#xff0c;死了很多脑细胞终于上线了。必须总结一下&#xff0c;不然对不起自己哈哈哈。 一、需求描述 默认当前日期时间不可清空。 功能 默认时间如下&#xff1a; 目的&#xff1a;将时间改为 2014-08-01 ~ 2014-08…

网络工程师测试命令排行榜,快来看一看吧! -ccie网络工程师

网络工程师测试命令排行榜&#xff0c;快来看一看吧&#xff01; 01 Ping命令 ping命令的主要功能是用来检测网络的连通情况和分析网络运行速度。它是基于TCP/IP协议、通过发送和接收数据包来检测两台计算机间的连接状况。 网络工程师用 ping查看网络情况&#xff0c;主要…

【无标题】tcpdump 命令

tcp一款sniffer工具&#xff0c;是Linux上的抓包工具&#xff0c;嗅探器语法tcpdump (选项)选项-c&#xff1a; 指定要抓取的包数量。注意&#xff0c;是最终要获取这么多个包。例如&#xff0c;指定"-c 10"将获取10个包&#xff0c;但可能已经处理了100个包&#xf…

如何基于声网互动白板实现一个多人数独游戏

本文作者是声网社区的开发者“tjss”。他基于 Vue、声网的互动白板的代码模板&#xff0c;搭建出了一个支持多人互动的数独游戏。本文记录了他的实现过程&#xff0c;欢迎大家也可以尝试实现自己的小游戏或应用。 我基于声网互动白板的 SDK 与 Window Manager 开发了一个场景化…

第二十三周周报

学习内容&#xff1a; 修改ViTGAN代码 学习时间&#xff1a; 2.3-2.10 学习产出&#xff1a; 现在的效果 可以看到在700k左右fid开始上升&#xff0c;相比vitgan&#xff0c;改的vitgan鉴别器loss有所下降&#xff0c;但是fid没有降下来&#xff0c;最好为23.134&#xf…

Elasticsearch7.8.0版本进阶——分布式集群(水平扩容)

目录一、Elasticsearch集群的安装1.1、Elasticsearch集群的安装&#xff08;win10环境&#xff09;1.2、Elasticsearch集群的安装&#xff08;linux环境&#xff09;二、水平扩容&#xff08;win10环境集群演示&#xff09;三、想要扩容超过 6 个节点怎么办3.1、主分片和副分片…

IDEA合并分支(从开发分支到测试分支)

IDEA合并分支(从开发分支到测试分支) 1、先在当前分支拉去最新的代码且提交自己的修改到远程分支上 2、切换到目标分支(你要合并到的分支上),test测试分支 3、进行分支合并,这里其实有3个选项比较常用 ①Compare with ‘test’ 与当前分支(test)比较,这个比较回弹出个窗口…

刷爆网络的ChatGpt,给大家搞来了。

最近chatgpt可谓是顶上了热搜&#xff0c;之前写代码的同学们应该都知道出了一款插件叫做 Copilot&#xff0c;这是一款可以帮你自动写代码的插件&#xff0c;只要输入你想要写的代码&#xff0c;比如写一个js轮播图之类的&#xff0c;立马就可以帮你生成。不仅如此&#xff0c…