Ověření nastaveného hesla

Xjmeno363dcas

Ověření nastaveného hesla
« kdy: 27. 09. 2011, 12:48:12 »
jednoduchá věc, jen mám zrovna mentální pauzu

píšu zkouškový skriptík co automaticky čekne asi 20 úkolů, co musel nastavit student na systému


jeden z úkolů je, aby nastavil správně heslo roota např na RAMPEPURDA

napadá někoho, jak to skriptem (sopuštěným jako root) ověřit?
něco jako:
cat /etc/shadow | grep root | grep "$1$cvsd56sf5VSDzcs2342GSDRF23" | wc -l >> vystup.txt

...problém je v tom, že tohle logicky nejde, protože se mění haš i když je tam stejné heslo



« Poslední změna: 27. 09. 2011, 13:18:35 od Petr Krčmář »


motyq

Re: nahoď....
« Odpověď #1 kdy: 27. 09. 2011, 13:00:37 »
nebylo by jednodussi si misto studenta ktery ma neco nastavit (a ty to pak musis kontrolovat) si udelat skript student.sh, ktery to udela sam a spravne?
par takovych skriptu mame :D treba zdenecek.sh

Re: Ověření nastaveného hesla
« Odpověď #2 kdy: 27. 09. 2011, 13:19:43 »
Určitě existuje jednodušší řešení, ale mě napadá John the Ripper. Přidal bych mu do slovníku to jediné heslo a poštval ho na získaný shadow soubor. Slovníkovým útokem bude hned vědět, jestli to heslo sedí nebo ne.

Xjmeno363dcas

Re: Ověření nastaveného hesla
« Odpověď #3 kdy: 27. 09. 2011, 14:45:14 »
ebylo by jednodussi si misto studenta ktery ma neco nastavit (a ty to pak musis kontrolovat) si udelat skript st....

---------------------------
ne ne ne ne....!!!!
nerozumíme si.

studenti prošli školením a teď budou mít test
a já to přeci nebudu kontrolovat ručně.

nejde o žádný hack nebo podobný ptákoviny. Prostě jenom ověřit, že student dokázal správně nastavit rootovi správné heslo

žádný slovníkový útoky a podobný ptákoviny.
teď zkouším skriptík, který se loginem pokusí přihlásit a po neúspěchu vrátí -1. Problém je jak donutit login pod už běžícím rootem. Asi mu ve skriptu vytvořím nového uživatele a z něj to pujde.

Je to ale podepření klackem, určitě existuje něco jednoduššího. To někoho z vás přeci musí napadnout.... ;)


Re: Ověření nastaveného hesla
« Odpověď #4 kdy: 27. 09. 2011, 18:45:25 »
Já jsem to samozřejmě pochopil, student dostane úkoly a stanovený čas. Pak se spustí skript, ten to za něj zkontroluje a přidělí mu body.

Ten John by měl být jednoduché řešení. Použije se sice slovníkový útok, ale ve slovníku bude jen to jedno heslo. A John buď vypíše, že našel heslo RAMPEPURDA nebo naopak, že slovníkový útok nepřinesl úspěch.


Xjmeno363dcas

Re: Ověření nastaveného hesla
« Odpověď #5 kdy: 27. 09. 2011, 19:00:42 »
aha, teď chápu já. Dík. Ale to se mi zdá takový divný - nedeterministický. Je to jako vloupávat se do otevřenýho baráku oknem.

Do rána snad něco vymyslím.
něco ve smyslu:
heslo=rampepurda; su FRANTA << EOF; $heslo EOF; echo povedlose > flag.txt; logout; ls -laF flag.txt | wc -l

ještě to doladit
...ráno mi to bude myslet víc...

Nassir

Re: Ověření nastaveného hesla
« Odpověď #6 kdy: 27. 09. 2011, 23:02:43 »
Celkom ma tento problem zaujal, tak som sa na to pozrel...
Ocakaval som, ze dokazem vyvolat su, login, bash, alebo ssh s parametrom "heslo". No nenasiel som, takze zostava tam nejak prepasovat to heslo z prikazovej riadky. Samozrejme ze
Kód: [Vybrat]
echo heslo | ssh root@localhostfungovat nebude, ale nasiel som toto: http://www.unix.com/shell-programming-scripting/28194-using-expect-script-shell-script.html
Tento program umozni automatizaciu, napriklad aj zadavanie hesla a teda moze zadat heslo ku skusobnemu scriptu. Neskusal som, ale popis na stranke je jasny.
Najjednoduchsie je prihlasit sa cez ssh a vykonat prikaz:
Kód: [Vybrat]
ssh root@localhost "echo funguje > /tmp/heslo"Ak sa subor objavi, tak heslo bolo spravne. Alebo vykonat "su - obycajnyuser" a nasledne z neho sa pokusit o "sudo touch heslo".
Zacinam mat pocit, ze s bezpecnostou v linuxe je to celkom dobre, kedze mi nikde nedovoli zadat heslo k dolezitym aplikaciam z prikazovej riadky scriptom. A john the ripper sa aj mne zda ako jednoducha moznost.
Ak sa tieto moznosti zdaju prilis jednoduche, tak navrhujem napisat si vlastny program s vyuzitim PAM kniznice a priamo z kodu podhodit heslo. Ale to len ak sa citite ako Rambo a radi strielate na vrabce rotacnym kanonom.

Qazasd

Re: Ověření nastaveného hesla
« Odpověď #7 kdy: 28. 09. 2011, 01:25:48 »
Jednoduchy programek podle man crypt 3, ktery prijma 2 parametry, <plain text heslo> a <heslo v zahashovane forme>. Vraci jestli se shoduji.

zkompilovat lze pomoci: gcc -lcrypt -o crypt crypt.c

crypt.c:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <crypt.h>

int main(int argc, char **argv)
{
   char *result;
   int ok;

   if(argc != 3){
      printf("Usage: %s <plain> <encrypted>\n", argv[0]);
      return -1;
   }

   result = crypt(argv[1], argv[2]);
   ok = strcmp (result, argv[2]) == 0;
   puts(ok ? "OK" : "ERROR");
   return ok ? 0 : 1;
}


porovnani vuci /etc/shadow je pak jiz trivialni

# ./crypt HESLO `grep ^root: /etc/shadow | cut -d':' -f2`
OK


Mozna to jde jednoduseji, ale opravdu se jedna o dosti netradicni zalezitost.

Qazasd

Re: Ověření nastaveného hesla
« Odpověď #8 kdy: 28. 09. 2011, 01:49:45 »
Mimochodem uvedeny zdojovy kod je mirne upraveny priklad z http://www.gnu.org/s/hello/manual/libc/crypt.html tudiz by mel byt asi siren pod GNU/GPL licenci ... doufam, ze ji sem nemusim vypisovat ::)