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
?