Для начального и глубокого освоения XSS атак с чего начать?

P

p0stman

Бодрый вечер, очень интересует тема xss уязвимостей, насколько я понял, для этого в изучении нужен в основном javascript или что то еще? Погуглив понял, что в основном все JS туторы созданы для фронт-енд(тот же UDEMY полон туторов для веба), может быть есть какая то особая прикладная область, что посоветуете гуру? Или может я вообще не в том направлении пошел.
Пока что вникаю в учебник Кантора по js, я в принципе и раньше пробовал его изучать, но потом забросил, сейчас снова хочу попытать сил.
 
P

p0stman

начни с этого

Благодарю за подсказку, дошел с помощью гугла до третьего уровня, просто тупо копипастя код туда сюда, не понимая как он работает, т.е.
без базовых знаний это не дает знаний.
Вот например на скрине снизу в подсказке пишется, что в функции window.location можно что то изменить и тем самым поломать что то, откуда мне это взять из каких источников? Наверное все же стоит пройти какой то фронт-ендовый курс или есть OWASP, но информация там дается видимо уже для знающих JS.
Что скажете?


2018-05-05 10_18_03-XSS game_ Level 3.png
 
  • Нравится
Реакции: Andhacker

Dr.Lafa

Green Team
30.12.2016
507
1 049
BIT
0
Благодарю за подсказку, дошел с помощью гугла до третьего уровня, просто тупо копипастя код туда сюда, не понимая как он работает, т.е.
без базовых знаний это не дает знаний.
Вот например на скрине снизу в подсказке пишется, что в функции window.location можно что то изменить и тем самым поломать что то, откуда мне это взять из каких источников? Наверное все же стоит пройти какой то фронт-ендовый курс или есть OWASP, но информация там дается видимо уже для знающих JS.
Что скажете?


Посмотреть вложение 18224
Не нужно тратить время на курсы по фронтенду, там вы вряд ли найдёте нужную информацию (если, конечно, не полный ноль. Но и в этом случае лучше почитать материалы по html и js). В интернете очень много информации именно о том, что такое XSS и о том, как и почему это работает.
 
  • Нравится
Реакции: Vertigo, G0p43R и Vander

G0p43R

Green Team
27.02.2018
125
167
BIT
0
Вообще по хорошему , можно поиграть на в Web-client. Там не так дают xss , как понимание , как взаимодействовать с клиентом. А так же можно посмотреть на и
 
  • Нравится
Реакции: p0stman, Vertigo и Dr.Lafa

Full-R

Заблокирован
06.09.2020
72
39
BIT
0
Половина XSS сдохла. Браузер заблокировал src: javascript: , но если вам интересно можете пореверсить мой фильтр HTML и многому научиться.

Вам будет полезно вот это(я кажется все предусмотрел, если найдете что добавить - пожалуйста пишите):

