LamP SEC CTF 7 – Tìm Web Shell Sau Khi Upload @ CEH CPENT / PENTEST +
Có một số bài tập CTF hay bài thi thực hành dính bug upload các kiểu hoặc bị lỗi sql injection… nên ta chiếm được quyền vào upload shell lên, có thể là shell msfvenom hay các con có sẳn như php rever shell, bk374 (con này hay có trong bài thi của EC Council từ CEH Master cho đến ECSA / CPENT LPT , sau này có khả năng là WAHS).
Nhưng khi up lên rồi chẳng biết nó nằm ở đâu, thường thì tìm trong folder upload hay assests hoặc đại loại như vậy, nhưng cũng phải mò cho ra mấy cái folder này cũng khoai cho nên cần nắm vững cách bruteforce dir . Vậy, các CEH MASTER , PENTESTER tương lai hay những CPENTer cần luyện và ghi nhớ một trong chiêu thức từ bài thực hành sau đây. Còn các LPTer Thì sao , các bạn này thì xong phim, vì chứng chỉ này đã “về hưu” cùng với thằng ECSA Practice , mà nếu nó chưa về hưu thì thời hạn cũng chi có 1 năm , muốn gia hạn không rõ phải kiếm ECE gì nhưng phải nạp ít nhất 250 $ chi phí duy trì và 80 $ phí thành viên , cho nên phần lớn là để cho nó hết hạn luôn. Còn các CPENTer hay CEH MASTER thì vẫn yên tâm với thời hạn 3 năm, và có thể kéo dài thêm 3 năm dễ dàng mà không cần thi lại, chi phí cũng hợp lý. Đó là các bạn chỉ cần lấy thêm một cái cert mới của EC Council trong vòng 3 năm là đủ, ví dụ học và thi thêm một cert mới là WASH và với cert mới này ta có thể renew môt loạt các chứng chỉ đang có theo cách hiệu quả nhất.
Hiện CEH VIETNAM chưa có thông tin triển khai WAHS vì lý do chưa biết mặt mũi nó thế nào, lab ra sao cùng với chi phí học và chi phí thi, nhưng sẽ biết sớm thôi 🙂
Còn ở đây ta đang nói đến ví dụ về LAMSEC 7, như sau (bài thuổng từ Hacking Articles):

Today we are going to take another CTF challenge known as LAMPSecurity CTF7 and it is another boot2root challenge provided for practice and its security level is for the beginners. So let’s try to break through it. But before please note that you can download it from here https://www.vulnhub.com/entry/lampsecurity-ctf7,86/
Penetrating Methodologies
- Network Scanning (Nmap)
- Login form SQL injection
- Upload php web shell
- Spawn TTY shell (Netcat)
- Mysql Login
- Steal MD5 password
- Crack MD5 hashes (John the ripper)
- SSH login
- Sudo privilege escalation
- Get root access
Walkthrough
We found our target –> 192.168.1.127 (để tìm IP các bạn hãy dùng nap hay netdiscover , fping )
Our next step is to scan our target with NMAP.
nmap -Pn -sV 192.168.1.127 --- cần chú ý chức năng của -Pn à -sV là gì ?

As we can observe there are so many ports are open but here three ports 80, 8080 and 10000 are available for HTTP. When we navigated to the URL http://192.168.1.127 and we were greeted with a Welcome page
— thường thì sẽ tập trung vào các port web như 80, 8080, hay 10000 trong kết quả trên, nhưng không loại trừ các port khác như ssh cũng có khả năng bị bruteforce (nhưng khó) hay smb sử dụng version lỗi, nên đánh giá kỹ từng port khi làm thiệt, còn ctf này thì xem mấy cổng web trước …

On exploring port 8080 we found a login page for the admin account.

As we don’t know the login credential, so I tried SQL injection both text filed for username and password.

Boom!! Here we got admin dashboard access, let’s explore more.
— bài này họ cho bug sql injection dễ chơi để khai thác vào các lỗi sau đó, nhưng có trang login thì các bạn cứ thử …

