Guzzle-kwetsbaarheid controleren met CURLOPT_HTTPAUTH

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Maurits Heyman

Maurits Heyman

28/12/2023 14:43:04
Quote Anchor link
Ik heb problemen met het controleren van kwetsbare code.
De kwetsbaarheid waar ik op controleer: https://www.cve.org/CVERecord?id=CVE-2022-31090
Op een debian-systeem heb ik 2 servers gemaakt: 1 server verwijst door naar de hoofdpagina van de tweede server, 2 servers gebruiken basisautorisatie op basis van bestanden.
Het wachtwoordbestand bevat een gebruikersnaam met nick en wachtwoord 12345
Bestand .htaccess:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
AuthType Basic
AuthName "Restricted Files"
AuthBasicProvider file
AuthUserFile "/etc/apache2/passwd"
Require valid-user

Mijn autorisatie werkt succesvol.
Vervolgens installeerde ik guzzle 6.5.0 en maakte het volgende bestand:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();

$res = $client->request('GET', 'http://site.loc', [
    'curl' => [
        CURLOPT_HTTPAUTH => 'Basic bmljazoxMjM0NQ=='
    ],
    'debug' => true
]);

var_dump($res->getBody()->getContents());


Ik heb het bestand uitgevoerd en dit is wat ik zag:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
*   Trying 127.0.0.1:80...
* Connected to site.loc (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
Host: site.loc
User-Agent: GuzzleHttp/6.5.0 curl/7.88.1 PHP/7.4.33

< HTTP/1.1 302 Found
< Date: Thu, 28 Dec 2023 13:40:15 GMT
< Server: Apache/2.4.57 (Debian)
< Location: http://test.loc
< Cache-Control: max-age=0
< Expires: Thu, 28 Dec 2023 13:40:15 GMT
< Content-Length: 0
< Content-Type: text/html; charset=UTF-8
<
* Connection #0 to host site.loc left intact
*   Trying 127.0.0.1:80...
* Connected to test.loc (127.0.0.1) port 80 (#1)
> GET / HTTP/1.1
Host: test.loc
User-Agent: GuzzleHttp/6.5.0 curl/7.88.1 PHP/7.4.33

< HTTP/1.1 401 Unauthorized
< Date: Thu, 28 Dec 2023 13:40:15 GMT
< Server: Apache/2.4.57 (Debian)
< WWW-Authenticate: Basic realm="Restricted Files"
< Content-Length: 455
< Content-Type: text/html; charset=iso-8859-1
<
* Connection #1 to host test.loc left intact
PHP Fatal error:  Uncaught GuzzleHttp\Exception\ClientException: Client error: `GET http://site.loc` resulted in a `401 Unauthorized` response...


Het blijkt dat de kwetsbaarheid niet heeft gewerkt, al had hij moeten inloggen op http://test.loc en de header niet moeten verwijderen.
Wat is er gebeurd en waarom werkt de kwetsbaarheid niet?
Gewijzigd op 28/12/2023 14:48:32 door Maurits Heyman
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.