Tư tưởng và cách thức tư duy khi muốn tấn công một Website - Server



Tình hình là có khá nhiều bạn inbox pm mình hỏi cách check site.Mà mình cũng không có nhiều thời gian để chỉ từng bạn. Nên mình viết cái đường đi. Tư duy check site để các bạn đọc. Từ đó có một cái định hướng. Tự mình nghiên cứu. Thực hiện.

Điều đầu tiên mình muốn nói đó là muốn tấn công 1 site. Điều đầu tiên bạn cần có đấy là sự kiên nhẫn. Cóp nhặt từng tí một. Không thể nôn nóng mà bỏ qua nhiều thông tin. Dẫn đến giảm hiệu quả. Không phải website nào tấn công 1 phát cũng là được ngay. Chính vì thế nên phải tích từng đi thông tin một.

Nếu để kiếm một site để check chơi thì tốt nhất là các bạn nên dùng các dork tìm các site có lỗi sẵn. Ví dụ như các dork sqli . Các dork của các phiên bản joomla ,vbulletin có lỗi. Như vậy sẽ hiệu quả hơn là tìm 1 site bất kì rồi xem thử nó có lỗi không. (Ngoài ra còn có một cách nhanh hơn nữa đó là dùng tool scan dork. Nó sẽ tìm cho bạn một khối site bị lỗi có thể check được từ một list dork có sẵn. Cái này hiệu quả hơn cho dân UG lúc tìm shop lỗi.)

Bài viết dành cho những ai đã có một ít kinh nghiệm về các Khái niệm Hacking


Còn nếu bạn muốn tấn công một website xác định. Thì việc này khó hơn. Giả sử victim của bạn có domain là target.com 

Để tấn công victim một cách hiệu quả. (Mình nói ở đây là cả đối với host share và private. Site lớn có bảo mật tốt, lẫn site nhỏ, forum) .

Bước 1: Lấy thông tin ban đầu.

Lấy thông tin của victim .Bằng các whois nó.Tìm hiểu càng nhiều thông tin về victim càng tốt. Và google, bing , yandex .... đều là các công cụ hữu ích. Mình khuyên nên thử với nhiều công cụ tìm kiếm. Vì bản thân thuật toán tìm kiếm của các công cụ này khác nhau nên dẫn đến cho nhiều kết quả với hiệu quả khác nhau.

Ví dụ như nhập vào công cụ search như sau

ip:123.101.11.122 id=

Nó sẽ cho ta một số thông tin thú vị. Bạn hãy cố gắng thu thập thông tin ban đầu càng nhiều càng tốt. Chủ sở hữu domain.Admin của website. Support. Kể cả số điện thoại, facebook, gmail, yahoo, địa chỉ mail của công ty. 1 Attacker giỏi là một attacker có khả năng tận dụng mọi sơ hở.Mọi điểm yếu có thể tấn công.

Bước 2 : Phân tích khả năng tấn công.

Đầu tiên là nên scan victim chính. Scan victim chính là công việc chủ đạo. Đối với site nằm trong server private của các công ty lớn. Thì đây là bước đóng vai trò quyết định bạn có thể attack được nó hay không. 

Công cụ scan khá nhiều. Mình giới thiệu bạn 1 số bộ như acunetix Vulnerablility Scanner. OpenVas (của backtrack,kali ), w3af (của backtrack), nessus (của backtrack), wpscan (scan wordpress trong backtrack), joomlascan (scan bug joomla trong backtrack, uniscan trong backtrack) ... ngồi mà kể hết các bộ công cụ chắc đến sáng mai.

Công cụ thì nhiều nhưng các bạn nên chọn lựa. Đối với victim nào nên dùng bộ nào. Và nên dùng kết hợp. Vì như mình đã nói. Với mỗi tool khác nhau nó dùng cơ chế, thuật toán scan khác nhau. Nên hiệu quả nó cũng khác nhau. Từ kết quả scan được. Nó cho ta định hình phải tấn công như thế nào.

