Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2019-19576 — Questo è un exploit di bypass del filtro che consente il caricamento arbitrario di file e l'esecuzione remota di codice in class.upload.php <= 2.0.3 | Kitploit
Strumenti/GitHubGitHub/jra89/cve-2019-19576
Generazione di PayloadAnalisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration Testing
GitHubjra89/cve-2019-19576

CVE-2019-19576

Questo è un exploit di bypass del filtro che consente il caricamento arbitrario di file e l'esecuzione remota di codice in class.upload.php <= 2.0.3

Vedi Repository
1236 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

class.upload.php <= 2.0.3 Caricamento arbitrario di file

  • Autore - Jinny Ramsmark
  • Vendor interessato - Verot.net
  • Prodotto interessato - class.upload.php <= 2.0.3
  • Testato su Ubuntu 19.10 appena installata con PHP7.3 e Apache/2.4.38
  • In particolare Debian/Ubuntu è risultata vulnerabile poiché aggiungono le estensioni php, phar e phtml ai gestori PHP disponibili. In questo caso class.upload.php non ha inserito l'estensione phar nella blacklist.

Descrizione

Questo è un exploit di bypass del filtro che comporta il caricamento arbitrario di file e l'esecuzione remota di codice. Lo script class.upload.php filtra i "file e contenuti pericolosi" e li rinomina con l'estensione txt. Inoltre esegue diversi tipi di trasformazione sull'immagine caricata, che normalmente distruggerebbero qualsiasi payload iniettato, anche se il filtro sull'estensione del file potesse essere aggirato.

Il filtro sulle estensioni dei file è una blacklist, quindi ogni volta che viene introdotta una nuova estensione (in questo caso phar), o se qualcuna è stata dimenticata, è possibile caricare un file PHP. Il contenuto deve comunque essere un'immagine valida e passerà ancora attraverso imagecreatefromjpeg e funzioni simili. A questo scopo ho scritto lo script inject.php che sostanzialmente forza bruta diverse immagini fino a trovarne una in cui il payload non venga distrutto dal processo eseguito in class.upload.php. Questo ci dà di fatto un caricamento arbitrario di file e un'esecuzione di codice molto furtiva, poiché si tratta comunque di un'immagine valida che verrà visualizzata come tale nelle pagine in cui viene caricata.

Cronologia (scadenza predefinita di 90 giorni)

  • 2019-12-03 - Segnalato allo sviluppatore e a K2
  • 2019-12-03 - K2 ha risposto
  • 2019-12-04 - Verot ha risposto con una correzione
  • 2019-12-04 - K2 ha risposto con una correzione preparata di propria iniziativa
  • 2019-12-04 - Verot ha rilasciato la correzione (v2.0.4)
  • 2019-12-05 - Entrambe le parti hanno risposto e concordato la pubblicazione delle informazioni

File inclusi in questo PoC

  • composer.json
  • upload.php
  • inject.php

Utilizzo

Lo script upload.php è il codice di esempio dal github di verot.net. Ho pensato che fosse meglio dimostrare questa vulnerabilità usando il loro stesso codice di esempio.

  • Esegui "php inject.php" in un terminale, genererà un'immagine di esempio con un semplice payload nel file.
  • Quando lo script termina produrrà un file chiamato "image.jpg.phar".
  • Vai al file upload.php e carica image.jpg.phar, verrà accettato e ora avrai una shell

Esempio

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.7=-
[+] Fetching image (100 X 100) from http://lorempixel.com/100/100/
[+] Jumping to end byte
[+] Searching for valid injection point
[!] Temp solution, if you get a 'recoverable parse error' here, it means it probably failed
[+] It seems like it worked!
[+] Result file: image.jpg.phar
root@kitploit:~
user@ayu:/var/www/html# curl -v -o - http://localhost/images/image_resized.phar?c=uname%20-a | grep -aPo "(Linux.*GNU)"
Linux ayu 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU

Soluzione proposta

  • Non usare una blacklist per le estensioni dei file.
  • Usare invece una whitelist di quelle consentite come impostazione predefinita.
  • Oppure non avere alcuna estensione sui file caricati e memorizzare il nome originale altrove.

Riferimento

  • https://github.com/verot/class.upload.php/blob/2.0.3/src/class.upload.php#L3068

Esempio di attacco nell'estensione Joomla K2

Caricamento arbitrario di file che porta all'esecuzione remota di codice in JoomlaWorks K2 <= 2.10.1 a causa di una versione non corretta di class.upload.php

Sito web

  • https://getk2.org/

Immagini di esempio

Un utente normale carica l'immagine generata da inject.php, contenente un semplice payload. L'immagine aggirerà il filtro sulle estensioni in class.upload.php e non verrà distrutta dalla gestione delle immagini effettuata dalla libreria. Verrà visualizzata come un'immagine normale, il che è più discreto.



Il file verrà caricato e potrà essere utilizzato come backdoor per eseguire comandi.

Scarica lo strumento