0


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

声明:

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

文章目录

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
  1. 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

中,因为

centos

python

的版本默认是

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_js

jk

中的

pyimport

语句当

js

执行

pyimport

变成

js

后继续执行,将后面的

os.system

当成

python

代码执行

在这里插入图片描述
发送数据包后查看

tmp

目录,命令执行成功

在这里插入图片描述

流量特征分析

通过

wireshark

抓取数据包分析
看数据包的时候发现,有的时候攻击的请求头是

http

协议有的时候是

tcp

协议,但返回包是

http


就很不理解,问了下师傅,因该有可能是网络或者服务连接的问题

同样如果看懂了上面的漏洞原理分析,那特征也就很好提取了
1.请求方式为

POST

2.url固定为

/flash/addcrypted2

3.请求体中必须给

jk

传值,并且值必须含有

pyimport
  1. os.system
    
    执行命令
    ps(我不知道
    python
    
    还有没有别的执行命令的函数哈,如果有,童鞋们的拦截规则可多添加几个)

在这里插入图片描述


本文转载自: https://blog.csdn.net/xhscxj/article/details/128969202
版权归原作者 深白色耳机 所有, 如有侵权,请联系我们删除。

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

还没有评论