Scan server.Scan lấy thông tin về server.Ví dụ như xem server dùng hệ điều hành gì.Sử dụng Apache ,SII phiên bản bao nhiêu. Được viết trên ASP hay PHP .Port nào mở.(Để scan port thì có thể dùng nmap.Nó là công cụ rất hiệu quả).

Mọi thông tin về phiên bản, port bạn hãy google ngay. Hoặc vào exploit-db.com xem nó có thể bị attack thông qua nó hay không. Còn không bạn có thể lưu lại thông tin. Rồi sau đó kiểm tra 1 lần xem sao.Đây là các bước rất cần thiết đối với việc tấn công 1 website lớn.

Đối với Server share host. Phân tích khả năng tấn công. Đây cũng là một bước rất quan trọng. Nó rút ngắn thời gian tấn công của bạn. Nhưng mang lại hiệu quả cao.

Mình thấy đa số (Và trước đây mình cũng vậy ). Đó là để tấn công 1 website ko bị lỗi , Không có lỗ hổng. Mình thường reserve ip của server chứa victim. Rồi mở từng site check xem có sqli hay không.

Đồng ý là sqli rất nhiều. Và rất dễ khai thác. Nhưng không phải lúc nào mình cũng có thể may mắn. Check 1 cái là ra link bị lỗi ngay. Nếu scan toàn bộ site thì đến bao giờ mới xong. Có một cách rút ngắn quá trình này đó là xác định loại site cần tấn công.

Mình ví dụ. Bạn có kinh nghiệm về check wordpress. Bạn muốn tìm các site trong server sử dùng mã nguồn này để tấn công. Sau đó local sang victim chính.Hãy dùng google với dork là

ip:112.78.2.247 "wordpress"

Như đây mình nhận được một victim trong server này sử dụng wordpresss http://www.saigoncanho.com.vn/

Tương tự cho các mã nguồn khác cũng vậy.

Bước 3: Tấn công.

Đây là bước nhiều nhất, Nhưng mình nói ít nhất, vì nó có quá nhiều kiểu tấn công. Biết nói thế nào cho hết được.

Chỉ đúc kết một số kinh nghiệm. Ví dụ như đối với forum vbb chẳng hạn. Nhiều phiên bản thực sự không có bug. Nhưng không phải vì thế mà ta bỏ qua. Hãy xem các web application của nó. Ví dụ như các mod. Đối với joomla và các mã nguồn khác cũng vậy. Hãy xem cách extension đi theo. Chúng rất hay bị lỗi. Bởi vì đây đa số là các ứng dụng tích hợp được viết bởi các web developer việt nam. Chúng rất kém trong việc bảo mật.

Tận dụng tối đa kết quả mà các bạn scan ở trên.Ví dụ như bạn scan được server dùng apache 2.1 chẳng hạn. Hãy xem nó là bản update chưa. Nếu chưa có lỗi để khai thác không. Tấn công vào nó. Xem thông tin từ các lỗi public trên google mà tấn công.Hãy cố gắng tấn công 1 cách từ từ.

Xem trong cấu trúc site khi scan được. Chỗ nào là khai thác được.Ví dụ như chúng để lại database back up trên site chẳng hạn.Tải về và phân tích ngay.

Nhiều bộ công cụ scan nó scan đến từng lỗi nhỏ. Như tìm vị trí có thể up ảnh, up file bẳng hạn.Hãy cố bypass up shell thử xem.

Ở mục này có quá nhiều cái để nói. Và thực chất đa số mọi tut hack thường nói về phần này. Nên mình để phần này cho các bạn. Hãy cố gắng tích hợp càng nhiều kinh nghiệm phần này .Càng nhiều càng tốt. Các phần khác nó đi theo 1 qui luật nhất định. Có thể đối với victim nào bạn cũng làm như thế. Nhưng đối với phần này. Nó phụ thuộc vào nhiều thứ. Phụ thuộc vào kết quả scan được. Phụ thuộc vào những đối tượng khác nhau. Nên nó rất đa dạng.

Kết quả ở phần này.Là bạn có thể có được tài khoản admin. Up được shell.

