Validação do lado do cliente

Neste capítulo, aprenderemos como a validação ajuda no Python Pentesting.

O objetivo principal da validação é testar e garantir que o usuário forneceu as informações necessárias e devidamente formatadas para concluir uma operação com êxito.

Existem dois tipos diferentes de validação -

  • validação do lado do cliente (navegador da web)
  • validação do lado do servidor

Validação do lado do servidor e validação do lado do cliente

A validação de entrada do usuário que ocorre no lado do servidor durante uma sessão de postback é chamada server-side validation. As linguagens como PHP e ASP.Net usam validação do lado do servidor. Depois que o processo de validação no lado do servidor termina, o feedback é enviado de volta ao cliente, gerando uma nova página da web dinâmica. Com a ajuda da validação do lado do servidor, podemos obter proteção contra usuários mal-intencionados.

Por outro lado, a validação de entrada do usuário que ocorre no lado do cliente é chamada de validação do lado do cliente. Linguagens de script como JavaScript e VBScript são usadas paraclient-side validation. Nesse tipo de validação, toda validação de entrada do usuário é feita apenas no navegador do usuário. Não é tão seguro quanto a validação do lado do servidor porque o hacker pode facilmente contornar nossa linguagem de script do lado do cliente e enviar entradas perigosas para o servidor.

Parâmetro de temperamento do lado do cliente: Bypass de validação

A passagem de parâmetros no protocolo HTTP pode ser feita com a ajuda dos métodos POST e GET. GET é usado para solicitar dados de um recurso especificado e POST é usado para enviar dados a um servidor para criar ou atualizar um recurso. Uma das principais diferenças entre os dois métodos é que, se um site estiver usando o método GET, os parâmetros de passagem são mostrados na URL e podemos alterar esse parâmetro e passá-lo ao servidor da web. Por exemplo, a string de consulta (pares nome / valor) é enviada no URL de uma solicitação GET:/test/hello_form.php?name1 = value1&name2 = value2. Por outro lado, os parâmetros não são mostrados durante o uso do método POST. Os dados enviados para o servidor com POST são armazenados no corpo da solicitação HTTP. Por exemplo, POST/test/hello_form.php HTTP/1.1 Host: ‘URL’ name1 = value1&name2 = value2.

Módulo Python para Bypass de Validação

O módulo Python que vamos usar é mechanize. É um navegador Python, que fornece a facilidade de obter formulários da web em uma página da web e também facilita o envio de valores de entrada. Com a ajuda de mecanizar, podemos contornar os parâmetros de validação e temperar do lado do cliente. No entanto, antes de importá-lo em nosso script Python, precisamos instalá-lo executando o seguinte comando -

pip install mechanize

Exemplo

A seguir está um script Python, que usa mecanizar para ignorar a validação de um formulário da web usando o método POST para passar o parâmetro. O formulário da web pode ser obtido no link e pode ser usado em qualquer site fictício de sua escolha.

Para começar, vamos importar o navegador mecanizar -

import mechanize

Agora, vamos criar um objeto chamado brwsr do navegador mecanizar -

brwsr = mechanize.Browser()

A próxima linha de código mostra que o agente do usuário não é um robô.

brwsr.set_handle_robots( False )

Agora, precisamos fornecer o url do nosso site fictício contendo o formulário da web no qual precisamos ignorar a validação.

url = input("Enter URL ")

Agora, as linhas seguintes definirão alguns pais como verdadeiros.

brwsr.set_handle_equiv(True)
brwsr.set_handle_gzip(True)
brwsr.set_handle_redirect(True)
brwsr.set_handle_referer(True)

Em seguida, ele abrirá a página da web e imprimirá o formulário da web nessa página.

brwsr.open(url)
for form in brwsr.forms():
   print form

A próxima linha de códigos irá ignorar as validações nos campos fornecidos.

brwsr.select_form(nr = 0)
brwsr.form['name'] = ''
brwsr.form['gender'] = ''
brwsr.submit()

A última parte do script pode ser alterada de acordo com os campos do formulário da web em que queremos ignorar a validação. Aqui no script acima, pegamos dois campos -‘name’ e ‘gender’ que não pode ser deixado em branco (você pode ver na codificação do formulário da web), mas este script irá ignorar essa validação.