GCP - Artifact Registry Persistence
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Para mais informações sobre o Artifact Registry, confira:
GCP - Artifact Registry EnumO que acontece se um repositório remoto e um padrão forem misturados em um virtual e um pacote existir em ambos?
O que tem a prioridade mais alta definida no repositório virtual é usado
Se a prioridade for a mesma:
Se a versão for a mesma, o nome da política em ordem alfabética primeiro no repositório virtual é usado
Se não, a versão mais alta é usada
Portanto, é possível abusar de uma versão mais alta (confusão de dependência) em um registro de pacotes público se o repositório remoto tiver uma prioridade maior ou igual
Essa técnica pode ser útil para persistência e acesso não autenticado, pois para abusar dela, basta saber o nome de uma biblioteca armazenada no Artifact Registry e criar essa mesma biblioteca no repositório público (PyPi para python, por exemplo) com uma versão mais alta.
Para persistência, esses são os passos que você precisa seguir:
Requisitos: Um repositório virtual deve existir e ser usado, um pacote interno com um nome que não exista no repositório público deve ser usado.
Crie um repositório remoto se ele não existir
Adicione o repositório remoto ao repositório virtual
Edite as políticas do registro virtual para dar uma prioridade mais alta (ou igual) ao repositório remoto. Execute algo como:
Baixe o pacote legítimo, adicione seu código malicioso e registre-o no repositório público com a mesma versão. Sempre que um desenvolvedor instalá-lo, ele instalará o seu!
Para mais informações sobre confusão de dependência, confira:
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)