Bước 4: Nếu tấn công được trực tiếp target rồi thì không nói làm gì.Nếu tấn công đc một site nằm cùng server. Thì bước tiếp theo là local. Về vấn đề local này cũng khá rộng. Mình chỉ nói qua một phần trong đó.

Trong local thì symlink là một kiểu local phổ biến nhất, Được dùng nhiều nhất. Nó như là một shortcut bên window. Góp phần làm nhanh quá trình gọi chạy một file. Nếu như gọi trực tiếp hardlink thì quá trình họat động của server sẽ chậm hẳng.

Trong phương pháp local. Mục đích chính của chúng ta là đọc / lấy các file config (hoặc 1 file config của target cần tấn công). Việc thực hiện đầu tiên là chúng ta thường đọc file /etc/passwd để xác định tất cả các user nằm trong server (Và không phải server nào cũng cho ta thực hiện được. Phải bypass).

Để đọc file config ta còn phải nắm các mã nguồn.Với mỗi mã nguồn khác nhau thì file config nó nằm ở một vị trí khác nhau.

Mình đưa ra một số file config đối với một số mã nguồn tương ứng.

vBulletin : /includes/config.php
IPB : /conf_global.php
MyBB: /inc/config.php
Phpbb: /config.php
Php Nuke : /config.php
Php-Fusion : config.php
SMF : /Settings.php
Joomla : configuration.php
WordPress : /wp-config.php
Drupal: /sites/default/settings.php
Oscommerce: /includes/configure.php

Cập nhật thêm đầy đủ: 

Vbulletin: public_html/includes/config.php
PHPBB: public_html/config.php
Joomla: public_html/configuration.php
WordPress: public_html/wp-config.php
ibp: public_html/conf_global.php
php-fusion: public_html/config.php
Smf: public_html/Settings.php
phpnuke: public_html/html/config.php
Xoops: public_html/mainfile.php
ZenCart: public_html/includes/configure.php
setidio: public_html/datas/config.php
Discuz: public_html/config/config_ucenter.php
Bo-Blog: public_html/data/config.php
Nukeviet: public_html/config.php
Drupal: public_html/sites/default/settings.php
Textpattern: public_html/textpattern/config.php
Serendipity: public_html/serendipity_config_local.inc.php
Pligg CMS: public_html/libs/dbconnect.php
Pivotx: public_html/pivotx/includes/minify/config.php


Nguồn: http://quylevhb.blogspot.com/2015/03/path-file-config-mot-so-code.html#ixzz439Dezjm1