PHP:
    protected static function cleanTagInnerXSS( string $s ): string {

        // base64 injection prevention
        $st = self::escape( $s, 'tag' );

        return preg_replace([

                // JSON unicode
                '/\\\\u?{?([a-f0-9]{4,}?)}?/mi',                                                 // [1] unicode JSON clean

                // Script tag encoding mutation issue
                '/\¼\/?\w*\¾\w*/mi',                                                              // [2] mutation KOI-8
                '/\+ADw-\/?\w*\+AD4-\w*/mi',                                                     // [3] mutation old encodings

                // Malware payloads
                '/:?e[\s]*x[\s]*p[\s]*r[\s]*e[\s]*s[\s]*s[\s]*i[\s]*o[\s]*n[\s]*(:|;|,)?\w*/mi', // [4]  (:expression) evalution
                '/l[\s]*i[\s]*v[\s]*e[\s]*s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t[\s]*(:|;|,)?\w*/mi',     // [5]  (livescript:) evalution
                '/j[\s]*a[\s]*v[\s]*a[\s]*s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t[\s]*(:|;|,)?\w*/mi',      // [6]  (javascript:) evalution
                '/j[\s]*s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t[\s]*(:|;|,)?\w*/mi',                      // [7]  (jscript:) evalution
                '/b[\s]*e[\s]*h[\s]*a[\s]*v[\s]*i[\s]*o[\s]*r[\s]*(:|;|,)?\w*/mi',                 // [8]  (behavior:) evalution
                '/v[\s]*b[\s]*s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t[\s]*(:|;|,)?\w*/mi',                 // [9]  (vsbscript:) evalution
                '/v[\s]*b[\s]*s[\s]*(:|;|,)?\w*/mi',                                             // [10] (vbs:) evalution
                '/e[\s]*c[\s]*m[\s]*a[\s]*s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t*(:|;|,)?\w*/mi',         // [11] (ecmascript:) possible ES evalution
                '/b[\s]*i[\s]*n[\s]*d[\s]*i[\s]*n[\s]*g*(:|;|,)?\w*/mi',                         // [12] (-binding) payload
                '/\+\/v(8|9|\+|\/)?/mi',                                                         // [13] (UTF-7 mutation)
                '/\/*?%00*?\//m',                                                                 // [14] tag space evalution

                // base64 escaped restore
                '/_#_#_/mi',                                                                     // [15] base64 escaped marker cleanup

            ],

            // Replacements steps total :: 15
            ['&#x$1;', '', '', '', '', '', '', '', '', '', '', '', '', '', ''],

            str_ireplace(

                ['\u0', ':', '&tab;', '&newline;'],
                ['\0', ':', '', ''],

            // Unicode HEX prepare step
            self::hexToSymbols( $st ))

        );

    }

    protected static function cleanXSS( string $s ): string {

        // base64 injection prevention
        $st = self::escape( $s, 'attr' );

        return preg_replace([

                // JSON unicode
                '/\\\\u?{?([a-f0-9]{4,}?)}?/mi',                                                 // [1] unicode JSON clean

                // Data b64 safe
                '/\*\w*\*/mi',                                                                     // [2] unicode simple clean

                // Malware payloads
                '/:?e[\s]*x[\s]*p[\s]*r[\s]*e[\s]*s[\s]*s[\s]*i[\s]*o[\s]*n[\s]*(:|;|,)?\w*/mi', // [3]  (:expression) evalution
                '/l[\s]*i[\s]*v[\s]*e[\s]*s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t[\s]*(:|;|,)?\w*/mi',     // [4]  (livescript:) evalution
                '/j[\s]*s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t[\s]*(:|;|,)?\w*/mi',                      // [5]  (jscript:) evalution
                '/j[\s]*a[\s]*v[\s]*a[\s]*s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t[\s]*(:|;|,)?\w*/mi',      // [6]  (javascript:) evalution
                '/b[\s]*e[\s]*h[\s]*a[\s]*v[\s]*i[\s]*o[\s]*r[\s]*(:|;|,)?\w*/mi',                 // [7]  (behavior:) evalution
                '/v[\s]*b[\s]*s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t[\s]*(:|;|,)?\w*/mi',                 // [8]  (vsbscript:) evalution
                '/v[\s]*b[\s]*s[\s]*(:|;|,)?\w*/mi',                                             // [9]  (vbs:) evalution
                '/e[\s]*c[\s]*m[\s]*a[\s]*s[\s]*c[\s]*r[\s]*i[\s]*p[\s]*t*(:|;|,)?\w*/mi',         // [10] (ecmascript:) possible ES evalution
                '/b[\s]*i[\s]*n[\s]*d[\s]*i[\s]*n[\s]*g*(:|;|,)?\w*/mi',                         // [11] (-binding) payload
                '/\+\/v(8|9|\+|\/)?/mi',                                                         // [12] (UTF-7 mutation)

                // Some entities
                '/&{\w*}\w*/mi',                                                                 // [13] html entites clenup
                '/&#\d+;?/m',                                                                      // [14] html entites clenup

                // Broken string tag injections
                '/x0{0,5}?3c;?/mi',                                                                 // [15] < - symb
                '/x0{0,5}?60;?/mi',                                                                 // [16] ` - symb
                '/&lt;?/mi',                                                                     // [17] < - symb
                '/</m',                                                                          // [18] < - symb
                '/%3c/mi',                                                                         // [19] < - symb
                '/\/?>/mi',                                                                         // [20] /> - symbs

                // Script tag encoding mutation issue
                '/\¼\/?\w*\¾\w*/mi',                                                              // [21] mutation KOI-8
                '/\+ADw-\/?\w*\+AD4-\w*/mi',                                                     // [22] mutation old encodings

                // base64 escaped
                '/_#_#_/mi',                                                                     // [23] base64 escaped marker cleanup
               
            ],

            // Replacements steps :: 23
            ['&#x$1;', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''],

            str_ireplace(

                ['\u0', '&colon;', '&tab;', '&newline;'],
                ['\0', ':', '', ''],

            // U-HEX prepare step
            self::hexToSymbols( $st ))

            );

    }
 
Последнее редактирование:
  • Нравится
Реакции: explorer

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Бро, отличный фильтр. Может стоило функцию вместе с классом и примером фильтрации какой-нибудь нагрузки выложить? Например <SCRIPT/SRC=DATA:,%61%6c%65%72%74%28%31%29></SCRIPT> Так нагляднее получится. Зачем модификатор protected? Функция в фреймворке используется видимо?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!