Newsgroup: it.comp.sicurezza.varie
Titolo: Leo!

Ebbene sì, mi sono beccato un DoS da me stesso.
L'altro giorno mi sono ritrovato il disco pieno, senza alcun apparente
motivo. La dir /tmp era piena.
Ripulisco /tmp e riavvio.
Dopo un po', ricomincia a riempirsi.
Faccio un top e vedo che il processo alshell stava consumando il 50% di
cpu...
Poi ho scoperto il motivo:
*****************************************************************
[root: /home/buttha]# rm /tmp/alshell.log 
rm: rimuovere `/tmp/alshell.log'? y
[root: /home/buttha]# telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Slackware Linux 1.2.24 (darkstar) (ttyp1)
darkstar login: ^]
telnet> quit 
Connection closed.
[root: /home/buttha]# ls -lh /tmp/alshell.log 
-rw-r--r--    1 nobody   nobody       6.0M feb  2 12:28 /tmp/alshell.log
[root: /home/buttha]# ls -lh /tmp/alshell.log 
-rw-r--r--    1 nobody   nobody       7.3M feb  2 12:28 /tmp/alshell.log
[root: /home/buttha]# ls -lh /tmp/alshell.log 
-rw-r--r--    1 nobody   nobody       8.5M feb  2 12:28 /tmp/alshell.log
[root: /home/buttha]# ls -lh /tmp/alshell.log 
-rw-r--r--    1 nobody   nobody       9.9M feb  2 12:28 /tmp/alshell.log
[root: /home/buttha]# ls -lh /tmp/alshell.log 
-rw-r--r--    1 nobody   nobody        11M feb  2 12:28 /tmp/alshell.log
[root: /home/buttha]# 
**************************************************************
[Mi starebbe bene un'auto punizione corporale per non aver utilizzato 
quota (ho perso le impostazioni di gnome e i contatti icq)]
Questo e' il pezzo di codice incriminato:
*****************************************************************
        log = fopen("/tmp/alshell.log", "a+t");
        if (log) fprintf(log, "Connect.\n");
        printf(ritual[0].challenge);
        for (;;)
        {
                printf(ritual[0].response);
                fgets(buffer, 128, stdin);
                buffer[127]=0;
                strtok(buffer," \n\r\t");
                if (strstr("root/buttha/Buttha/pippo/", buffer))
                {
                        printf(ritual[1].response);
                        if (log) fprintf(log, "Logged in as %s\n", buffer);
                        break;
                }
                printf(ritual[1].challenge);
                if (log) fprintf(log, "Login failed as %s\n", buffer);
        }      
*********************************************************
Visto che il C non lo mastico affatto, esiste un rimedio veloce veloce?
hola
Buttha (sì, lo so, avrei potuto mandarlo in mail)
-- 
* Per rispondere in email rimuovere la prima i dall'indirizzo
* Non basta poter dare del tu a chiunque, dobbiamo rivendicare la
  possibilita' di dare dell'io a qualcun altro (L.B.)

 Faccio un top e vedo che il processo alshell stava consumando il 50% di
ROFL !! Logrotate is your friend :-)
-- 
|Pierluigi De Rosa (
tho...@durin.khazad-dum.net
)|
|     E' nato il Cosenza Linux User Group	|
|   mail -s help 
cslug-...@lists.linux.it
	|
|      IRC: #cslug - 
irc.openprojects.net
	|

 motivo. La dir /tmp era piena.
provo a dire la mia, anche perche' e' una curiosita' che ho
anche io:
montare tmp su una partizione diversa da / puo' risolvere questo
problema (quindi anche /var/log per su partizione a se stante
per esempio?)
eppoi in breve cosa c'e' in /tmp/alshell.log? (dovrebbe un file di
testo)
Logged...
Login failed...
Connect...
di tutto un po?
-- 
nebbia

 anche io:
Che complicazione...
00 08 * * 7 >/tmp/alshell.log


 ROFL !! Logrotate is your friend :-)
hehehe no, no, il problema e' un altro:
il log di alshell viene riempito di
Login failed as [caratteri strani]
Praticamente alshell va in loop.
hola
Buttha
-- 
* Per rispondere in email rimuovere la prima i dall'indirizzo
*** Hi! I'm a .signature Virus ! Copy me
    to your signature to help me spreading! ***

                buffer[127]=0;
Gah.
-fgets(buffer, 128, stdin);
+*buffer=0;
+fgets(buffer, 128, stdin);
+if (*buffer==0)
+{
+	sleep(1);
+	continue;
+}
O forse, ora non ricordo:
+if (*buffer==0)
+	return EXIT_SUCCESS;
E' una ficiur di fgets() cui ogni tanto dimentico di mettere
la museruola.
Leonardo
-- 
And where the black and corkscrew towers climb
Lost and athirst the ragged pack abides,
Old as the aeons, trapped in tombs of time,
Sailing the tortuous temporal tides...

 Login failed as [caratteri strani]
Uh, ho dato un'occhiata veloce al codice che hai postato: sei sicuro che
strstr() usato in quel modo, con tutti i nomi separati da '/' funzioni
correttamente? Io proverei a spezzarlo in una if connessa con degli OR.
-- 
Pierluigi De Rosa (
tho...@durin.khazad-dum.net
).
<<      LINUX: the choice of a GNU generation     >>
<<   For my real address... ask the Balrog.       >>
* Sostenete la Lega per la Soppressione dei Troll *

 Login failed as [caratteri strani]
allora una soluzione veloce e' commentare la riga:
/*if (log) fprintf(log, "Login failed as %s\n", buffer);*/
Login failed non lo scrive +.
-- 
nebbia

 testo)
C'e' registrata l'intera sessione fatta con la fake shell.
In realta', visto che il tutto e' bufferizzato, il log viene scritto a
fine collegamento, ma questa condizione non so mica quando si verifica:
while(!feof(stdin))
{
[input comandi e output risposte]
}
printf( "Logout. Goodbye, Mr. Lamer.\n"
 "...now I'll expect some dumbfuck messing - nestea, jolt, matrioska, 
  SYN floods etc. ...\n
  ...to have a good excuse to get your account pulled.\n");
if (log) fprintf(log, "Logout.\n---------\n");
if (log) fclose(log);
return 0;
}
beh, ma quando si verifica feof(stdin)? Boh.
Buttha
-- 
* Per rispondere in email rimuovere la prima i dall'indirizzo
* Premete qui con forza ----> X

 - rimuovi XXX  x  rispondere  ICQ	#8814554
 
Sanremo ['97]:
	Presentata la nuova edizione del Festival.  Valletta:  Valeria	Marini,
che ha dichiarato: "Gianfranco Ferre' mi ha disegnato 20 abiti.  Ne cambiero'
almeno tre a sera".  Farebbe prima a lavarsi.
		--   Panfilo   Maria   Lippi,	"TABLOID   TABLOID"@"Mai   Dire   Gol"

 quando arriva un crtl+D?
:) eh gia'.
un Buttha ^C
-- 
* Per rispondere in email rimuovere la prima i dall'indirizzo
* Ho un vestito per ogni giorno dell'anno. Eccolo !