分享

提权技术研究_Discuz!管理员复制

 昵称800675 2010-07-19

Crossday Discuz! Board 论坛系统(简称 Discuz! 论坛)是一个采用 PHP 和 MySQL 等其它多种数据库构建的高效论坛解决方案。作为商业软件产品, Discuz! 在代码质量,运行效率,负载能力,安全等级,功能可操控性和权限严密性等方面有着良好的口碑。对于站长而言,利用 Discuz! 均能够在最短的时间内,花费最低的费用,采用最少的人力,架设一个性能优异、功能全面、安全稳定的社区论坛平台。它能运行于Windows平台和Linux平台,目前已经有超过100万的用户。

  使用Discuz!来建设论坛方便快捷,能够满足论坛功能需求,其安全性与同类相比是相对最高的,因此深受广大用户的喜爱,而在网络攻防技术研究中最为核心的东西就是获取用户数据以及获得系统的完全控制权限,本文主要针对Discuz!数据库如何获取管理员权限而展开研究的。在某些情况下,是完全可以获取一个Webshell,在获取Webshell的情况下,可以进一步获取Mysql等有关数据库连接的用户和密码等信息,由于Discuz!特有的加密方式,即使通过SQL注入猜解获取了Discuz!论坛管理员的密码也无法破解,因此如何通过操作数据库来获得管理员权限就尤为有用。本文研究的技术可以应用在两个方面:

  (1)恢复论坛管理员的密码。对于Discuz!论坛管理员来说,如果忘记密码了,那么对于整个论坛的管理将无从下手,因此只能想办法恢复。

  (2)提升权限获取用户数据库文件。在得到Webshell的情况下,通过本文研究的技术可以轻易的查看管理员信息,修改论坛设置、备份数据库等操作,还可以让普通用户具有管理员权限。

  实验环境:

  (1)数据库——Mysql5.1

  (2)Mysql数据库客户端管理软件——Mysql-Front

  (3)Discuz!论坛版本7.0,下载地址:http://download./Discuz

  (一)Discuz!论坛加密方式

  Discuz!6.X以及后面的7.0版本都采用md5多重加密,其加密函数有checkmd5和authcode,该函数在Discuz!缺省安装include目录下的global.func.Php文件中。先采用salt方式,随机获得一个字符串,然后把明文密码MD5之后,再与随机字符串连接起来之后,再次MD5。加密密码为:md5(md5($newpw).$salt) 其中$salt为random,返回的字符串$hash。这样就极大的提高了用户密码的安全性。

  1.checkmd5函数

  

  以上代码主要度对密码进行检测,有三个参数:

  @param string $md5

  @param string $verified

  @param string $salt

  返回值为“0”表示失败;为“1”采用“MD5 with salt”;为“2”采用“Dual MD5”; 为“3”表示是采用正常md5加密方式,为“4”采用“MD5-16”方式。

  2.authcode函数

  

  以上代码主要用来加密或者解密用户信息,其中参数意义如下:

  @param $string - 加密或解密的串

  @param $operation - 加密还是解密

  @param 密钥

  @return 返回字符串

  $ckey_length 随机密钥长度 取值 0-32;加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方,当此值为 0 时,则不产生随机密钥

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多