而对于目前我国软件产业的现状,存在多个开源或者非开源项目均曾经爆出过较为严
重的安全漏洞问题。如下是国内某著名开源软件工程中存在的一个存储型跨站脚本攻击的代
码。
如下函数,解析转化
Iframe 标签(Iframe 标签本身就是个危险标签,不知道要保留这
个功能意义何在)如下
public static function parseIframe($message,$convertStatus = 1){
return preg_replace ( "/ \ [iframe \ ] ( [^ \ [ \ < \ r \ n \ "']+ ? ) \ [ \ /iframe
\
]/eis","self::createIframe('\\1',\$convertStatus)",$message,
self::$_cvtimes);
}
看正则
/\[iframe\]([^\[\<\r\n\
”’]+?)\[\/iframe\]/eis 知道,是匹配形如
[iframe]任意非特殊字符[/iframe]。所以可见[iframe]标签中间的内容是可以任意控制的。匹配
后出来的值被放到
createIframe 中作为第一个参数做了处理,跟进
public static function createIframe($url,$convertStatus){
if($convertStatus){
$html = "";
} else {
$html = "Iframe Close:$url";
}
return self::_pushCode($html);
}
1)判断 convertStatus,该参数默认为 1,生成的$html 是将$url 的值直接带入 src。所以
问题出现了。构造
javascript:alert(1)即可触发该漏洞。我们可以看到生成的 HTML 代码
为,
当不知情者访问后即可触发跨站脚本漏洞
2)当传递的 convertStatus 的值为 0 时,生成的$html 是将$url 的值直接带入 href。所以
问题同样出现。构造
javascript:alert(2)点击即可触发。我们可以看到生成的 HTML 代码
为,
javascript:alert(1)
点击后仍能触发跨站脚本漏洞
由于该款产品在国内用户使用量大概在六百万以上,所以这个问题刚开始爆出来的时
候给很多的个人建站用户造成了很大的影响,官方也在第二天及紧急发布安全补丁修复这
个问题,但是仍然造成数以万计的使用该程序的站长网站被利用。
3 结语
软件测试最终的目的是为了发现软件工程中存在的
BUG 以及安全漏洞等,从而有效的
对整个软件工程中潜在的风险进行改正。
【参考文献】
陈汶斌
.软件测试技术基础[M].北京:清华大学出版社,2008(19)