Shellclear - History automatisch auf sensible Inhalte untersuchen

Das kleine Tool shellclear automatisiert das Überprüfen der Shell History auf sensible Inhalte wie Passwörter oder Zugangstoken.

shellclear

Unterstützt werden Shells wie Bash, Zsh, PowerShell und Fish. Das Tool greift auf ein Pattern-File zurück, welches beliebig erweitert werden kann.

Beim Start der Shell werden die Inhalte der History automatisch über dieses YAML-Pattern-File auf Passwörter und Token geprüft.

Sind sensible Inhalte vorhanden, werden diese gelistet und können gelöscht werden.

Momentan wird auf AWS Access Keys, Github Tokens, Gitlab Tokens, Slack, Cloudflare, Twitter, Facebook und vieles mehr getestet.

Installation

curl -sS https://raw.githubusercontent.com/rusty-ferris-club/shellclear/main/install/install.sh | bash

Einbinden in die Shell

nano ~/.bashrc
eval $(shellclear --init-shell)

bzw. 

nano ~/.zshrc
eval $(shellclear --init-shell)

Powershell

$PROFILE

Invoke-Expression (&shellclear --init-shell)

Fish

nano ~/.config/fish/config.fish

shellclear --init-shell | source

shellclear-findings

Verwendung

Durch das Einbinden in beispielsweise Zsh oder Bash prüft shellclear bei jedem Start automatisch auf sensible Inhalte in der History. Dieser Vorgang kann zusätzlich manuell gestartet und konfiguriert werden. Auch das Banner "your shell is clean from sensitive data" lässt sich ausblenden.

#sensible Inhalte suchen
shellclear find

#sensible Inhalte als Tabelle ausgeben
shellclear find --format table

#sensible Inhalte bereinigen
shellclear clear

#banner ausblenden
shellclear --no-banner

#eigene Config festlegen
shellclear config

#history verstecken
shellclear stash

Fazit

Kleiner Helfer für den Alltag, der tut, was er soll. Dank des YAML Formats ist das Tool beliebig erweiterbar. Abgesehen davon sind die größten Cloud-Firmen bereits integriert und das Tool erfüllt im Hintergrund seinen Zweck.

Nuclei - schneller Schwachstellen Scanner mit praktischen Vorlagen

In der Vergangenheit wurden auf ITrig öfters Security Scanner erwähnt, z.B. OpenVAS oder Trivy. Diese Security Scanner sind natürlich nicht die einzigen im Internet. Ein weiterer Kandidat auf Go Basis ist Nuclei. Der vorlagenbasierte Schwachstellen-Scanner ist inzwischen Teil des Kali-Universums (2022.1) und bekommt daher heute einen gesonderten Artikel spendiert.

Nuclei

Das Open-Source-Tool scannt verschiedene Protokolle (TCP, SSH, DNS, HTTP/S, SSL, Websocket, Whois usw.) auf Schwachstellen und mehr. Dazu werden YAML-Vorlagen verwendet. Diese Templates werden zum größten Teil von der Community beigesteuert, können aber auch selbst für die eigenen Bedürfnisse geschrieben werden. So kann für die vor wenigen Tagen veröffentlichte Confluence Lücke CVE-2022-26134 bereits ein Scan Template gefunden werden.

 

nuclei-flow

Neben Nuclei bietet ProjectDiscovery noch weitere gute Programme für das Security-Umfeld. Beispielsweise subfinder, ein Subdomain Discovery Tool.

Bevor tiefer in Nuclei eingetaucht werden kann, muss der Scanner installiert werden.

Installation Nuclei unter Debian/Ubuntu

Da das Tool auf der Programmiersprache Go basiert, muss diese zunächst installiert werden.

curl -OL https://go.dev/dl/go1.18.3.linux-amd64.tar.gz
sudo tar -C /usr/local -xvf go1.18.3.linux-amd64.tar.gz
sudo nano ~/.profile
    export PATH=$PATH:/usr/local/go/bin
source ~/.profile

Alternativ

sudo apt install golang-1.16

Nun kann die neueste Nuclei Version gebaut werden.

git clone https://github.com/projectdiscovery/nuclei.git
cd nuclei/v2/cmd/nuclei
go build
sudo mv nuclei /usr/local/bin/
nuclei -version

Nach der Installation sollte die Datenbank aktualisiert werden, damit Templates zur Verfügung stehen.

nuclei -ut
?  nuclei git:(master) nuclei -ut

                     __     _
   ____  __  _______/ /__  (_)
  / __ \/ / / / ___/ / _ \/ /
 / / / / /_/ / /__/ /  __/ /
/_/ /_/\__,_/\___/_/\___/_/   2.7.2

        projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions.
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
[INF] nuclei-templates are not installed, installing...
[INF] Successfully downloaded nuclei-templates (v9.0.6) to /home/user/nuclei-templates. GoodLuck!

