
Gitea diffpatch RCE (CVE-2026-60004) PoC - repo-write to RCE as Gitea service account
Gitea diffpatch एंडपॉइंट दूरस्थ कोड निष्पादन PoC। जिसके पास रिपॉजिटरी पर लेखन अनुमति है (ओपन रजिस्ट्रेशन इंस्टेंस पर पंजीकरण मात्र पर्याप्त है) वह सर्वर पर Gitea सेवा खाते के रूप में मनमाना शेल कमांड निष्पादित कर सकता है।
POST /api/v1/repos/{owner}/{repo}/diffpatch साझा bare अस्थायी क्लोन रिपॉजिटरी में हमलावर-नियंत्रित पैच लागू करता है:
git apply --index --recount --cached --binary # Git ≥ 2.32 时追加 -3 三路合并回退
हमले की श्रृंखला: एक ही पैच को दो बार सबमिट करें → add/add विरोध → थ्री-वे मर्ज फॉलबैक इंडेक्स पथ को checkout करता है (भले ही --cached के साथ) → bare रिपॉजिटरी में root = $GIT_DIR, checkout किया गया hooks/post-index-change (100755) एक सक्रिय Git hook बन जाता है → Git इंडेक्स लिखते समय स्वचालित रूप से निष्पादित होता है → RCE।
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H470d34b1)-3 थ्री-वे मर्ज सक्षम हो)diffpatch एंडपॉइंट उपलब्ध हो# 设置账户密码
export GITEA_PASSWORD='account-password'
python3 gitea_diffpatch_rce_poc.py \
https://<gitea-base-url> \
<username> \
'id; uname -srm; pwd'
| पैरामीटर | विवरण |
|---|---|
url | Gitea का बेस URL |
username | मौजूदा Gitea उपयोगकर्ता नाम (उपलब्धता: डिफ़ॉल्ट रूप से ओपन रजिस्ट्रेशन) |
निर्भरता: Python 3 + स्थानीय git क्लाइंट।
PoC प्रक्रिया: प्रमाणीकरण → निजी आरंभिक रिपॉजिटरी बनाना → hooks/post-index-change पैच तैयार करना → लगातार दो बार diffpatch पर भेजना (add/add विरोध ट्रिगर करना) → Git hook निष्पादित करता है → प्रमाणित Smart HTTP के माध्यम से कमांड आउटपुट प्राप्त करना। कोई आउटबाउंड कॉलबैक नहीं, आउटपुट इन-बैंड लौटाया जाता है।
केवल सुरक्षा अनुसंधान, भेद्यता सत्यापन और रक्षात्मक परीक्षण के लिए। यह PoC लक्ष्य इंस्टेंस पर रिपॉजिटरी बनाएगा, पैच सबमिट करेगा और सर्वर-साइड कमांड निष्पादन ट्रिगर करेगा। कृपया इसे स्व-निर्मित परीक्षण इंस्टेंस पर चलाएं, अनधिकृत या उत्पादन परिवेश में उपयोग न करें।
command | लक्ष्य पर निष्पादित किए जाने वाले शेल कमांड |
GITEA_PASSWORD | खाता पासवर्ड (पर्यावरण चर, या इंटरैक्टिव इनपुट) |