We can add new reading content for the reader, click on the Add new tab to edit your content for reading.
— một khi vào rồi hãy tìm những điểm nào có thể giúp ta upload một trang hay cái gì đó như shell, vì dụ upload file, image, hay chèn qua plugin, hay add thêm trang, bài gì đó …như ở đây là Add new

Then we have uploaded php web shell present at /usr/share/webshells/php in order to compromise the web application. In the background, we have launched netcat listener 1234 to access the TTY shell of the victim’s VM.

Since I don’t know the directory where our uploaded file is stored, therefore, I run dirb for enumerating web directories.
— trong tình huống này nó cho up thẳng shell php lên luôn vì mức độ khó thấp, có khi nó chặn không cho phải lách qua với proxy chặn bắt chỉnh sữa rồi thả đi như dùng Burp …
dirb http://192.168.1.127 --- do up xong không biết nằm đâu , vì vậy tiến hành quét thư mục để tìm các folder tiềm năng, ở đây các bạn thấy assests , chú ý cái từ điển nếu tìm không ra thì thử medium như bài thi LPT level 3 mình dùng đến medium thì ra nhưng thông thường hãng hay "nhà cái" nó hay cho sẳn từ điển để mình "hack" cho nhanh, vì lý do thời gian làm bài hạn chế

When I navigate for the directory /assets, here I got my uploaded web shell. As we knew, netcat is ready to catch the victim’s shell as soon as we will execute our php file.

Great!! We got the netcat session, now enter below command to obtain proper terminal of the target machine.
— các bạn thấy con shell rồi, chạy nó rồi hứng sẽ có shell (nếu thành công), sau đó là nâng con shell này lên full interact Shell, vụ này các bạn cứ research hoặc xem bài này
ở đây target có sẳn python nên chạy lệnh sau (nên học thuộc lòng), có khi phải dùng cái khác như lệnh bash hay php… tùy tình huống, nhưng nói chung là cú pháp python sau dùng được đa số …
python -c 'import pty; pty.spawn("/bin/bash")'
As we have enumerated above, the MySQL is running, then with the default credential user: root and password: blank we login successfully into the MySQL database.
— tới đoạn này ta không nó nữa vì hơi dở, mình chú ý đoạn upshell và dò còn shell thôi, còn v5 hack database này thì tính sau, ở đây nó dùng account root và mật khẩu trắng vào được luôn, nhưng khi làm bài thi không có vụ này đâu, phải tìm cách khác khi password nó không trống hay dùng password là toor, root, passw0rd (nhưng cứ thử xem sao, biết đâu ăn may như bài này thì dump apssword md5 ra xong rồi mang qua john hay hascat crack thử, mà đã ăn may thì co 1hi các bạn search luôn cái md5 đó trên google nhiều khi nó cũng ra )
— và thông thường mấy bài easy hay medium nó có account các bạn sẽ quay qua port SSH, chui vào (là suer bình thường), chạy kiểm tar sudo -l và xem tài khoản nào có quyền sudo full là múc luôn , hoặc chạy lệnh find để tìm dịch vụ nào chạy với quyền root / admin, có khi phải leo thang qua lỗi kernel như dirtycow, hay qua backup, crontask … ở đây là sudo -l sẽ thấy …
mysql -u root show databases;

show tables; select username,password from users;
Hence from inside user tables, we have found all MD5 hashes of the password.

I saved all hashes into a text file named “hashes” and use john the ripper for cracking the password.
john -w=/usr/share/wordlists/rockyou.txt -form=raw-md5 hashes
Awesome, it works and got decrypted password, now let’s try username as brain and password as madrid for the ssh login.

So when tried brain:madrid for ssh login, we login successfully, then we check sudo right for him. Luckily found brain is the part of sudo member and able to perform root level task. To access root privilege to complete the challenge run following command.
ssh brain@192.168.1.127 sudo -l sudo su
Yuppie!! We finished this challenge.

Author: Deepanshu is a Certified Ethical Hacker and a budding Security researcher.