the exact cgi script which uses bash as an interpreter
"Utilizzare bash come interprete" non una precondizione per lo sfruttamento della famiglia delle vulnerabilità di bash chiamata "shellshock" (le molte vulnerabilità di analisi distinte basato su una variabile di ambiente con qualsiasi nome che inizi esattamente con i byte () {
).
Tutto ciò che serve per sfruttare uno dei "shellshock" vuln è eseguire il programma bash con un valore controllato dall'utente di una variabile d'ambiente; uno script di shell con bash come interprete di shell ( #!/bin/bash
o #!/bin/sh
dove /bin/sh
è un collegamento a bash
) è un modo ovvio per eseguire bash, ma molti altri esistono quando /bin/sh
è bash: molte funzioni chiamate che eseguono un programma esterno prendono un comando stringa (non un percorso e una matrice di argomenti); in particolare system
e popen
(a differenza della famiglia di funzioni exec*
). Queste funzioni prendendo una stringa usano la shell predefinita ( /bin/sh
) per analizzare la stringa di comando, quindi l'uso di queste funzioni rende il programma vulnerabile alle vulnerabilità di bash, a meno che l'ambiente non sia stato ripulito da qualsiasi input dell'utente.
Quindi qualsiasi programma C che utilizza queste funzioni è potenzialmente vulnerabile. E programmi scritti in altri linguaggi di programmazione con funzioni simili.
Questo è molto più programmi rispetto agli script /bin/bash
.
Ovviamente, un programma C può exec
un file eseguibile che sembra essere uno script di shell con un interprete /bin/bash
.
exact cgi script which uses bash
Si noti che uno "script cgi " può effettivamente essere qualsiasi programma con l'interfaccia CGI ; non ha bisogno di essere uno "script" come nella shell script . Spesso, gli "script" CGI sono scritti in linguaggi compilati, come C.
Also, does the attacker have to enumerate pages on the vulnerable
system
Molti script CGI sono in posizioni ben note, fisse, sulla maggior parte delle installazioni.