Wir veröffentlichen die Übersetzung des Artikels zum Installieren von XSS Hunter und überprüfen die Anweisungen anhand unseres eigenen Beispiels.
Spoiler: Alles funktioniert!
Warum XSS Hunter?
Viele Leser wissen wahrscheinlich bereits, dass Sie sich unter https://xsshunter.com/ registrieren und xsshunter kostenlos nutzen können. Kurz gesagt, dies ist ein Tool, das hauptsächlich für blinde XSS-Suchen verwendet wird . Warum stellen Sie dann Ihren eigenen Dienst für diese Aufgabe bereit?
- Alles ist unter Kontrolle. Wenn etwas schief geht, können Sie das Problem überprüfen und untersuchen.
- Stabilität. Sie wissen sicher, ob der Dienst funktioniert oder nicht. Sie können selbst entscheiden, wann Sie damit aufhören möchten. Stellen Sie sich vor, Sie haben Hunderte von Datensätzen zur Ausführung bereit und der Eigentümer des Dienstes schaltet ihn plötzlich aus. Das wäre traurig!
- Sie haben die Kontrolle über die Daten. Unternehmen mögen normalerweise keine Fehlerjäger, die Lösungen von Drittanbietern verwenden, da sie in diesem Fall nicht überprüfen können, ob die Daten gelöscht wurden oder nicht.
Bonus: Dank des Artikels erfahren Sie, wie alles funktioniert.
Wenn Ihnen dieser Artikel nicht ausreicht, empfehlen wir Ihnen, die Arbeit unserer Kollegen von Jet Infosystems zu lesen .
Wie benutzt man?
Eine Anleitung zur Verwendung von XSS Hunter finden Sie auf der XSS Hunter GitHub- Website .
Dies ist ein guter Anfang, aber dieser Leitfaden ist etwas veraltet. Die Situation ist die gleiche wie bei der Codebasis, daher musste ich einige Dinge ändern, um unter Ubuntu 18.04 zu arbeiten. In diesem Artikel werde ich Ihnen schließlich erklären, wie Sie mit XSS Hunter arbeiten.
Die ersten Schritte
An dieser Stelle verwende ich den offiziellen Leitfaden als Grundlage.
Wir gehen auch davon aus, dass Sie über einen funktionierenden Server und grundlegende Erfahrung in der Serververwaltung verfügen. Trotzdem werde ich immer noch versuchen, tiefer zu gehen. Fühlen Sie sich frei, Fragen zu stellen!
Wir brauchen:
- VPS oder ein anderer Ort, an dem der Dienst gehostet wird
Wir haben die Anweisungen des Autors am Beispiel von VDS Timeweb wiederholt: timeweb.com/ru/services/vds . Weiter im Artikel teilen wir, was wir in jeder Phase bekommen haben, in versteckten Spoilern.
Wir haben: timeweb.com/ru/services/domains .
:
XSS Hunter
mailgun
1. Registrieren Sie hier ein Mailgun-Konto . Vergessen Sie nicht, das unten im Screenshot angegebene Kontrollkästchen zu deaktivieren.
2. Befolgen Sie die Anweisungen, um Ihre E-Mail-Adresse und Telefonnummer zu überprüfen.
3. Gehen Sie zur Registerkarte Senden und wählen Sie Ihre Mail-Domain aus.
4. Fügen Sie oben rechts auf dem Bildschirm die E-Mail-Adressen hinzu, an die Sie Benachrichtigungen erhalten möchten. Dies sollte Ihre reale und aktuelle Adresse sein. Zum Beispiel john.doe@gmail.com.
5. Klicken Sie nach Abschluss des obigen Vorgangs in dem durch die API-Bezeichnung hervorgehobenen Block auf die Schaltfläche "Auswählen".
6. Notieren Sie sich den API-Schlüssel und die E-Mail-Domäne. Du wirst sie bald brauchen!
Die E-Mail-Domäne ist der letzte Teil der Basis-API-URL: sandboxe678 .
Am Beispiel von VDS Timeweb
: sandbox82f7e729ed934d1189bcc6bd32aaa977.
7. Öffnen Sie die Mail und suchen Sie den Brief der Mailgun.
8. Bestätigen Sie Ihre E-Mail-Adresse, indem Sie auf den Link in der E-Mail klicken.
(Der Brief wird an die in Schritt 4 angegebene Adresse gesendet, in unserem Fall an john.doe@gmail.com.)
Stellen Sie sicher, dass alles funktioniert
Verwenden Sie den folgenden Befehl, um E-Mails von Ihrem Server zu senden und sicherzustellen, dass der Dienst ausgeführt wird.
Ersetzen Sie:
[API_KEY] : Ihren API-Schlüssel
[API_BASE_URL] : Ihre Basis-URL API
[YOUR_EMAIL] : Ihre echte E-Mail
Zum Beispiel: john.doe@gmail.com .
curl -s --user 'api:[API_KEY]' \
https://api.mailgun.net/v3/[API_BASE_URL]/messages \
-F from='Excited User <mailgun@[API_BASE_URL]>' \
-F to=[YOUR_EMAIL] \
-F subject='Hello' \
-F text='Testing some Mailgun awesomeness!'
Hinweis : Die EU-Version des Dienstes hat eine andere URL. Eine schnelle Google-Suche oder die Überprüfung Ihres Mailgun-Kontos zeigt Ihnen genau, was Sie ändern müssen.
Anmerkung des Timeweb-Experten
curl:
:
curl -s --user 'api:67ee2b8a922268ac335eb00262b33711-9b1bf5d3-919027d8' \https://api.mailgun.net/v3/sandbox82f7e729ed934d1189bcc6bd32aaa977.mailgun.org/messages \
-F from='Excited User <mailgun@sandbox82f7e729ed934d1189bcc6bd32aaa977.mailgun.org>' \
-F to=r.tkach@timeweb.ru \
-F subject='' \
-F text=' MailGun'
:
{
"id": "<20201029124602.1.C81E1E4029FB7DC4@sandbox82f7e729ed934d1189bcc6bd32aaa977.mailgun.org>",
"message": "Queued. Thank you."
}
Überprüfen Sie Ihr Konto, um sicherzustellen, dass Sie eine E-Mail wie im folgenden Beispiel erhalten haben. Wenn keine E-Mail vorhanden ist, müssen Sie eine Fehlerbehebung durchführen, bevor Sie mit dem nächsten Schritt fortfahren können.
Abhängigkeiten einrichten
Installieren Sie zuerst die erforderlichen Pakete:
# install dependencies
sudo apt-get install nginx && sudo apt-get install postgresql postgresql-contrib
Am Beispiel von VDS Timeweb
root@372526-twosa:~# apt-get install nginx && apt-get install postgresql postgresql-contrib
Richten Sie als Nächstes den Postgres-Benutzer und die Datenbank für den XSS Hunter ein. Ändern Sie EXAMPLE_PASSWORD in ein sichereres Kennwort. Ich empfehle dringend, einen Passwort-Manager zu verwenden!
sudo -i -u postgres
psql template1
CREATE USER xsshunter WITH PASSWORD 'EXAMPLE_PASSWORD';
CREATE DATABASE xsshunter;
\q
exit
Am Beispiel von VDS Timeweb
root@372526-twosa:~# sudo -i -u postgres
postgres@372526-twosa:~$ psql template1
psql (10.14 (Ubuntu 10.14-0ubuntu0.18.04.1))
Type "help" for help.
template1=# create user xsshunter with password '6fhQg18YFrna2LbX2EDWHfLoewy32i';
CREATE ROLE
template1=# create database xsshunter;
CREATE DATABASE
template1=# \q
Serviceinstallation
Zuerst klonen wir das Repository:
git clone https://github.com/mandatoryprogrammer/xsshunter
cd xsshunter
Am Beispiel von VDS Timeweb
root@372526-twosa:~# git clone https://github.com/mandatoryprogrammer/xsshunter
root@372526-twosa:~# cd xsshunter
Bitte beachten Sie : Python2 erforderlich! Das Repository unterstützt Python3 nicht.
Um das Konfigurationsskript auszuführen, müssen wir eine zusätzliche Abhängigkeit hinzufügen:
# install yaml support for python
sudo apt-get install pyyaml
Am Beispiel von VDS Timeweb
root@372526-twosa:~/xsshunter# apt install python-pip
root@372526-twosa:~/xsshunter# pip install pyyaml
Vielen Dank an Benutzer xYantix für die Bereitstellung einer funktionierenden Lösung für diese Pull-Anfrage .
Service-Setup
Ok, lass uns anfangen! Wir sind bereit, das Konfigurationsskript auszuführen.
# generate yaml config file
./generate_config.py
Am Beispiel von VDS Timeweb
root@372526-twosa:~/xsshunter# ./generate_config.py
Ich zeige Ihnen den Prozess Schritt für Schritt. Ein Beispiel für die Ausgabe finden Sie im folgenden Beispiel. Ich habe Zahlen für die einfache Navigation hinzugefügt. Ansonsten sollte alles gleich aussehen.
1. Geben Sie Ihren Domainnamen ein. Ich habe mydomain.com als Beispiel verwendet.
Am Beispiel von VDS Timeweb
372526-twosa.tmweb.ru.
2. Geben Sie Ihren Mailgun-API-Schlüssel ein, den Sie zuvor gefunden und gespeichert haben.
3. Geben Sie Ihren Mailgun-Domainnamen ein, den Sie auch zuvor notiert haben. (Was mit einem Sandkasten beginnt).
4. Ich denke, es könnte alles @ [Mailgun-Domainname] sein , aber ich habe mich an die Standardbenennung von Mailgun gehalten, da der Name hier nicht wirklich wichtig ist. Ich schlage vor: mailgun @ [Mailgun Domain Name]. Denken Sie daran, [Mailgun-Domainname] durch Ihren eigenen zu ersetzen.
5. Dies dient dazu, Personen dazu zu bringen, mutmaßlichen Missbrauch des Tools zu melden. Ihre echte und aktuelle E-Mail sollte hier angegeben werden. Zum Beispiel: john.doe@gmail.com .
6. Wenn Sie alle Schritte in diesem Artikel ausgeführt haben, geben Sie einfach xsshunter ein.
7. Geben Sie das Kennwort ein, das Sie beim Erstellen der Datenbank ausgewählt haben. Oben als EXAMPLE_PASSWORD aufgeführt . Ersetzen Sie den Text [YOUR_REALLY_SECURE_PASSWORD] durch Ihr Passwort EXAMPLE_PASSWORD .
8. Wenn Sie wie in Schritt 6 diesem Tutorial gefolgt sind, geben Sie einfach xsshunter ein.
Hoppla! Das Setup ist abgeschlossen!
Wenn Sie diese Werte jemals ändern müssen, können Sie sie direkt in der Datei config.yaml bearbeiten.
__ __ _____ _____ _ _ _
\ \ / // ____/ ____| | | | | | |
\ V /| (___| (___ | |__| |_ _ _ __ | |_ ___ _ __
> < \___ \\\\___ \ | __ | | | | '_ \| __/ _ \ '__|
/ . \ ____) |___) | | | | | |_| | | | | || __/ |
/_/ \_\_____/_____/ |_| |_|\__,_|_| |_|\__\___|_|
Setup Utility
(1)
What is the base domain name you will be using?
(ex. localhost, www.example.com)
Domain? mydomain.com
Great! Now let's setup your Mailgun account to send XSS alerts to.
(2)
Enter your API key:
(ex. key-8da843ff65205a61374b09b81ed0fa35)
Mailgun API key: 92740xxxxxxxxxxxxxxxxxxxxxxxxxxx-65bxxx58-8ffxxxxx
(3)
What is your Mailgun domain?
(ex. example.com)
Mailgun domain: sandboxe6784d1f69d9486484bb8db10ab02380.mailgun.org
(4)
What email address is sending the payload fire emails?:
(ex. no-reply@example.com)
Sending email address:
mailgun@sandboxe6784d1f69d9486484bb8db10ab02380.mailgun.org
(5)
Where should abuse/contact emails go?:
(ex. yourpersonal@gmail.com)
Abuse/Contact email: xsshunter@mydomain.com
(6)
What postgres user is this service using?
(ex. xsshunter)
Postgres username: xsshunter
(7)
What is the postgres user's password?
(ex. @!$%@^%UOFGJOEJG$)
Postgres password: [YOUR_REALLY_SECURE_PASSWORD]
(8)
What is the postgres user's DB?
(ex. xsshunter)
Postgres DB: xsshunter
Generating cookie secret...
Minting new nginx configuration file...
Setup complete! Please now copy the 'default' file to
/etc/nginx/sites-enabled/default
This can be done by running the following:
sudo cp default /etc/nginx/sites-enabled/default
Also, please ensure your wildcard SSL certificate and key are available at
the following locations:
/etc/nginx/ssl/mydomain.com.crt; # Wildcard SSL certificate
/etc/nginx/ssl/mydomain.com.key; # Wildcard SSL key
Good luck hunting for XSS!
Am Beispiel von VDS Timeweb
Setup Utility
What is the base domain name you will be using?
(ex. localhost, www.example.com)
Domain? 372526-twosa.tmweb.ru
Great! Now let's setup your Mailgun account to send XSS alerts to.
Enter your API key:
(ex. key-8da843ff65205a61374b09b81ed0fa35)
Mailgun API key: 67ee**************************-9b*******-919*****
What is your Mailgun domain?
(ex. example.com)
Mailgun domain: sandbox82f7e729ed934d1189bcc6bd32aaa977.mailgun.org
What email address is sending the payload fire emails?:
(ex. no-reply@example.com)
Sending email address: mailgun@sandbox82f7e729ed934d1189bcc6bd32aaa977.mailgun.org
Where should abuse/contact emails go?:
(ex. yourpersonal@gmail.com)
Abuse/Contact email: r.tkach@timeweb.ru
What postgres user is this service using?
(ex. xsshunter)
Postgres username: xsshunter
What is the postgres user's password?
(ex. @!$%@^%UOFGJOEJG$)
Postgres password: [EXAMPLE_PASSWORD]
What is the postgres user's DB?
(ex. xsshunter)
Postgres DB: xsshunter
Generating cookie secret...
Minting new nginx configuration file...
Setup complete! Please now copy the 'default' file to /etc/nginx/sites-enabled/default
This can be done by running the following:
sudo cp default /etc/nginx/sites-enabled/default
Also, please ensure your wildcard SSL certificate and key are available at the following locations:
/etc/nginx/ssl/xsshunter.timeweb.ru.crt; # Wildcard SSL certificate
/etc/nginx/ssl/xsshunter.timeweb.ru.key; # Wildcard SSL key
Good luck hunting for XSS!
-mandatory
Sie sollten jetzt 2 neue Dateien in Ihrem xsshunter-Ordner haben:
- config.yaml (enthält API-Schlüssel und Anmeldeinformationen)
- Standard (enthält Nginx-Konfiguration)
NGINX-Konfiguration
Ändern Sie den Speicherort des SSL-Zertifikats
Wenn Sie Let's Encrypt wie ich verwenden, müssen Sie die Standardeinstellung ändern .
Damit die Konfiguration mit den Standardeinstellungen von Let's Encrypt funktioniert, müssen alle Einträge auskommentiert werden:
/etc/nginx/ssl/mydomain.com.crt; # Wildcard SSL certificate
/etc/nginx/ssl/mydomain.com.key; # Wildcard SSL key
und ersetzen durch
ssl_certificate /etc/letsencrypt/live/mydomain.com-0001/fullchain.pem ; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.com-0001/privkey.pem; # managed by Certbot
Hinweise:
1. Ersetzen Sie mydomain.com durch Ihren Domainnamen!
2. Alles nach dem # -Symbol ist ein Kommentar. Sie können sie löschen, wenn Sie möchten.
Ihre Standarddatei sollte jetzt folgendermaßen aussehen:
server {
# Redirect HTTP to www
listen 80;
server_name mydomain.com;
location / {
rewrite ^/(.*)$ https://www.mydomain.com/$1 permanent;
}
}
server {
# Redirect payloads to HTTPS
listen 80;
server_name *.mydomain.com;
proxy_set_header X-Forwarded-For $remote_addr;
return 307 https://$host$request_uri;
client_max_body_size 500M; # In case we have an extra large payload capture
}
server {
# Redirect HTTPS to www
listen 443;
ssl on;
# New conf
ssl_certificate /etc/letsencrypt/live/mydomain.com-0001/fullchain.pem; #
managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.com-0001/privkey.pem; #
managed by Certbot
# Original conf
#ssl_certificate /etc/nginx/ssl/mydomain.com.crt; # Wildcard SSL certificate
#ssl_certificate_key /etc/nginx/ssl/mydomain.com.key; # Wildcard SSL
certificate key
server_name mydomain.com;
location / {
rewrite ^/(.*)$ https://www.mydomain.com/$1 permanent;
}
}
server {
# API proxy
listen 443;
ssl on;
# New conf
ssl_certificate /etc/letsencrypt/live/mydomain.com-0001/fullchain.pem; #
managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.com-0001/privkey.pem; #
managed by Certbot
# Original conf
#ssl_certificate /etc/nginx/ssl/mydomain.com.crt; # Wildcard SSL certificate
#ssl_certificate_key /etc/nginx/ssl/mydomain.com.key; # Wildcard SSL
certificate key
server_name *.mydomain.com;
access_log /var/log/nginx/mydomain.com.vhost.access.log;
error_log /var/log/nginx/mydomain.com.vhost.error.log;
client_max_body_size 500M;
location / {
proxy_pass http://localhost:8888;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
# Redirect api to HTTPS
listen 80;
server_name api.mydomain.com; # Subdomain for API server
proxy_set_header X-Forwarded-For $remote_addr;
return 307 https://api.mydomain.com$request_uri;
client_max_body_size 500M; # In case we have an extra large payload capture
}
server {
# Redirect www to HTTPS
listen 80;
server_name www.mydomain.com;
location / {
rewrite ^/(.*)$ https://www.mydomain.com/$1 permanent;
}
}
server {
# GUI proxy
listen 443;
server_name www.mydomain.com;
client_max_body_size 500M;
ssl on;
# New conf
ssl_certificate /etc/letsencrypt/live/mydomain.com-0001/fullchain.pem; #
managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.com-0001/privkey.pem; #
managed by Certbot
# Original conf
#ssl_certificate /etc/nginx/ssl/mydomain.com.crt; # Wildcard SSL certificate
#ssl_certificate_key /etc/nginx/ssl/mydomain.com.key; # Wildcard SSL
certificate key
location / {
proxy_pass http://localhost:1234;
proxy_set_header Host $host;
}
}
Am Beispiel von VDS Timeweb
server {
# Redirect HTTP to www
listen 80;
server_name 372526-twosa.tmweb.ru;
location / {
rewrite ^/(.*)$ https://www.372526-twosa.tmweb.ru/$1 permanent;
}
}
server {
# Redirect payloads to HTTPS
listen 80;
server_name *.372526-twosa.tmweb.ru;
proxy_set_header X-Forwarded-For $remote_addr;
return 307 https://$host$request_uri;
client_max_body_size 500M; # In case we have an extra large payload capture
}
server {
# Redirect HTTPS to www
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/372526-twosa.tmweb.ru/fullchain.pem; # Wildcard SSL certificate
ssl_certificate_key /etc/letsencrypt/live/372526-twosa.tmweb.ru/privkey.pem; # Wildcard SSL certificate key
server_name 372526-twosa.tmweb.ru;
location / {
rewrite ^/(.*)$ https://www.372526-twosa.tmweb.ru/$1 permanent;
}
}
server {
# API proxy
listen 443;
ssl on;
ssl_certificate /etc/letsencrypt/live/372526-twosa.tmweb.ru/fullchain.pem; # Wildcard SSL certificate
ssl_certificate_key /etc/letsencrypt/live/372526-twosa.tmweb.ru/privkey.pem; # Wildcard SSL certificate key
server_name *.372526-twosa.tmweb.ru;
access_log /var/log/nginx/372526-twosa.tmweb.ru.vhost.access.log;
error_log /var/log/nginx/372526-twosa.tmweb.ru.vhost.error.log;
client_max_body_size 500M;
location / {#
proxy_pass http://localhost:8888;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
server {
# Redirect api to HTTPS
listen 80;
server_name api.372526-twosa.tmweb.ru; # Subdomain for API server
proxy_set_header X-Forwarded-For $remote_addr;
return 307 https://api.372526-twosa.tmweb.ru$request_uri;
client_max_body_size 500M; # In case we have an extra large payload capture
}
server {
# Redirect www to HTTPS
listen 80;
server_name www.372526-twosa.tmweb.ru;
location / {
rewrite ^/(.*)$ https://www.372526-twosa.tmweb.ru/$1 permanent;
}
}
server {
# GUI proxy
listen 443;
server_name www.372526-twosa.tmweb.ru;
client_max_body_size 500M;
ssl on;
ssl_certificate /etc/letsencrypt/live/372526-twosa.tmweb.ru/fullchain.pem; # Wildcard SSL certificate
ssl_certificate_key /etc/letsencrypt/live/372526-twosa.tmweb.ru/privkey.pem; # Wildcard SSL certificate key
location / {
proxy_pass http://localhost:1234;
proxy_set_header Host $host;
}
}
Wenden wir die NGINX-Konfiguration an
Der nächste Schritt besteht darin, die Datei in den Ordner nginx zu verschieben. Es wird empfohlen, Konfigurationsdateien im Ordner ... / sites-available zu haben und dann symbolische Links zu den Konfigurationen zu erstellen, die Sie für ... / sites-enabled verwenden . Wir werden genau das tun.
Ich benenne die Konfigurationsdatei so, dass aus dem Namen ersichtlich ist, zu welchem Dienst sie gehört.
So geht's!
# move file and give proper name
cp xsshunter/default /etc/nginx/sites-available/xsshunter-mydomain.com
# symlink the file to sites-enabled to make it active
ln -s /etc/nginx/sites-available/xsshunter-mydomain.com
/etc/nginx/sites-enabled/xsshunter-mydomain.com
# test for errors in the configuration
sudo nginx -t
# if no errors, restart nginx for changes to take effect
sudo systemctl restart nginx
Am Beispiel von VDS Timeweb
root@372526-twosa:~/xsshunter# cp default /etc/nginx/sites-available/372526-twosa.tmweb.ru
root@372526-twosa:~/xsshunter# ln /etc/nginx/sites-available/372526-twosa.tmweb.ru /etc/nginx/sites-enabled/372526-twosa.tmweb.ru
root@372526-twosa:~/xsshunter# nginx -t
root@372526-twosa:~/xsshunter# systemctl restart nginx
Wenn Sie Nginx noch nie zuvor gestartet haben, sollte der letzte Befehl lauten:
sudo systemctl start nginx
API-Server installieren
Erstens benötigt der API-Server auch bestimmte Abhängigkeiten.
Das Handbuch sagt, dass der folgende Befehl ausgeführt werden soll:
sudo apt-get install python-virtualenv python-dev libpq-dev libffi-dev
Am Beispiel von VDS Timeweb
root@372526-twosa:~/xsshunter# apt-get install python-virtualenv python-dev libpq-dev libffi-dev
, python-virtualenv pip.
Versuchen Sie es nochmal!
Leider konnte ich den Befehl virtualenv nicht ausführen , daher habe ich den API-Server mit installiert
pip install virtualenv
Problem gelöst, ich konnte weitermachen!
Gehen wir zum gewünschten Verzeichnis.
Sobald Sie sich im richtigen Verzeichnis befinden, müssen Sie eine virtuelle Umgebung erstellen.
So geht's:
# change folder - you know that already!
cd xsshunter/api
# find your Python2 executable path
which python2
# create a python2 virtual environment in the env folder
virtualenv -p MY/EXECUTABLE/PATH env
Am Beispiel von VDS Timeweb
root@372526-twosa:~/xsshunter# cd xsshunter/api
root@372526-twosa:~/xsshunter/api# which python2
/usr/bin/python2
root@372526-twosa:~/xsshunter/api# virtualenv -p /usr/bin/python2 env
Running virtualenv with interpreter /usr/bin/python2
New python executable in /root/xsshunter/api/env/bin/python2
Also creating executable in /root/xsshunter/api/env/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
Stellen Sie sicher, dass Sie MY / EXECUTABLE / PATH im letzten Befehl in die Ausgabe des Python2- Befehls ändern . Für mich ist dies: / usr / bin / python2 .
Nachdem Sie die virtuelle Umgebung erstellt haben, aktivieren Sie sie mit dem folgenden Befehl. Sie sollten eine Änderung in Ihrer Befehlszeile bemerken.
# activate environment
. env/bin/activate
Am Beispiel von VDS Timeweb
root@372526-twosa:~/xsshunter/api# . env/bin/activate
(env) root@372526-twosa:~/xsshunter/api# ls
apiserver.py env logs models probe.js requirements.txt templates
Es gibt auch Abhängigkeitsprobleme, da das Repository nicht aktiv verwaltet wird.
Daher müssen wir die folgenden Änderungen an der Datei vornehmen requirements.txt :
1. psycopg2 2.6.1 == => psycopg2 == 2.7.3.1
2. bcrypt 2.0.0 == => bcrypt == 3.1.7
Verwenden Sie Ihre bevorzugten Texteditor dafür. Ich benutze VIM.
Sobald dies erledigt ist, ist es Zeit, alle Abhängigkeiten zu installieren und den API-Server zu starten, um sicherzustellen, dass alles wie erwartet funktioniert. Lass es uns versuchen!
# install requirements
pip install -r requirements.txt
# run the API server
./apiserver.py
Am Beispiel von VDS Timeweb
(env) root@372526-twosa:~/xsshunter/api# pip install -r requirements.txt
(env) root@372526-twosa:~/xsshunter/api# ./apiserver.py
Der Installationsbefehl sollte die Daten ausgeben. Der API-Server sollte nichts ausgeben. Keine Auszahlung ist eine gute Nachricht!
Wir möchten noch eine Änderung vornehmen, bevor wir die Konfiguration des API-Servers abgeschlossen haben. Anfangs lauscht es auf der Schnittstelle 0.0.0.0 , aber wir haben über NGINX einen Proxy erstellt. Das heißt, es macht keinen Sinn. Wir werden den Server so konfigurieren, dass er localhost abhört . Dies vermeidet Verwirrung und Probleme.
Ändern Sie mit einem Texteditor die Zeile 684 in apiserver.py von
app.listen (8888) in app.listen (8888, "localhost") .
Vielen Dank an swarley7 für die Freigabe der Lösung in dieser Pull-Anfrage .
Endlich: Fehler, bei dem Uploads nicht wie erwartet funktionieren, wenn der Ordner / uploads nicht vorhanden ist. Dies wird von sampsonc in dieser Pull-Anfrage geteilt .
Lassen Sie uns einen Ordner erstellen und fortfahren!
# create uploads folder
mkdir xsshunter/api/uploads
Installieren des GUI-Servers
Dieser Prozess ist dem Prozess auf dem API-Server sehr ähnlich, nur einfacher.
Gehen Sie zum GUI-Ordner, erstellen Sie eine virtuelle Umgebung, aktivieren Sie sie und installieren Sie die Abhängigkeiten.
# change folder - you know that already!
cd xsshunter/gui
# find your Python2 executable path
which python2
# create a python2 virtual environment in the env folder
virtualenv -p MY/EXECUTABLE/PATH env
# activate environment
. env/bin/activate
# install requirements
pip install -r requirements.txt
# run the GUI server
./guiserver.py
Am Beispiel von VDS Timeweb
root@372526-twosa:~/xsshunter# cd xsshunter/gui
root@372526-twosa:~/xsshunter/gui# which python2
/usr/bin/python2
(env) root@372526-twosa:~/xsshunter/gui# virtualenv -p /usr/bin/python2 env
(env) root@372526-twosa:~/xsshunter/gui# . env/bin/activate
(env) root@372526-twosa:~/xsshunter/gui# pip install -r requirements.txt
(env) root@372526-twosa:~/xsshunter/gui# ./guiserver.py
Wieder das gleiche wie bei der Installation des API-Servers: Stellen
Sie sicher, dass Sie MY / EXECUTABLE / PATH im letzten Befehl in what python2 ändern. Für mich ist dies: / usr / bin / python2 .
Auch hier ist der Mangel an Ausgabe beim Ausführen von ./guiserver eine gute Nachricht.
Ebenso wie beim API-Server möchten wir alle Verbindungen über NGINX als Proxy verwenden, damit der Server die Schnittstelle 0.0.0.0 nicht abhören muss .
Ändern Sie mit einem Texteditor die Zeile 70 in guiserver.py von
app.listen (1234) in app.listen (1234, "localhost").
Letzter Schliff
Der erste Schritt besteht darin, beide Server zu starten. Der ursprüngliche Blog-Beitrag schlägt die Verwendung von tmux vor. Es ist nicht perfekt für die Produktion, aber wir sind Hacker, also lass es uns trotzdem tun! Wenn Sie einen stabileren Service wünschen, überlasse ich das Ihnen als Übung.
Hier erfahren Sie, wie Sie es mit tmux zum Laufen bringen. Wenn Sie Hilfe benötigen, gibt es hier einen tollen Spickzettel !
# start a session
tmux session -new xsshunter
# change to api directory
cd xsshunter/api
#run api server
./apiserver
# open new pane
[ctrl]+[b] -> [c]
# change to gui directory
cd xsshunter/gui
# run gui server
./guiserver
# detach from session
[ctrl]+[b] -> [d]
# extra: if you want to open the session again
tmux attach-session -t xsshunter
Und der Letzte!
Öffnen Sie Ihre Domain und sehen Sie, ob die xsshunter-Seite Sie begrüßt!
Es sollte genauso aussehen wie die erste Seite von xsshunter.com .
Passiert? Herzliche Glückwünsche!
Zeit, Bier ins Glas zu gießen!
Überprüfen Sie die Leistung
(https://www.372526-twosa.tmweb.ru/signup) .
www.372526-twosa.tmweb.ru/app Payload - . :
html- .
: js , , js_callback .
XSS Hunter:
:
It works! !
www.372526-twosa.tmweb.ru/app Payload - . :
"><script src=https://tw.372526-twosa.tmweb.ru></script>
html- .
: js , , js_callback .
XSS Hunter:
:
It works! !
: www.372526-twosa.tmweb.ru.
Wenn Sie Entourage noch nicht gesehen haben, können Sie jetzt beginnen!
Fazit
Ich mag es nicht, etwas als root oder als normaler Benutzer auszuführen. Um es als www-Daten auszuführen, habe ich das folgende Skript erstellt, um es ein wenig einfacher zu machen.
Ersetzen Sie apiserver.py durch guiserver.py, sodass Sie ein Skript pro Server haben. Ich würde mich freuen, wenn Sie diese Technik anwenden.
Shell-Skript zur Verwendung der virtuellen Umgebung und zum Starten des API-Servers:
#!/bin/sh
. env/bin/activate && python apiserver.py
Aus Sicherheitsgründen das Skript als WWW-Daten ausführen:
# execute script above as www-data user
sudo -u www-data ./run.sh
Erledigt!
Vielen Dank für Ihre Aufmerksamkeit. Hoffe es war hilfreich!