bash Webframework
Kurzbeschreibung
bash (bourne again shell) ist eine GNU Variante der Unix Shell, und als Skriptsprache sogar Turing-Vollständig. Bash-Scripts unterstützen Schleifen, Entscheidungsbäume und Rückgabewerte. Das bash Webframework (bwfk) ist eine Ansammlung solcher Skripte, nimmt aber für Netzwerktransaktionen und Reguläre Ausdrücke externe Programme (natcat und sed) in Anspruch.
Installation
Die Software kann grundsätzlich als Webserver eingesetzt werden, ganz ähnlich dem Apache-Webserver. Alle Dateien im Unterverzeichnis htdocs sind mit einem Webbrowser über den gewählten Port erreichbar. Zusätzlich können aber auch URL-Schemas in View-Modul fju.sh eingerichtet werden. Zur Installation braucht nur das Archiv in einen beliebigen Ordner entpackt werden. Anschliessend muss, wie bei den Screenshots, das bash-Skript aus dem Terminal gestartet werden. Damit das bwfk funktioniert, muss das Linux/Unix-Derivat, auf dem es betrieben wird, eine Installation von netcat besitzten, das mit der Option GAP_SECURITY_HOLE kompilliert wurde. Bei Ubuntu ist das beispielsweise der Fall.
Motivation
Die Software entstand im Rahmen eines Vortrages für ag-sec1), eine Aktionsgruppe Rund ums Thema IT-Security an der Universität Regensburg. Ursprunglich waren die bash-Scripts für den Einsatz auf mipsel-Linux Systemen, wie beispielsweise die FritzBox! von AVM, gedacht. Allerdings müssen zuviele Anpassungen am dem Embedded Linux vorgenommen werden, so dass man gleich auf einen cross-kompillierten Apache-Server bauen kann, wenn man dort einen Webserver integrieren will.
Das bwfk wurde dann also als Spielwiese für junge Programmierer und als komplexes Beispiel für bash-Scripts umgesetzt. Die Testanwendung "Radiorecorder", die im Archiv enthalten ist, ermöglicht das Aufnehmen (Speichern als mp3-Dateien) von Radiostreams aus dem Internet. Dabei ist allerdings für jeden Stream eine Anpassung des bash-codes notwendig, da die Testanwendung die notwendigen Headerdaten nicht automatisiert aus einem Radiostream-Link auslesen kann.
ACHTUNG: Sicherheitslücken
Da das bwfk für einen Vortrag bei ag-sec konzipiert wurde, sind natürlich bewusst einige Sicherheitslücken integriert worden. Die meisten kann man durch Filterung der Request-Parameter in urldecode.sh ausmerzen.
Der wehementeste Angriff ist allerdings die Ausführung eines der Radiostream-Skripte mit selbstgewählten Parametern, so dass statt des Radiostreams ein Kuckucksei, also ein fremdes bash-Skript auf den Server geladen werden könnte.
Um dies zu verhindern, muss man schon die grundlegende Programmlogik anpassen (hauptsächlich in kontrola.sh), so dass die Skripte, welche den Stream herunterladen nicht mehr eigenständig aufgerufen werden können.
Screenshots

| Man muss das bwfk natürlich nur dann als root ausführen, wenn man Ports unter 1024 (sog. priviligierte Ports) verwenden will.
|
- Die ag-sec ist im Rahmen der Beteiligung an einschlägigen "Hacker-Contests" entstanden. Ihr selbstverschriebenes Ziel ist es, universitären Nachwuchs in praktischem Sinn in den Bereichen der IT-Security weiterzubilden.
http://www-sec.uni-regensburg.de/ag-sec
|