English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés
Σ: 1 post

TCH  (statz) Főfasz
#1, Főfasz (10443)
5005 | #21de | ^ | Idézet | Wed, 21 Nov 2012 22:42:28 +01
80.99.*.* Linux x86 Google Chrome Hungary *.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)


English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés

Név: (max 255 byte)

Email: (max 255 byte) Nem kötelező!

Üzenet: (max 65536 kar.) 65536-0=65536




crap_vkn v4.34.0 by TCH
Thx to saxus for the escaped string decoder function (PHP), the realIP function (PHP) & the SQL handle layer (PHP), to thookerov for the int_divide function (PHP), to Jeff Anderson for the getSelText function (JS), to Alex King for the insertAtCursor function (JS), Flood3r for the new CSS styles, Pety for the spamprotection idea and some design and comfort ideas, MaxMind for the IP2Country database, famfamfam for the flags of countries and an unknown PHP programmer for the removeAccents function.



Kecskebaszók ide!