ls -l ~/nuclei-templates/

Nachdem die Template-Datenbank aktualisiert wurde, können einzelne Vorlagen direkt in den Scanbefehl eingebunden werden.

Im Folgenden möchte ich einen kleinen Teil der möglichen Befehle mithilfe von Templates aufzeigen:

Einfacher API Scan

nuclei -u $URL -t ~/nuclei-templates/exposures/apis/

WordPress Scan

nuclei -u $URL -t ~/nuclei-templates/vulnerabilities/wordpress/

CVE Scan

nuclei -u $URL ~/nuclei-templates/cves/2022/CVE-2022-XXXX.yaml

Token Spray

nuclei -u $URL ~/nuclei-templates/token-spray/ -var token=XXX_TOKEN_XXX

Listen

Der Scanner kann mit Listen umgehen, was beim Scannen mehrerer URLs durchaus helfen kann.

nuclei -u $URL -list http_urls.txt

Filter

Nuclei unterstützt Filter, wie tags, severity, author

nuclei -u $URL -tags cve

Workflows

Nuclei kann Workflows abbilden, d.h. es könnten z.B. Templates in einem Workflow gebündelt werden. Hier ein Beispiel:

id: workflow-example
info:
  name: Test Workflow Template
  author: pdteam

workflows:
  - template: technologies/tech-detect.yaml
    matchers:
      - name: wordpress
        subtemplates:
          - template: cves/CVE-2019-6715.yaml
          - template: cves/CVE-2019-9978.yaml

Auf solche Workflows können wiederum auch Filter angesetzt werden

nuclei -u $URL -w workflows/workflow-example.yaml -severity critical,high -list http_urls.txt

Rate Limits

Um die Anzahl der gleichzeitigen Zugriffe zu regulieren, können Rate Limits gesetzt werden.

  • rate-limit     Control the total number of request to send per seconds
  • bulk-size     Control the number of hosts to process in parallel for each template
  • c     Control the number of templates to process in parallel

Custom Header

Es kann notwendig sein, einen eigenen Header zu setzen. Gerade bei BugBounty Programmen oder um euch als Pentester erkennen zu geben. Dazu kann die "/home/user/.config/nuclei/config.yaml" angepasst werden:

    # Headers to include with each request.
header:
  - 'X-BugBounty-Hacker: h1/geekboy'
  - 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) / nuclei'

Wer dies ad hoc via CLI erledigen möchte, der muss nur "Header" in der Befehlskette verwenden.

nuclei -header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) / nuclei' -list urls.txt -tags cves

Hier endet auch schon der Schnelleinstieg in Nuclei. Ich hoffe, ihr habt einen schnellen Einblick bekommen, was mit dem Scanner möglich ist und warum die vorhandenen Vorlagen und Einstellmöglichkeiten Nuclei momentan zu einem sehr beliebten Tool machen.

Weitere Tipps findet ihr direkt auf Github oder beim Template Guide

Viel Erfolg beim Testen der eigenen Webseite, Apps, Sockets.

 

Exa - Bessere Listen unter Linux mit dem ls Ersatz

Es gibt unter Linux ein paar wenige Kommandos, welche ständig zum Einsatz kommen, dazu zählt sicherlich das Kommando ls. Nun ist dieser Befehl schon etwas in die Jahre gekommen, bietet aber eigentlich noch immer alles, was im Alltag benötigt wird.

Mit Exa gibt es einen ls Ersatz, der das staubige Image etwas aufpeppen möchte.

Bevor hier ein paar Worte zu Exa fallen noch ein kleiner Hinweis, wie ihr eure Top-Befehle auf der Konsole anzeigen könnt, damit ihr seht wie oft ihr ls eigentlich verwendet.

history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr

Exa - ein moderner ls Ersatz für Ubuntu/Debian

Die Installation von Exa ist denkbar einfach und kann unter neueren Systemen via apt erledigt werden.

sudo apt install exa

Auf älteren Systemen muss das passende Paket manuell heruntergeladen werden.

wget https://github.com/ogham/exa/releases/download/v0.10.0/exa-linux-x86_64-v0.10.0.zip

sudo install bin/exa /usr/local/bin/

Um das Tool zu verwenden, reicht ein einfaches exa aus. Allerdings wird beispielsweise ein Ubuntu Nutzer schnell feststellen, dass es im Vergleich zu ls fast keine Unterschiede gibt, denn diese Distribution unterstützt bereits eine farbige Ausgabe.

Exa entfaltet seine Kraft also erst in der Tiefe. Hier ein paar Beispiele.

exa-lsEin schlichtes

exa -lF

