Eu levei meu laptop para um restaurante local ontem para trabalhar na configuração de um novo aplicativo da web. Eu coloco o servidor no lugar e criei uma página HTML simples:
<html>
<body>Hello, world.</body>
</html>
Eu inicio o servidor (Jersey) e, em seguida, emita o seguinte comando para garantir que tudo esteja funcionando corretamente:
curl http://localhost:8080/assets/index.html
Imagine minha surpresa quando, em vez do meu documento simples, vejo o seguinte retornar:
<html lang="en" xml:lang="en"><!PAGEREF 1>
<head><title>Eguide</title>
<script type="text/javascript" src="/all/rootscript.js"></script>
<script type="text/javascript" src="/cobrandscript.js"></script>
</head>
<!--
/yp/home.htm
<a href="http://webmailtest.bellsouth.net" target=_top>Webmail test</a>
v. 2.8b srv24
-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="refresh" content="0;URL=http://home.bellsouth.net">
</head>
<body>
</body>
</html>
<html>
<body>Hello, world.</body>
</html>
Meu documento está lá na parte inferior, mas antes disso há uma confusão de código que foi de alguma forma injetada. Meu primeiro pensamento foi para grep meu sistema para algumas das seqüências de caracteres contidas no HTML resultante (por exemplo, grep -ri cobrandscript
executado a partir do diretório raiz). Não havia arquivos no meu sistema que eram suspeitos. Então, eu desligo meu wifi e emito o mesmo comando curl. Desta vez, meu documento HTML de 3 linhas é retornado, sem nenhuma das adições.
Parece que o ISP está injetando HTML em um documento HTML que está sendo exibido a partir do host local.
Minha pergunta é: como isso é possível? Este é o conteúdo que está sendo atendido pelo localhost ; isso implica que uma requisição para localhost está de fato acertando a rede externa, pelo menos quando conectada, e esse comportamento parece grosseiramente incorreto para mim.