Beyond


This is the beyond page that an additional post enumeration and assessment are conducted as the root user after compromising the target system.

Crontab


root@lantern:~# crontab -l | grep -v '^#'
*/10 * * * * /root/cleanup.sh
*/10 * * * * /usr/bin/rm /root/automation*; /usr/bin/rm /root/.automation*; /usr/bin/systemctl restart bot.service

/root/cleanup.sh


root@lantern:~# cat /root/cleanup.sh
#!/bin/bash
 
# Directory to clean up in /opt/components
DIR_COMPONENTS="/opt/components"
 
# Files to exclude in /opt/components
EXCLUDE_FILES_COMPONENTS=("FileTree.dll" "FileUpload.dll" "HealthCheck.dll" "Logs.dll" "Resumes.dll")
 
# Convert exclude files array to a pattern for grep
EXCLUDE_PATTERN_COMPONENTS=$(/usr/bin/printf "|%s" "${EXCLUDE_FILES_COMPONENTS[@]}")
EXCLUDE_PATTERN_COMPONENTS=${EXCLUDE_PATTERN_COMPONENTS:1}  # Remove leading '|'
 
# Find and delete files not in the exclude list in /opt/components
/usr/bin/find "$DIR_COMPONENTS" -type f | /usr/bin/grep -Ev "$EXCLUDE_PATTERN_COMPONENTS" | while read -r file; do
    /bin/rm -f "$file"
done
 
# Directory to clean up in /var/www/sites/lantern.htb/static/images
DIR_IMAGES="/var/www/sites/lantern.htb/static/images"
 
# Files to exclude in /var/www/sites/lantern.htb/static/images
EXCLUDE_FILES_IMAGES=("about-1.jpg" "about-2.jpg" "about.jpg" "avatar-1.jpg" "avatar-2.jpg" "avatar.jpg" "bg-bot.jpg" "bg-top.jpg" "blog-1.jpg" "blog-2.jpg" "blog-3.jpg")
 
# Convert exclude files array to a pattern for grep
EXCLUDE_PATTERN_IMAGES=$(/usr/bin/printf "|%s" "${EXCLUDE_FILES_IMAGES[@]}")
EXCLUDE_PATTERN_IMAGES=${EXCLUDE_PATTERN_IMAGES:1}  # Remove leading '|'
 
# Find and delete files not in the exclude list in /var/www/sites/lantern.htb/static/images
/usr/bin/find "$DIR_IMAGES" -type f | /usr/bin/grep -Ev "$EXCLUDE_PATTERN_IMAGES" | while read -r file; do
    /bin/rm -f "$file"
done
 
/usr/sbin/service blazor-server restart

Services


root@lantern:~# systemctl list-units | grep -i running
root@lantern:~# systemctl list-units | grep -i running | awk '{print $1}'
proc-sys-fs-binfmt_misc.automount
init.scope
session-190.scope
auditd.service
blazor-server.service
bot.service
cron.service
dbus.service
flask.service
getty@tty1.service
internalantern.service
irqbalance.service
ModemManager.service
multipathd.service
networkd-dispatcher.service
open-vm-tools.service
polkit.service
rsyslog.service
skipper.service
snapd.service
ssh.service
systemd-journald.service
systemd-logind.service
systemd-networkd.service
systemd-resolved.service
systemd-timesyncd.service
systemd-udevd.service
udisks2.service
upower.service
user@1000.service
vgauth.service
dbus.socket
multipathd.socket
snapd.socket
syslog.socket
systemd-journald-audit.socket
systemd-journald-dev-log.socket
systemd-journald.socket
systemd-networkd.socket
systemd-udevd-control.socket
systemd-udevd-kernel.socket

blazor-server.service


