| TCH (statz) | ![]() #1, Főfasz (10579) |
5005 | #21de | ^ | Idézet | Wed, 21 Nov 2012 22:42:28 +01 |
| 80.99.*.* |
|
*.catv.broadband.hu |
| Még jelen pillanatban is szopunk a júmla hekkel, külön vicc, hogy úgy néz ki, hogy máshova is bejutottak, mert egy symfonis repot is megbasztak. Nagy az öröm. Persze a high command szarik a biztonságra, meg arra, hogy mi is történik, csak takarítsuk el a végeredményt. Az egyik weboldalon véletlenül kiszúrtunk pár oda nagyon nem való iframe-t, ami a jóég tudja mit közvetített a célweboldalak felé. Találtunk egy feltöltött hátsóajtót, benne egy agyonkódolt evallal, amit visszafejtettünk és meg is volt a hekkerek toolja. A góré szerint azonban ezt nem ember csinálta, hanem egyenesen automatizálva van a dolog; scriptek keresgetik a júmlaportálokat és nyomják fel őket világszerte. Automatizáltan. SB. Nem SoundBlaster, hanem SírokBazmeg. Csak azt nem értem, hogy ha ezt ennyire vágja, AKKOR MI A KURWA PICSÁÉRT VANNAK MÉG JÚMLAPORTÁLOK A SZERVEREN?!!! Az Isten verje meg ezt a sok netről letölthető hulladékot bazdmeg! Egyébként amit elértek, minden JS fájlt kinyitottak és a végére behányták, hogy document.write('<iframe src="mittudomen.com/faszom"></iframe>'); Mindenesetre az explicit utasítás az volt, hogy leszarni a backdoort és minden egyebet, takarítsuk el az ájfrémeket, bazdmeg... Nos, erre összedobtunk Mcloaddal egy CLI-s PHP szkriptet, ami végigmegy egy adott mappán és egy open/end string párosra vadászik és ha talál kitakarítja, meg azt is ami közte van. A filepattern csak egy sima strpos, vagyis csak azt nézi, hogy amit keres az ember, benne van-e. Lehet ötletet adni valami jobbra. (Gondolom valami regexpes nyavalyával kéne.) Ha minden fájlt akar az ember, akkor azt a paramétert üresen kell hagyni. Hátha jó lesz valakinek valami hasonló célra... <?PHP
function purge_file($file, $what_open, $what_close, $only_list = true, $list_flags = 1)
{
$count = 0;
$text = file_get_contents($file);
$pos = 0;
$clen = strlen($what_close);
$len = strlen($text);
while (($opos = strpos($text, $what_open, $pos)) !== false)
{
if (($cpos = strpos($text, $what_close, $opos)) !== false)
{
$count++;
$cpos += $clen;
$pos = $cpos;
if ($only_list)
{
if (($list_flags & 1) != 0)
{
echo getcwd().'/'.$file."\n\n";
}
if (($list_flags & 2) != 0)
{
echo substr($text, $opos, $cpos - $opos)."\n\n";
}
if (($list_flags & 4) != 0)
{
return $count;
}
}
else
{
$text = substr($text, 0, $opos).substr($text, $cpos, $len - $cpos);
}
}
else
{
$pos = $opos + 1;
}
}
file_put_contents($file, $text);
return $count;
}
function purge_dir($dir, $what_open, $what_close, $file_pattern = false, $only_list = true, $list_flags = 1)
{
$count = 0;
chdir($dir);
$files = scandir('.');
foreach ($files as $file)
{
if($file != '.' && $file != '..' && !is_link($file))
{
if(is_dir($file))
{
$count += purge_dir($file, $what_open, $what_close, $file_pattern, $only_list, $list_flags);
}
else
{
if (strpos($file, $file_pattern) || $file_pattern === false)
{
$count += purge_file($file, $what_open, $what_close, $only_list, $list_flags);
}
}
}
}
chdir('..');
return $count;
}
ini_set('max_execution_time', 0);
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
if (!isset($_SERVER['argv'][1]))
{
die('Directory must be specified in the first argument.');
}
if (!isset($_SERVER['argv'][2]) || !isset($_SERVER['argv'][3]))
{
die('Beginning and end of the pattern must be specified in the second and third argument.');
}
$count = purge_dir(
$_SERVER['argv'][1],
$_SERVER['argv'][2],
$_SERVER['argv'][3],
empty($_SERVER['argv'][4]) ? false : $_SERVER['argv'][4],
empty($_SERVER['argv'][5]) || strtoupper($_SERVER['argv'][5][0]) == 'T' || $_SERVER['argv'][5][0] == '1' ? true : false,
empty($_SERVER['argv'][6]) ? 1 : $_SERVER['argv'][6]
);
echo '# of Infected files: '.$count;
?>Ja, ezt el ne felejtsük. Mivel ugye jogot nem kaptunk a géphez, hogy ftp-n keresztül basztathassuk a könyvtárakat (érted, ott egy ház, van benne egy törött lófasz, javítsd meg, de kulcsot nem adok), azért kellett ez a cucc is, továbbá a permissionokat nekünk kellett áthákolni majd visszaállítani, mintha mi se történt volna. Azt meg így lehet. (Legalább tanultunk valamit.)getfacl -R /var/www/myweb > permissions.acl setfacl --restore=permissions.acl A leading / mindig eltávolítódik és a restore-t mindig onnan kell futtatni, ahonnan a relatív elérés szólt. Ha /-t írtunk az elejére, akkor értelemszerűen akkor is a /-ből kell futtatni a restore-t, ha egyébként a /kecske/anyad volt a cwd. (Innen a tipp egyébként: http://linuxconfig.org/backup-permissions-in-linux) |