Browse By

Polyshell – um poliglota Bash / Batch / PowerShell!

O PolyShell é um script que é simultaneamente válido no Bash, Windows Batch e PowerShell (ou seja, um poliglota ).
Isso torna o PolyShell um modelo útil para testes de penetração , pois pode ser executado na maioria dos sistemas sem a necessidade de cargas úteis específicas do destino. O PolyShell também foi projetado especificamente para ser entregue via injeção de entrada usando um USB Rubby Ducky , MalDuino ou dispositivo similar.

Como usá-lo

como um script autônomo

  1. Copiar / renomear o script para que ele tenha a extensão de arquivo correto ( .sh.batou .ps1).
  2. Execute o script com um shell Unix, como um arquivo em lotes ou com o PowerShell.

Usando injeção de entrada

  1. Abra um terminal na máquina de destino.
  2. Execute a carga útil.
  3. Pressione Ctrl-C e execute exit.

O método de injeção de entrada se comportará de maneira ligeiramente diferente do método de script. Quando executada como um script, a carga será encerrada imediatamente após o processamento de um idioma. Quando entregue por injeção, a carga útil executa um loop de leitura. Sem ele, a carga fecharia a janela do terminal, mas continuaria digitando em uma janela desconhecida. O Ctrl-C interrompe o script do loop de leitura, permitindo a execução sem efeitos colaterais indesejados.
Além disso, colar o script em um terminal pode falhar. Quando o script atinge o loop de leitura, alguns terminais tratam o texto colado restante como a entrada do loop de leitura (boa), mas outros podem continuar executando o script quando o loop de leitura sai (ruim).

Como funciona
O truque principal é fazer com que o idioma “desvie o olhar” quando queremos executar um código específico para apenas um deles. Isso é conseguido através da exploração de peculiaridades de linguagem que envolvem citações, redirecionamentos e comentários.
Considere a seguinte linha:

echo \" <<'BATCH_SCRIPT' >/dev/null ">NUL "\" \`" <#"

Cada idioma vê o echocomando, mas interpretará o restante da linha de maneira diferente.
Por exemplo, é isso que cada idioma interpretará como uma sequência:

      echo \" <<'BATCH_SCRIPT' >/dev/null ">NUL "\" \`" <#"
Bash                                      [-----]     [---]
Batch       [-----------------------------]     [-]   [---]
PS          [-----------------------------]     [-]

Depois de executar a linha, o script bash estará em um documento aqui , o script PowerShell estará em um comentário de várias linhas e o script em lote continuará sendo executado normalmente. Após a execução de cada idioma, nós o encerramos. Isso nos impede de precisar contornar suas peculiaridades posteriormente no script.

Baixar Polyshell

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.