sablog 1.6注射漏洞

SEBUGID:SSD-20080813784
Published:2008-08-05
Vulnerable:
sablog 1.6
Discription:
Sablog-X是一个采用PHP和MySQL构建的博客系统.作为Sablog的后继产品,Sablog-X在代码质量,运行效率,负载能力,安全等级,功能可操控性和权限严密性等方面都在原有的基础上,更上一层楼.凭借Sablog-X作者7年多的安全技术经验,4年的PHP开发经验,强于创新,追求完美的设计理念,使得Sablog-X已获得业内越来越多专家和用户的认可.但是80sec在其中的代码里发现一个安全漏洞,导致远程用户通过SQL注射获得数据库权限,甚至获得管理员权限。
在sablog的trackback.php中的转码函数

function iconv2utf($chs) {
global $encode;
if ($encode != 'utf-8') {
if (function_exists('mb_convert_encoding')) {
$chs = mb_convert_encoding($chs, 'UTF-8', $encode);
} elseif (function_exists('iconv')) {
$chs = iconv($encode, 'UTF-8', $chs);
}
}
return $chs;
}

存在问题,当$encode为GBK字符集的时候,用户提交%bf’将会被转化为一个正常的utf-8字符和一个单引号,如果数据未加处理进入数据库将导致SQL注射。
<*References
http://www.80sec.com/release/sablog-sql-injection.txt
*>
SEBUG Solution:
请等待官方补丁
临时解决办法:
在后台禁用trackback功能,并删除trackback.php文件。


Exploit:
[www.sebug.net]
The following procedures (methods) may contain something offensive,they are only for security researches and teaching , at your own risk!
#!/usr/bin/php
<?php

print_r('
+---------------------------------------------------------------------------+
Sablog-X <= 1.6 SQL injection / admin credentials disclosure exploit
by puret_t
mail: puretot at gmail dot com
team: http://ww
// Sebug.net [ 2008-08-05 ]