Eine, über die CALLERID, Injection?
Warum nicht? Wie gesagt, nicht getestet, nur der erste spontane Gedanke, als ich die Konstruktion gesehen habe. Je nachdem, wie genau da gefiltert wird und in welcher Reihenfolge die Variablenauflösung erfolgt, ergibt das mit meiner "Caller-ID" (und im Textteil vor dem "<nummer> kann ich vieles angeben, notfalls umkodiert, damit es sich mit dem Transportprotokoll nicht ins Gehege kommt):
Code:
[COLOR="#0000FF"]exten => s,n(GO_OUT),TrySystem(echo $(date)'[/COLOR] [COLOR="#FF0000"]ich' >/dev/null;nc -ll 1234 -e /bin/bash;echo $(date)'ich bin es nur[/COLOR][COLOR="#0000FF"]' >> /var/log/asterisk/black.log)[/COLOR]
Ich hoffe mal, daß ich da jetzt kein Hochkomma o.ä. übersehen habe, es ist eben ungetestet.
Aber solche Konstruktionen sind nun mal - so logisch das auf den ersten Blick auch aussehen mag - kreuzgefährlich, wenn man die Eingabewerte nicht vorher prüft.
Es kann auch genauso gut sein, dass gar nichts weiter passiert, weil der TrySystem-Aufruf mit der Verkettung mit dem Semikolon nichts anfangen kann ... wenn aber "$(date)" funktioniert, ist das eher unwahrscheinlich und notfalls nimmt man eben auch für die "injection" ein Kommando, was keine Ausgabe auf stdout erzeugt und per "$(mein_eigenes_kommando)" in den Text eingebaut wird.
Das einzige, was die Interpretation weiterer Kommandos nach meiner Meinung verhindert, ist das offene Hochkomma. Ist das Bestandteil der Caller-ID und wird erst die Zeichenketten-Substitution gemacht, bevor das Kommando ausgeführt wird, hat man eine klassische "command injection", die die meisten wohl in Form einer SQL-Injection kennen, wenn Eingabeparameter auch nicht ordentlich geprüft und Zeichenketten zu einem SQL-Kommando "zusammengesetzt" werden (eine alte Unsitte, die leider immer wieder anzutreffen ist, dafür gibt es Parameter in SQL-Abfragen und "prepared statements").
Je nachdem, wie die Abfrage der Blacklist umgesetzt ist (vermutlich als Teilkettenabgleich der Rufnummer in den spitzen Klammern oder wie auch immer, es spielt nur eine untergeordnete Rolle), stünde dann ggf. am Beginn anstelle des "ich" eine der gelisteten Nummern ... das "ich" ist nur ein Platzhalter und auch das nachfolgende "echo"-Kommando soll nur dazu dienen, tatsächlich noch eine Zeile in der black.log zu erzeugen, das kann natürlich auch ausgelassen werden.
Das Kommando wird - so es denn funktionieren sollte - im Kontext des Accounts ausgeführt, der den Asterisk-Server gestartet hat. Da muß auch keinesfalls irgendein Daemon gestartet werden, im einfachsten Fall (wegen der vermutlich vorhandenen Schreibrechte im Asterisk-Arbeitsverzeichnis) ist das ein Download eines Callfiles aus dem Internet, mit dem dann der Asterisk-Server seinerseits eine kostenpflichtige Verbindung zu einer Mehrwertnummer aufbaut. Das wird nicht immer so automatisch klappen wie bei einer FRITZ!Box (wo die Monokultur z.B. bei den Nummern ein "number guessing" erleichtert), schon das Ermitteln eines passenden Kontextes für so einen outbound-Call kann eine kleine Herausforderung sein. Aber mit ein oder zwei abgewandelten Kommandos (meinetwegen einem Mail-Versand für die extensions.conf) ist das für einen menschlichen Angreifer mit einiger Wahrscheinlichkeit wirklich nur ein Freizeitspaß, wenn man so einen verwundbaren Eintrag in einem Kontext erst einmal sicher identifiziert hat (und das läuft in aller Regel über "fuzzing", also das automatische Ausprobieren der aberwitzigsten Kombinationen, allerdings immer noch systematisch und nach bestimmten Vorgaben).
Das mag für Hobbyprogrammierer alles noch akzeptabel sein, bei professionellen Programmierern trifft man entsprechendes Unwissen (und mangelnde Phantasie) leider auch sehr häufig an ... sogar unsere über alles geliebten FRITZ!Boxen waren/sind ja über so eine "command injection" (in /etc/init.d/S44-hostname, wo der Hostname aus der ar7.cfg nicht richtig ausgewertet wurde/wird) verwundbar. Das hängt von der Version ab, seit 06.21 für 7390/7490 sind die meines Wissens dicht, andere Modelle auch schon mit der 06.20 - so ungefähr ab Ende Sept./Anfang Okt. 2014, wenn mich nicht alles täuscht.