root@lantern:~# systemctl status blazor-server.service
 blazor-server.service - Run blazor server as tomas
     Loaded: loaded (/etc/systemd/system/blazor-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-08-21 12:30:01 UTC; 9min ago
   Main PID: 10946 (dotnet)
      Tasks: 34 (limit: 4513)
     Memory: 148.2M
        CPU: 5.258s
     CGroup: /system.slice/blazor-server.service
             ├─10946 dotnet run
             └─10966 /home/tomas/LanternAdmin/bin/Debug/net6.0/LanternAdmin
 
Aug 21 12:30:01 lantern dotnet[10946]: Building...
Aug 21 12:30:04 lantern dotnet[10966]: info: Microsoft.Hosting.Lifetime[14]
Aug 21 12:30:04 lantern dotnet[10966]:       Now listening on: http://[::]:3000
Aug 21 12:30:04 lantern dotnet[10966]: info: Microsoft.Hosting.Lifetime[0]
Aug 21 12:30:04 lantern dotnet[10966]:       Application started. Press Ctrl+C to shut down.
Aug 21 12:30:04 lantern dotnet[10966]: info: Microsoft.Hosting.Lifetime[0]
Aug 21 12:30:04 lantern dotnet[10966]:       Hosting environment: Development
Aug 21 12:30:04 lantern dotnet[10966]: info: Microsoft.Hosting.Lifetime[0]
Aug 21 12:30:04 lantern dotnet[10966]:       Content root path: /home/tomas/LanternAdmin/

bot.service


root@lantern:~# systemctl status bot.service
 bot.service - Run bot as root
     Loaded: loaded (/etc/systemd/system/bot.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-08-21 12:30:01 UTC; 9min ago
   Main PID: 10926 (bot.exp)
      Tasks: 3 (limit: 4513)
     Memory: 2.1M
        CPU: 220ms
     CGroup: /system.slice/bot.service
             ├─10926 /usr/bin/expect -f /root/bot.exp
             └─10930 nano /root/automation.sh

/root/bot.exp


root@lantern:~# cat /root/bot.exp
#!/usr/bin/expect -f
 
spawn nano /root/automation.sh
 
set text "echo Q3Eddtdw3pMB | sudo ./backup.sh"
 
while {1} {
    foreach char [split $text ""] {
        send "$char"
        sleep 1
    }
 
    send "\r"
 
    sleep 0.5
 
    for {set i 0} {$i < [string length $text]} {incr i} {
        send "\b \b"  ;
    }
 
    send "\r"
}

/root/automation.sh


root@lantern:~# ll | grep -i automation
-rw-------  1 root root   49 Aug 21 12:40 automation.sh.save
-rw-r--r--  1 root root 1024 Aug 21 12:40 .automation.sh.swp
automation.sh.save

root@lantern:~# cat automation.sh.save
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
echo Q3Eddtdw3pM
.automation.sh.swp

root@lantern:~# cat .automation.sh.swp
b0nano 6.2<+rootlantern/root/automation.sh

flask.service


root@lantern:~# systemctl status flask.service 
 flask.service - Flask application as www-data
     Loaded: loaded (/etc/systemd/system/flask.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2024-08-20 22:08:39 UTC; 14h ago
   Main PID: 755 (python3)
      Tasks: 1 (limit: 4513)
     Memory: 23.7M
        CPU: 10.823s
     CGroup: /system.slice/flask.service
             └─755 python3 /var/www/sites/lantern.htb/app.py
 
Notice: journal has been rotated since unit was started, output may be incomplete.

/var/www/sites/lantern.htb/app.py


root@lantern:~# cat /var/www/sites/lantern.htb/app.py
from flask import Flask, render_template, send_file, request, redirect, json
from werkzeug.utils import secure_filename
import os
 
app=Flask("__name__")
 
@app.route('/')
def index():
    if request.headers['Host'] != "lantern.htb":
        return redirect("http://lantern.htb/", code=302)
    return render_template("index.html")
 
@app.route('/vacancies')
def vacancies():
    return render_template('vacancies.html')
 
@app.route('/submit', methods=['POST'])
def save_vacancy():
    name = request.form.get('name')
    email = request.form.get('email')
    vacancy = request.form.get('vacancy', default='Middle Frontend Developer')
 
    if 'resume' in request.files:
        try:
            file = request.files['resume']
            resume_name = file.filename
            if resume_name.endswith('.pdf') or resume_name == '':
                filename = secure_filename(f"resume-{name}-{vacancy}-latern.pdf")
                upload_folder = os.path.join(os.getcwd(), 'uploads')
                destination = '/'.join([upload_folder, filename])
                file.save(destination)
            else:
                return "Only PDF files allowed!"
        except:
            return "Something went wrong!"
    return "Thank you! We will conact you very soon!"
 
@app.route('/PrivacyAndPolicy')
def sendPolicyAgreement():
    lang = request.args.get('lang')
    file_ext = request.args.get('ext')
    try:
            return send_file(f'/var/www/sites/localisation/{lang}.{file_ext}') 
    except: 
            return send_file(f'/var/www/sites/localisation/default/policy.pdf', 'application/pdf')
 
if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8000)

internalantern.service


root@lantern:~# systemctl status internalantern.service
 internalantern.service - WASM application as www-data
     Loaded: loaded (/etc/systemd/system/internalantern.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2024-08-20 22:08:39 UTC; 14h ago
   Main PID: 757 (dotnet)
      Tasks: 32 (limit: 4513)
     Memory: 350.8M
        CPU: 21.674s
     CGroup: /system.slice/internalantern.service
             ├─ 757 dotnet run
             └─1196 dotnet /var/www/sites/.nuget/packages/microsoft.aspnetcore.components.webassembly.devserver/6.0.1/build/../tools/blazor-devserver.dll --a>
 
Notice: journal has been rotated since unit was started, output may be incomplete.

skipper.service


root@lantern:~# systemctl status skipper.service
 skipper.service - Skipper proxy as www-data
     Loaded: loaded (/etc/systemd/system/skipper.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2024-08-20 22:08:39 UTC; 14h ago
   Main PID: 763 (skipper)
      Tasks: 8 (limit: 4513)
     Memory: 23.5M
        CPU: 13.119s
     CGroup: /system.slice/skipper.service
             └─763 skipper -routes-file /var/www/sites/skipper/flask.eskip -address :80 -proxy-preserve-host -access-log /var/www/sites/skipper/logs/access.l>
 
Notice: journal has been rotated since unit was started, output may be incomplete.