axublog博客系统,是一款个人的blog系统,代码简介而方便,采用php+mysql数据库的
架构,网站可以全面的生成静态文件,利于网站的访问速度以及网站优化,在目前互联网来说
是一个比较优秀的个人博客系统,sine安全公司对该网站进行了详细的安全检测与审计,发现
axublog存在三个比较重要的漏洞。下面我来详解一下:
axublog SQL盲注漏洞详情
下载了官方axublog 1.0.6版本,并搭建好本地的PHP环境与mysql数据库,在对其代码进行安
全审计与详细的检测时,发现hit.php文件里的代码存在sql盲注漏洞,我们来看下代码如下图:
全审计与详细的检测时,发现hit.php文件里的代码存在sql盲注漏洞,我们来看下代码如下图:
我们可以看到在该代码的前头调用了sqlguolv()函数作为网站防火墙,来过滤一些非法的关键
词与恶意的字符串。我们来看下他的过滤是怎样的。Sine安全公司是一家专注于:服务器安
全、网站安全、网站安全检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。
词与恶意的字符串。我们来看下他的过滤是怎样的。Sine安全公司是一家专注于:服务器安
全、网站安全、网站安全检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。
Function sqlguolv() {
@header("Content-type:text/html; charset=utf-8");
if (preg_match('/select|insert|update|delete|\'|\\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/i',$_
SERVER['QUERY_STRING'])==1 or preg_match('/select|insert|update|delete|\'|\\*|\*|
\.\.\/|\.\/|union|into|load_file|outfile/i',file_get_contents("php://input"))==1){echo "警告
非法访问!"; exit;}
SERVER['QUERY_STRING'])==1 or preg_match('/select|insert|update|delete|\'|\\*|\*|
\.\.\/|\.\/|union|into|load_file|outfile/i',file_get_contents("php://input"))==1){echo "警告
非法访问!"; exit;}
用php环境的安全协议来接受SERVER传过来的值来进行过滤,问题来了,没有过滤and以及
盲注的字符串经过过滤可以直接造成sql语句的拼接。select * from axublog_arts where id=
$id。我们不用使用什么单引号之类的来进行绕过,直接在id后面传入想要执行的sql注入语句
就可以.如下图:Sine安全公司是一家专注于:服务器安全、网站安全、网站安全检测、网站
漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。
盲注的字符串经过过滤可以直接造成sql语句的拼接。select * from axublog_arts where id=
$id。我们不用使用什么单引号之类的来进行绕过,直接在id后面传入想要执行的sql注入语句
就可以.如下图:Sine安全公司是一家专注于:服务器安全、网站安全、网站安全检测、网站
漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。
axublog 后台绕过漏洞
在之前的1.0.5版本的程序代码里也发现了这个后台可以绕过cookies的漏洞,在最新版本里并
没有进行修复,我们来看下后台的文件ad/admin.php代码,如下图:
没有进行修复,我们来看下后台的文件ad/admin.php代码,如下图:
在后台的代码里,我们看到在admin.php代码里,引用了检查cookies的一个代码文件,用来
检测网站后台的管理员是否登录的一个状态,我们再来仔细看下,如下图:
检测网站后台的管理员是否登录的一个状态,我们再来仔细看下,如下图:
if(@$_SESSION["chkad"]==''&&@$_COOKIE["chkad"]==''){
header("Content-type:text/html; charset=utf-8");
echo '<div id=redmsg>请<a href="login.php">请登录</a>。。。</div>';tiao();
exit;
}
根据上面的代码,我们看到是判断管理员是否登录的一个判断条件代码,在第十二行里判断
出现错误,只判断了cookies以及session里的值是不是空值就可以直接判断用户的登录状况,
在看下面的代码检查user_agent头的值跟txtchkad里的值是否相等,我们可以看出来,直接
前端登录的时候直接输入后台面板的地址并跟随上chkad=任意字符,就可以顺利的绕过验证
,登录到管理员后台。
出现错误,只判断了cookies以及session里的值是不是空值就可以直接判断用户的登录状况,
在看下面的代码检查user_agent头的值跟txtchkad里的值是否相等,我们可以看出来,直接
前端登录的时候直接输入后台面板的地址并跟随上chkad=任意字符,就可以顺利的绕过验证
,登录到管理员后台。