Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
gitea-public-only-pat-org — Prueba de concepto de laboratorio para un bypass de autorización en Gitea donde un PAT solo público con write:organization crea una organización privada mediante POST /api/v1/orgs. | Kitploit
Herramientas/GitHubGitHub/abraxas/gitea-public-only-pat-org
Autenticación y AutorizaciónAnálisis de VulnerabilidadesExplotaciónVirtualización de SeguridadSeguridad WebPruebas de PenetraciónSeguridad de APIsLabs y Práctica

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHub
abraxas/gitea-public-only-pat-org

gitea-public-only-pat-org

Prueba de concepto de laboratorio para un bypass de autorización en Gitea donde un PAT solo público con write:organization crea una organización privada mediante POST /api/v1/orgs.

Ver Repositorio
7hace 15 díasAún no revisado

Abraxas Labs - gitea-public-only-pat-org

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitea-public-only-pat-org

gitea-public-only-pat-org

Gitea 1.27.3 - Gitea

public-only en un PAT se supone que es la promesa de que el token no puede tocar recursos privados. POST /user/repos tiene rejectPublicOnly. POST /orgs tiene tokenRequiresScopes y reqToken. No tiene rejectPublicOnly. DEFAULT_ALLOW_CREATE_ORGANIZATION por defecto es true.

Un PAT public-only con write:organization crea una organización privada. El mismo token no puede crear un repositorio de usuario privado.

IDaún sin CVE
CWECWE-863
CVSSMedio: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
ProductoGitea
Afectadohasta v1.27.3 (146cc3e)
AuthPAT public-only con escritura de org
LicenciaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Qué puede hacer un atacante

Usar un PAT public-only robado o emitido en exceso que además tenga write:organization. Crear una organización privada. Esa org es un escondite que el token no debería haber podido crear. El mismo token sigue sin poder crear un repositorio de usuario privado, y este bug no abre el git privado existente de otra persona.

Integridad, no un volcado de git privado. Útil cuando la víctima emitió "public-only" a propósito: CI, un bot, un token de contratista que creían que no podía hacer crecer una org privada.

La creación de repos de org solo verifica la visibilidad de la org. El obsoleto POST /org/{org}/repos omite public-only por completo. Yo probé la creación de org. Eso es suficiente.

Cómo lo encontré

Misma pasada de restos que el lab de hostmatcher 0.0.0.0/8: v1.27.3 después de la oleada de GHSA, luego los handlers que aún omiten una puerta que un hermano ya tiene. Los bugs de visibilidad y de alcance de token fueron un tema de esa oleada. Hice grep de rejectPublicOnly en api.go. La creación de repos de usuario lo tiene. La creación de org no.

Generé un PAT con los scopes public-only,write:organization,write:repository,write:user. La creación de org privada devolvió 201. El mismo token, creación de repo de usuario privado, 403 this endpoint is not available for public-only tokens. Ese 403 es el control. Si ambos hubieran dado 201, el middleware habría desaparecido por completo. Si ambos hubieran dado 403, no habría nada que reportar.

Caminos equivocados ya registrados: tratar el HTTP 201 de org como suficiente (confirmar visibility=private en GET); que la creación de repo de usuario privado tuviera éxito (entonces rejectPublicOnly desapareció - el lab requiere 403); leer el contenido de git privado existente; una reverse shell. Teatro.

Lab

cd lab
./run.sh

Objetivo solo http://127.0.0.1:18132. Compose establece DEFAULT_ALLOW_CREATE_ORGANIZATION=true.

token-scopes=public-only,write:organization,write:repository,write:user
org-create status=201
org-visibility='private'
user-repo-create status=403 this endpoint is not available for public-only tokens
SUCCESS GITEA-PUBLIC-ONLY-PAT

La solución

Poner rejectPublicOnly() en POST /orgs, y tratar la creación de repos de org como sensible a public-only también. La creación de org public-only debe dar 403 de la misma forma que ya lo hace la creación de repo de usuario privado.

Referencias

  • github.com/go-gitea/gitea tag v1.27.3
  • api.go (rejectPublicOnly, POST /orgs, POST /user/repos)
  • CWE-863

Licencia

GNU Affero GPL v3.0. Ver LICENSE. Solo lab en loopback. Sin garantía.

Descargar herramienta