wird sich bereits stark von ls -l unterscheiden, einerseits farblich, andererseits werden durch den Operator -F für file type zusätzliche Informationen angezeigt.

Praktischerweise bringt exa noch weitere Funktionen mit. So wird Git unterstützt und zeigt mit N für neue Dateien (staged) und M für geänderte Dateien (unstaged) weitere relevante Informationen an.

exa -l --git

Auch eine Baumansicht ist dabei und ermöglicht eine strukturierte Ansicht, ähnlich wie tree.

exa --tree --level=3

Daneben ist es ebenfalls möglich einen relativ mächtigen Filter anzuwenden oder Logos einzubinden. Bei letzterem muss allerdings erst die passende Schriftart installiert werden.

Eine ausführliche Dokumentation ist bei exa direkt zu finden.

exa-logos

Überaus praktisch empfinde ich die Möglichkeit, sich Listen nach gewünschten Werten wie Größe, Alter, usw. sortieren zu lassen.

exa -l --sort=size
exa -l --sort=age

Fazit

Nutzer, die ls im Alltag etwas aufmotzen möchten, sind bei exa gut aufgehoben. Dank der Paket-Installation in neueren Distributionen ist die Hemmschwelle, einen kurzen Blick zu wagen, relativ gering. Probiert es einfach mal aus, vielleicht sagt es euch ja zu.

Serverumzug mit Serendipity - Datenbank Update notwendig

Vor einiger Zeit ist ITrig auf einen neuen Server umgezogen.

Nach dem Umzug wollte das Blog nicht mehr so richtig funktionieren. Auch der Adminbereich war nicht mehr erreichbar und zeigte komische Fehler an. Nach etwas Recherche war schnell klar, dass bei Serendipity Pfade leider hart in der Datenbank stehen, welche nicht mehr auf die neue Serverstruktur passten.

Da diese Schritte nicht in der Umzugsanleitung der S9y Seite vorhanden sind, bzw. ich sie einfach nicht gefunden habe, möchte ich hier das Vorgehen dokumentieren.

s9y-logo

Serendipity Blog Pfad in der Datenbank anpassen

Zunächst wird die Ausgabe des aktuellen Pfads geprüft.

mysql -uroot -p
USE s9y_db;
SELECT * FROM `serendipity_config` WHERE name='serendipityPath'

               serendipityPath               /alterPfad/html/www/

Nun kann der Pfad auf die neue Struktur aktualisiert werden.

UPDATE `serendipity_config` set value = '/neuerPfad/' WHERE name = 'serendipityPath';

Ein weiterer Wert, der vielleicht angepasst werden muss ist serendipityHTTPPath.

SELECT * FROM `serendipity_config` WHERE name='serendipityHTTPPath'

UPDATE `serendipity_config` set value = '/NeuerPfad/' WHERE name = 'serendipityHTTPPath';

Sollte sich zusätzlich die URL geändert haben, dann kann auch diese direkt angepasst werden.

SELECT * FROM `serendipity_config` WHERE name = 'defaultBaseURL';

UPDATE `serendipity_config` set value = 'https://neuedomain.de' WHERE name = 'defaultBaseURL';

Nun sollte das System wieder wie gewohnt auf dem neuen Server erreichbar sein.

Raspberry Pi 4 Kiosk - Bildschirmschoner unter Raspberry Pi OS deaktivieren

Der Raspberry Pi ist schon längere Zeit in Version 4 verfügbar, Raspbian heißt nun Raspberry Pi OS und der dazugehörige Imager hat mehr Optionen erhalten (Strg + Shift +X).

Dies sind allerdings nicht die einzigen Neuerungen. Denn eine oft gestellte Frage hat nun ebenfalls eine andere Antwort.

Wie deaktiviere ich den Bildschirmschoner unter Raspberry Pi OS

Um den Bildschirmschoner zu deaktivieren, konnten bisher in einigen Dateien Hand angelegt werden.

So mussten in der Vergangenheit diverse Werte im Autostart eingetragen werden:

/home/pi/.config/lxsession/LXDE-pi/autostart

Beziehungsweise unter:

/etc/xdg/lxsession/LXDE-pi/autostart 

Details dazu findet ihr in einem alten Artikel.

Mit der neuen OS Version, welche auf Debian Buster basiert, ist dies nicht mehr nötig.

Der Hersteller hat diese Option nun direkt im Konfigurationstool versteckt. 

sudo raspi-config

[Menu] --> [Preferences] --> [Screen Blanking]

raspberrypi4-screensaveDie alten Methoden funktionieren nicht mehr.

Ein weiterer Workaround wäre die Installation eines extra Screensavers ( sudo apt-get install xscreensaver ), welcher dann deaktiviert wird. Dieser Schritt sollte im Normalfall allerdings nicht nötig sein.