Convalida lato client

In questo capitolo, impareremo come la validazione aiuta in Python Pentesting.

L'obiettivo principale della convalida è testare e garantire che l'utente abbia fornito le informazioni necessarie e correttamente formattate necessarie per completare con successo un'operazione.

Esistono due diversi tipi di convalida:

  • convalida lato client (browser web)
  • convalida lato server

Convalida lato server e convalida lato client

Viene chiamata la convalida dell'input dell'utente che avviene sul lato server durante una sessione di postback server-side validation. I linguaggi come PHP e ASP.Net utilizzano la convalida lato server. Una volta terminato il processo di convalida lato server, il feedback viene rispedito al client generando una nuova pagina web dinamica. Con l'aiuto della convalida lato server, possiamo ottenere protezione contro utenti malintenzionati.

D'altra parte, la convalida dell'input dell'utente che avviene sul lato client è chiamata convalida sul lato client. Per i linguaggi di scripting come JavaScript e VBScript vengono utilizzaticlient-side validation. In questo tipo di convalida, tutta la convalida dell'input dell'utente viene eseguita solo nel browser dell'utente. Non è così sicuro come la convalida lato server perché l'hacker può facilmente aggirare il nostro linguaggio di scripting lato client e inviare input pericolosi al server.

Parametro lato client di temperamento: bypass di convalida

Il passaggio dei parametri nel protocollo HTTP può essere eseguito con l'aiuto dei metodi POST e GET. GET viene utilizzato per richiedere dati da una risorsa specificata e POST viene utilizzato per inviare dati a un server per creare o aggiornare una risorsa. Una delle principali differenze tra entrambi questi metodi è che se un sito Web utilizza il metodo GET, i parametri di passaggio vengono visualizzati nell'URL e possiamo modificare questo parametro e passarlo al server Web. Ad esempio, la stringa di query (coppie nome / valore) viene inviata nell'URL di una richiesta GET:/test/hello_form.php?name1 = value1&name2 = value2. D'altra parte, i parametri non vengono visualizzati durante l'utilizzo del metodo POST. I dati inviati al server con POST vengono memorizzati nel corpo della richiesta HTTP. Ad esempio, POST/test/hello_form.php HTTP/1.1 Host: ‘URL’ name1 = value1&name2 = value2.

Modulo Python per bypass di convalida

Il modulo Python che useremo è mechanize. È un browser web Python, che fornisce la possibilità di ottenere moduli web in una pagina web e facilita anche l'invio di valori di input. Con l'aiuto della meccanizzazione, possiamo bypassare la convalida e temperare i parametri lato client. Tuttavia, prima di importarlo nel nostro script Python, dobbiamo installarlo eseguendo il seguente comando:

pip install mechanize

Esempio

Di seguito è riportato uno script Python, che utilizza la meccanizzazione per bypassare la convalida di un modulo Web utilizzando il metodo POST per passare il parametro. Il modulo web può essere preso dal linkhttps://www.tutorialspoint.com/php/php_validation_example.htm e può essere utilizzato in qualsiasi sito Web fittizio di tua scelta.

Per cominciare, importiamo il browser Mechanize -

import mechanize

Ora creeremo un oggetto denominato brwsr del browser Mechanize -

brwsr = mechanize.Browser()

La riga di codice successiva mostra che il programma utente non è un robot.

brwsr.set_handle_robots( False )

Ora, dobbiamo fornire l'URL del nostro sito Web fittizio contenente il modulo Web su cui dobbiamo bypassare la convalida.

url = input("Enter URL ")

Ora, le seguenti righe imposteranno alcuni genitori su true.

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

Successivamente aprirà la pagina web e stamperà il modulo web su quella pagina.

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

La prossima riga di codici ignorerà le convalide sui campi dati.

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

L'ultima parte dello script può essere modificata in base ai campi del modulo web su cui vogliamo bypassare la convalida. Qui nello script sopra, abbiamo preso due campi:‘name’ e ‘gender’ che non può essere lasciato vuoto (puoi vedere nella codifica del modulo web) ma questo script ignorerà quella convalida.