漏洞描述:http://www.80sec.com/sablog-sql-injectio.html

Sablog1.6和Sax2.0都有这个问题,算是小BUG吧,在sablog的trackback.php中的转码函数存在问题,当$encode为GBK字符集的时候,用户提交%bf’将会被转化为一个正常的UTF-8字符和一个单引号,如果数据未加处理进入数据库将导致SQL注射。

官方已经发布了最新的补丁文件,如果你的博客已经禁止trackback功能,可以完全不用理会这个漏洞。不过出于安全考虑,还是提供一下解决方法。漏洞解决方法是不转换编码,现在UTF-8编码才是王道,转不转换无所谓啦,如果你是非UTF-8编码的话,发过来的trackback就是乱码,呵呵。官方提供的补丁文件是Sablog1.6的,并没有提供Sax2.0预览版补丁,其实Sablog1.6和Sax2.0的trackback.php文件基本上差不多,只需要修改两个地方就可以了,详看补丁文件,强制修改编码为UTF-8就OK了。

请把补丁文件上传到网站目录下即可,除修改trackback.php外,另外修改了一下include\sax_version.php,把版本号改为跟sablog1.6一样,这样后台就不会提示升级了。

最后修改一下模板文件的show.php,删除以下代码,去掉GBK和BIG5编码的trackback链接。

[php]
<td width="85" height="20"><a href="javascript:;" onclick="showajaxdiv('trackback', '$options[url]getxml.php?action=trackback&amp;id=$article[articleid]&amp;encode=gbk', 300);"><img src="$options[url]templates/$options[templatename]/img/gbk.jpg" width="73px" height="15px" border="0" alt="点击获得Trackback地址,Encode: GB2312 or GBK" /></a></td>
<td width="85" height="20"><a href="javascript:;" onclick="showajaxdiv('trackback', '$options[url]getxml.php?action=trackback&amp;id=$article[articleid]&amp;encode=big5', 300);"><img src="$options[url]templates/$options[templatename]/img/big5.jpg" width="73px" height="15px" border="0" alt="点击获得Trackback地址,Encode: BIG5" /></a></td>
[/php]


sax2.0-pach-20080806.rar

Last modification:August 16, 2009
稀罕你