pgadmin4 远程代码执行漏洞复现(CVE-2022-4223)
1|0影响版本
< 6.17
2|0漏洞分析
就是os.path.abspath(os.path.join(...))可以访问远程UNC路径的文件,subprocess.getoutput() 函数触发执行文件。
漏洞代码
HTTP 路由处理程序被定义为/validate_binary_path触发代码的相应 URI 部分。该URI触发的代码要求是POST请求。request.data被读取[2] 处。不用管[3] 中的功能,自己可以检查“为什么”。但是在处,一个常量 UTILITIES_ARRAY
限制了我们稍后流入subprocess调用的最终输入。从constants.py可知UTILITIES_ARRAY = ['pg_dump', 'pg_dumpall', 'pg_restore', 'psql']。此时我们仍然控制binary_path变量,可以控制路径,但不能控制最终接收器中执行的文件名。此外,可以已经观察到该flask_login模块提供了一个@login_required注释(检查网络应用程序的其他路由)以检查经过身份验证的上下文。这里缺少这一点,没有进行身份验证,所以能够未经身份验证来进行RCE。
3|0漏洞复现
使用Impacket 套件在我们的 Linux 攻击者机器上设置一个 SMB 服务器来尝试一下。
在我的tmp
目录中,创建了一个以从列表UTILITIES_ARRAY = ['pg_dump', 'pg_dumpall', 'pg_restore', 'psql']中随机选择的元素命名的文件,例如pg_dump[.exe]
。
如下是创建一个c文件然后编译成pg_dump.exe
然后从浏览到 或 获取 Cookie CSRF令牌 X-pgA-CSRFToken等头
最后请求包如下图
触发有效载荷后,我们在攻击者机器上看到一个传入的 SMB 连接,检索文件pg_dump.exe
:Pre-Auth RCE 已实现。
__EOF__

本文链接:https://www.cnblogs.com/forforever/p/16979631.html
关于博主:喜欢读书、旅行、爬山。评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效