Từ đây ta hình dung được đường dẫn chính xác dẫn đến file config của victim.Từ đó có thể symlink được chính xác file cần đọc. (Nếu như victim đổi vị trí của file config. Thì ta phải ngồi symlink mò. Symlink từ index nó ,đến những file khác, xem nó include những file nào. Từ file này dò đến file kia. Đối với một attacker kinh nghiệm. Thì việc bảo mật bằng cách giấu file config của victim đôi khi không hiệu quả.

Cấu trúc lệnh symlink - để symlink file 

/home/usertarget/public_html/includes/config.php target.txt

lệnh này symlink file config về file target.txt nằm ở thư mục ta đang symlink. Ở điều kiện tốt nhất ta có thể đọc đc file target.txt này trên host ta đặt shell.

Nhưng không phải khi nào ta cũng có điều kiện tốt như vậy. Chủ của website có thể chmod không cho ta đọc file config (100,101,400... ) chẳng han. Tùy server. Hoặc chủ website đặt tại thư mục chứa file config đấy 1 file .htaccess có nội dung như sau.


order allow, deny
deny from all

Nếu chủ site đặc như thế thì khi symlink ta sẽ nhận được thông báo là 403 Forbidden Error.
Ở bài này mình chỉ nói đến tư tưởng tấn công chứ không nói chi tiết về phương pháp tấn công.Nên mình chỉ nêu 1 vài ví dụ.

Nếu như ta không đọc được thì sao.Ta phải suy nghĩ vì sao không đọc được. Tư duy đặt trường hợp ta vào vị trí admin của victim. Nếu là ta, ta sẽ bảo mật như thế nào. Sẽ làm gì. Từ đó ta có những biện pháp khác nhau.

Giả sử như ta tìm giải pháp để bypass 403 forbidden error do chủ website đặt file .htaccess chẳng hạn nhé.

Trên host ta đặt shell. Tạo một thư mực có tên là MYSSYSTEM chẳng hạn. Đường dẫn đầy đủ của nó ví dụ như sau 

/home/attacker/public_html/MYSSYSTEM/. 

Chmod lại thư mục này là 777 (lúc đầu chưa cần. Nếu không được hẵn thử). Sau đó tạo một file .htaccess với nội dung như sau

HeaderName MYS.txt

Đặt file .htaccess này vào thư mục /home/attacker/public_html/ - Nếu ta symlink file config vào file MYS.txt với cấu trúc lệnh 

ln -s /home/victim/public_html/includes/config.php MYS.txt

Thì sau khi symlink xong. Ta vào thư mục MYSSYSTEM và đọc file MYS.txt vừa symlink về. Nó sẽ bypass được.

Đây chỉ là 1 ví dụ trong nhiều cách bypass. Nhiều bạn bảo local phải có tư duy. Nhưng mình nghĩ muốn local tốt thì phải biết nhiều cách bypass trong trường hợp không đọc được file.

Trong các cách cũng được khá nhiều người dùng. Nhưng dùng symlink all config. Sym root bằng cách tạo sym root ở một server linux nào đó .Sau đó tar lại. Up lên server cần local. 

Mình đề cập thêm việc sym root ngay trực tiếp trên server. Đôi khi nó khá hiệu quả trong việc bypass security.

Như khi nãy. Tạo một folder MYS để tiện xử lí. Link full của nó 

/home/attacker/public_html/MYS

Sau đó ta thực hiện symlink trên shell như sau 

ln -s /root

Sau đó ta chọn một victim có domain là target.com chẳng hạn. Tiếp tục 

ls -la /etc/valiases/target.com"

Sau đó quay lại folder ta vừa tạo MYS. Đặt vào đấy 1 file htaccess có nội dung như sau

Options Indexes FollowSymLinks
DirectoryIndex index.htm
AddType txt .php
AddHandler txt .php
Bây giờ ta vào xem ta symlink được những gì. Nếu như chỗ nào nó báo permisssion access. Thì cũng đừng lo lắng bận tâm. Hãy vào sâu hơn. Giả sử ta cần xem target.com có user lấy được ở trên là target đi.

Thì ta xem nó với link sau 

attacker.com/MYS/root/home/target/public_html/ ......
Đôi khi xem không được thì có thể view source lên nhé.

Thôi dừng ở việc local lại.Không viết đến khi nào mới xong. 

Bước 5: Rooting.

Nếu là server linux thì nên thử Get root nó. Đôi khi thử rooting server lại là con đường ngắn hơn cả local sang. Không phải khi nào cũng local được. Nó bảo mật bá đạo quá thì cũng chịu chết thôi. Hãy thử rooting nếu được.

Tạo một backconnect hoặc có thể bind một port nào đó. Một back connect ở đây là server có thể tự connect về mình sau khi mình mở một port đặng biệt nào đó và lắng nghe nó bằng netcat (nc -l -v -p 4444) chẳng hạn. Có khá nhiều shell hỗ trợ back-connect..

Muốn rooting thì phải kiểm tra xem kernel đó có rooting được hay không. Trên shell bạn có thể kiểm tra bằng lện "uname -a". Lấy phiên bản của kernel nhân đượ .Tìm trên google xem nó thể exploit đc hay không.
(Có thể vào exploit-db.com/local/ ) để tìm.

Bước 6: Attack Mạng Lan.


Nếu bạn đã chiếm đc 1 server máy chủ rồi. Thì hãy cố gắng thử tấn công các máy cùng mạng Lan với nó. Đây là cơ hội để thể hiện khả năng attack trong mạng Lan của bạn.

Post a Comment

Previous Post Next Post