pld. ingyenpia.sh
#!/bin/bash
touch ~/troja.sh
echo -e "#!/bin/bash" >> ~/troja.sh
echo -e "echo 'most torolhetnem a home-t'" >>~/troja.sh
echo -e "dir" >>~/troja.sh
chmod 755 ~/troja.sh
alias dir="~/troja.sh"
Nem nagy ügy, meg biztos szebben is meg lehet csinálni, nekem most ennyire futotta :), de az elv gondolom látszik. Tehát ha valakit rá lehet venni arra, hogy ezt lefutassa a gépén, akkor utána a dir parancs akár trójaiként is viselkedhet, az emberi gonoszságtól függ, hogy miket romboljon közben. Ez volt az elv, éles verzió előtt lépésenként teszteltem a dolgot, és működött! (* itt lőném le a poént, ha részletezném - ja, a troja.sh-t egyelőre mindig kézzel töröltem teszt előtt)
Persze ez édes kevés, szerettem volna emailben lefertőzni magam, elküldtem magamnak mellékletként. Itt jött az első bukta, hogy az evolution nem volt hajlandó klick-re futtatni - fene a fajtáját :D. Persze lehetne olyan levelet írni, hogy a mellékletet mentsd el, adj neki futási jogot (mert a sima mentésnél ez nem történik meg) és utána indítsd el... hmmm, aki egy ismeretlen melléklettel ezt megcsinálja, az meg is érdemli :)
Kiadtam egy unalias dir -t, majd gyerünk újra... és nem akart működni! Most akkor mi van? Megártott neki, hogy elküldtem mellékletben :) ? Már kezdtem hajat tépni, amikor bevillant, hogy mi van, ha az alias utasítás nem működik bash scripten belül? És bingó! (illetve FIXME!) De akkor miért meg korábban? Hát azért, mert a lépésenként teszt az az volt, hogy először alias dir="valami", ok valami ismeretlen parancs stb. na akkor troja.sh kézzel megír, kipróbál majd alias dir="~/troja.sh" és is működik. Szuper! Na akkor írjunk scriptet, ami mindenz megcsinája magától. Lefut, dir szuperül működik. Csak éppen az végső teszt előtt egy unalias dir kimaradt!
Már majdnem le is álltam a témával teljes kudarcként, amikor bevillant, hogy az ls-re alapból van alias. Rá is találtam a .bashrc-re. Szóval ebben él az alias! Na akkor ide kell berakni: a script utolsó sorát módosíttotam hogy az alias utasítást pakolja bele a .bashrc-be és így már működik a dolog, az ujonnan nyitott terminálablakokban már a módosított dir fut. Persze egy alias egyből lebuktatja!
Szóval ennyi lett volna mostani adagom. Tényleg nem megy az alias scripten belül? (Ami azért nem rossz, mert bármely baromi hosszú scriptben elrejthető a példámhoz hasonló dolog, és így az akkor nem fog lefutni.) Ja, ha a net ezzel a témával van tele, akkor elnézést, nem kerestem előtte semmit csak bevillant az agyamba az alias parancs, egyből összekötöttem a trójai kérdéssel, és ez lett belőle.
Egyébként van valami védelem arra, hogy pld. egy script ne tudjon belenyúlni a user .bashrc-jébe? - jó, mondjuk rootként leveszem róla az írási jogot, de ez nem fog bekavarni máshol?
És elnézést, ha esetleg egyeseknek csak az idejét raboltam azzal, hogy elolvasták. A tévedéseimet (amik még esetleg bent maradtak) nyugodtan lehet korrigálni!
További szép estét!
- nyekhere blogja
- A hozzászóláshoz be kell jelentkezni
- 926 megtekintés
Hozzászólások
A script a saját shelljében fut, az abban létrehozott alias-ok nem befolyásolják a hívó shellt. Kivéve, ha így hívod:
. ~/troja.sh
Amúgy meg egyszerűbb egy ls nevű függvényt definiálni, ami megcsinálja, amit akarsz. (dir-t Linuxon szerintem nem sokan használnak.) Vagy, ha törölni akarsz mindent, akkor már az eredeti scriptből törölni.
Ha egy program le tud futni a nevedben, az attól kezdve bármit csinálhat a nevedben, ezt jelenleg gyakorlatilag nem lehet megakadályozni. Ha utána a saját felhasználódként bejelentkezve su/sudo/...-val root-ként indítasz valamit (konfiguráláshoz), attól kezdve root-ként is bármit csinálhat.
- A hozzászóláshoz be kell jelentkezni
A gonosz dolgot tedd inkabb ~/evil konytarban futathatova
.bashrc modositsd, hogy a PATH ban elore tegye a gonosz konyvtarat.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
Próbáld ki ezt:
http://pastebin.com/f660a8f07
a ~/.trojai/trojai.sh -ban bármit csinálhatsz, lefut, minden parancs végrehajtásakor.
Ha meghívod a su -t vagy a sudo -t a beírt jelszavak a ~/.trojai/jelszok.txt -ban tárolódnak.
A script csak a ~/.trojai könyvtárba és a ~/.bashrc file-ba ír.
- A hozzászóláshoz be kell jelentkezni
Köszi, hát igen, ez már korrektebb, és látom gondoltál benne mindenre :), a végén az alias "átvágás" külön tetszik!
Az ilyesmik ellen akkor pld. úgy lehetne védekezni, hogy minden idegen sript futtatása előtt rákeresünk benne a .bashrc-re és ha van találat, akkor lehet nyálazni, hogy mit is akar ott tulajdonképpen.
- A hozzászóláshoz be kell jelentkezni
ummm... "dir" parancs?
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
Jóóóvannaaa :D
Nem tagadom, hogy ms-dos-on nőttem fel (pontosabban abban már dolgoztam, a felnövéskor még bősz load"$",8-kal foglalkoztam). Egyébként példának szerintem tökéletes, mert ha sikerült volna valami ténylegesen működőt összehozni és esetleg elküldtem volna valakinek, akkor sem lett volna nagy baj, mert lehet, hogy ő sem használja. Bevallom nálam konzolban még sűrűn befigyel, de majd próbálok leszokni :)
- A hozzászóláshoz be kell jelentkezni