Esecuzione di comandi arbitrari tramite l'input di ripristino di iptables

4

Durante un pentest ho trovato un modo per aggiungere arbitrarie regole del firewall iptables a un server. Queste regole vengono applicate tramite il comando iptables-restore e mi sono chiesto se esiste un modo per eseguire comandi manipolando l'input.

Il mio punto di partenza è il seguente, che produrrà l'aiuto per iptables-restore :

printf '*filter\n--help\n' | iptables-restore --test

Quindi so che le opzioni sono eseguite come previsto. Ora, la pagina man menziona un'opzione --modprobe=command , che è descritta come:

--modprobe=command

When adding or inserting rules into a chain, use command to load any necessary modules (targets, match extensions, etc).

Grande, pensai, posso eseguire un comando fornendo un target inesistente e convincendo iptables a sondarlo. Ho provato quanto segue (e le sue varianti):

printf '*filter\n--modprobe=/some/command -A INPUT -j sometarget\n' | iptables-restore --test

Ma questo dà solo un errore senza tentare di eseguire /some/command :

iptables-restore v1.4.12: Couldn't load target 'sometarget':No such file or directory

Ho anche provato a usare un modulo che esiste ma non è attualmente caricato, ma il modulo viene caricato correttamente senza chiamare il comando modprobe personalizzato.

Ogni suggerimento o suggerimento su dove andare dopo (o su qualsiasi altro percorso che potrei investigare) sarebbe molto apprezzato!

Modifica: --modprobe sembra essere fuori questione, quindi la domanda diventa: ci sono altri potenziali exploit possibili passando regole dannose a iptables ?

    
posta morphics 17.05.2013 - 13:41
fonte

2 risposte

2

L'opzione --modprobe fa parte della sintassi della riga di comando del comando iptables-restore . Non è qualcosa che iptables-restore analizza come input.

Quindi, se c'è una regola sudo che ti permette di eseguire iptables-restore con argomenti arbitrari, puoi passare --modprobe=/bin/sh o varianti dello stesso. Ma se tutto ciò che puoi fare è passare l'input a iptables-restore , allora questo particolare metodo non consente l'esecuzione di codice arbitrario.

Nota che non asserisco che iptables-restore non consenta l'esecuzione arbitraria di codice in qualche altro modo. In particolare, se puoi controllare l'ambiente ma non le opzioni della riga di comando, export MODPROBE_OPTIONS='-d ~/malicious_modules' (in combinazione con una regola che attiva il caricamento di un modulo) sembra promettente, ma non l'ho provato. E, naturalmente, la modifica delle regole del firewall può causare tutti i tipi di caos (partendo da banali DoS e partendo da lì - spesso i servizi limitati a localhost sarebbero pericolosi se esposti all'intero Internet).

    
risposta data 17.05.2013 - 14:22
fonte
1

A seconda dei moduli disponibili , potresti essere in grado di utilizzare xt_sysrq per un po 'di divertimento.

    
risposta data 17.05.2013 - 18:19
fonte

Leggi altre domande sui tag