Pentester Lab From Sql Injection to Shell
Pentester Lab From Sql Injection to Shell
Fingerprinting

Sử dụng nmap với cú pháp:
1 | sudo nmap -sV 192.168.179.132 -T4 |
Kết quả trả về cho thấy đang có 2 port đang được mở đó là port 22 và 80 như ta đã biết port 22 là SSH còn 80 là Apache httpd thì có nghĩa là nó đang host 1 cái web nào đó.

Tiến hành curl đến xem thử có tồn tại không và để lấy được source code của web được host ở đây nó đưa cho ta thông tin về server và web được code bằng PHP/5.3.3-7+squeeze14.

Truy cập GUI để cho dễ nhìn và tương tác với web app để tiến hành khai thác lỗ hổng nằm trên web app này.

Sử dụng wfuzz để tiến hành fuzzing directory ở đây ta test ra được các endpoint là all.php , cat.php , header.php , index.php , show.php.
Exploit the vulnerability
Sau khi truy cập các endpoint tôi để ý đến endpoint cat.php nhất vì sau khi truy cập cat thì ngay sau đó có dấu hiệu query đến database ở đoạn ?id=1 nên ở đây ta tạm nghi ngờ có thể dính SQL injection.
Ở đây là biến id sẽ được truy vấn đến database để lấy ra thông tin trong database nhằm in ra ngoài cho user xem được thông tin hay hình ảnh bên trong nên ta tạm suy ra được câu truy vấn sẽ là:
1 |
|
Ở đây ví dụ mình truy cập đến với endpoint là /articles.php?id=1 thì ngay lập tức câu truy vấn trở thành SELECT * FROM articles WHERE id = 1 và thông tin sẽ được trả về cho user.

Thử khai thác Sql Injection với câu lệnh cơ bản để lấy thông tin database '1' UNION SELECT 1, @@version,3,4 # sau đó tiến hành url encode để nối nó lại với nhau ở đây với '' nó sẽ giúp ta đóng chuỗi làm cho cú pháp hết bị lỗi sau đó câu query UNION SELECT sẽ được thực thi và @@version sẽ giúp ta trả về thông ti version của database trong trường hợp cột này tồn tại.

Tiến hành leak table name của database ở đây có khá nhiều bảng được tạo ở trong database.

Thành công lấy được thông tin các cột trong database.

Sử dụng Concat để combine 2 trường giá trị của login và password để lấy thông tin đăng nhập của admin.
1 | '1'+UNION+SELECT+1,CONCAT(login,'%3a',password),3,4+FROM+users+%23 |
Ở đây nó trả về cho ta dòng admin:8efe310f9ab3efeae8d410a8e0166eb2 nhưng ở đây ta có thể thấy rằng password này là hash nên bây giờ ta có thể sử dụng john the reaper để tiến hành giải mã password đó ra hoặc đơn giản mình sử dụng CrackStation là tool có sẵn vì ở đây cái hash này nhìn qua là biết nó chỉ là MD5 sẽ dễ để decrypt.

Thành công lấy được password là P4ssw0rd.

Thành công đăng nhập được vào admin panel bước tiếp theo là ta sẽ upload lên một file shell.php để có thể thực thi được RCE (remote code execution) để điều khiển server và đánh cắp thông tin bên trong.

Sau khi upload lên nó trả lời là NO PHP!!! vậy có thể thấy extension .php đã bị filter lại và ta sẽ không thể upload file php được nữa bây giờ ta sẽ tìm cách để bypass nó.

Ta sẽ thử thay thế extension bằng .php3 xem thử nó sẽ ra kết quả như thế nào.

Thành công upload file shell.php3 lên server.

Thành công thực hiện thực thi Remote Code execution (RCE) server ở đây tôi dùng câu lệnh ls -la http://192.168.179.132/admin/uploads/shell.php3?cmd=ls%20-la.