Git Shell Bypass, menos é mais

August 3, 2022 0 By hdts

sempre fomos fãs de Wargames. Não o filme (bem, também o filme) no entanto, estou me referindo a hackear wargames. Há um número de estilos, mas geralmente você tem acesso a uma conta preliminar em algum lugar, que é Nível0, bem como você tem que explorar alguma falha no sistema para lidar com as permissões Nível1, bem como assim. Quase sempre há um nível onde você tem que explorar um binário legítimo (com algumas permissões sombrias) que faz mais do que o indivíduo de rotina pensa.

Na situação de CVE-2017-8386, menos é mais.

[Timo Schmid] Detalhes Exatamente como o Git-Shell, uma concha restrita destinada a ser utilizada como o colega a montante em uma sessão remota do Git sobre um túnel SSH, pode ser abusado para realizar dados arbitrários lidos, além de um pouco Dados restritos escrevem. O conceito fundamental do Git-Shell é restringir os comandos habilitados em uma sessão SSH aos necessários pela Git (Git-Recebe-Pack, Git-Upload-Pack, Arquivo de Upload Git). O pesquisador percebeu que ele poderia passar parâmetros para esses comandos, como a bandeira -Alp:

1.
2.
3.
4.
5.
6.
7.
$ ssh git @ remoteserver “Git-Recebe-Pack ‘–Help’?

Git-Recebe-Pack (1) Git Manual Git-Recebe-Pack (1)

NOME
Git-Recebe-Pack – Obtenha o que é empurrado para o repositório
[…]

O que a bandeira faz é fazer o comando git abrir a página cara do git, que é passado para um programa de pager, geralmente menos. Além disso, é onde fica interessante. O comando menos, se estiver em execução interativamente, pode fazer uma série de coisas que você esperaria, como procurando texto, vá para um número de linha, role para baixo, assim como assim por diante. O que também pode fazer é abrir novos dados (: E), salve a entrada para um (s) dados (s), bem como execute comandos (!). Para fazer correr interativamente, você tem que forçar a alocação de um PTY em SSH como assim:

1.
2.
3.
4.
5.
6.
7.
8.
9.
$ ssh -t git @ remoteserver “Git-Recebe-Pack ‘–Help’ & quot;

Git-Recebe-Pack (1) Git Manual Git-Recebe-Pack (1)

NOME
Git-Recebe-Pack – Obtenha o que é empurrado para o repositório

Página manual Git-Recebe-Pack (1) Linha 1 (pressione H para assistência ou Q para sair)

Pressione H para assistência, bem como se divertir. Uma advertência é que as instalações usuais A execução de código não executará verdadeiramente os comandos arbitrários, uma vez que o concurso de login em execução é o git-shell, restrito a apenas alguns comandos listados brancos. Há, no entanto, configurações específicas em que isso pode acontecer, como preservar o bash ou sh como shell de login, bem como limitar o indivíduo em métodos que só podem utilizar Git (como em ambientes compartilhados sem acesso root). Você pode ver esse exemplo aqui.

A solução mais rápida parece ser para permitir o lado do servidor de sinalizador No-Pty, na configuração do SSHD. Isso evita que os clientes solicitem uma pty tão menos não funcionem em um modo interativo.

1.
2.
3.
4.
5.
6.
$ cara menos.

Menos (1) Manual de comandos gerais menos (1)

NOME
menos – oposto de mais

Irônico, não é?