AI prompts
base on Burp plugin able to find reflected XSS on page in real-time while browsing on site # reflector [<img src="https://github.com/elkokc/reflector/blob/master/screenshot/release-v2.0-blue.svg">](https://github.com/elkokc/reflector/releases/tag/2.1)
# Description
Burp Suite extension is able to find reflected XSS on page in real-time while browsing on web-site and include some features as:
* Highlighting of reflection in the response tab.
* Test which symbols is allowed in this reflection.
* Analyze of reflection context.
* Content-Type whitelist.
# How to use
After plugin install you just need to start work with the tested web-application. Every time when reflection is found, reflector defines severity and generates burp issue.
![reflector usage](https://github.com/elkokc/reflector/blob/master/screenshot/reflector_demo1.gif)
Each burp issue includes detailed info about reflected parameter, such as:
* Symbols that allowed in this reflection.
* Highlighting of reflection value in response.
* Reflection context analyze.
# Allowed symbols analyse
![reflector usage](https://github.com/elkokc/reflector/blob/master/screenshot/symbols_analyse.png)
When the reflection is found and option "Aggressive mode" is activated, the reflector will check which of special-symbols are displayed on this page from vulnerable parameters. For this action, reflector compose additional requests for each reflected parameter. In example, while we were working with elkokc.ml website reflector are generated issue with a detailed information about reflection. There are 3 reflection for "search" parameter and each of them pass special symbols. Because of the possibility of displaying special characters issue severity is marked as high. Every time when reflection is found reflector define severity and generate burp issue.
# Context analyse
In the "Check context" mode reflector it's not only show special characters that are reflected to the page, but also figure out a character that allows to break the syntax in the page code. In example you may see server response by reflector extension. Parameter "search" was send with a payload - p@y<"'p@y. As a result, it was reflected a few times in a different contexts.
* reflection with next characters - ',", < and the double quote allow to exit from this context and write HTML code.
* reflection with next characters - ", < and the bracket allow to inject HTML-tags.
* reflection with next characters - ',", < and the single quote allow to exit from js variable context and write malicious code.
![reflector usage](https://github.com/elkokc/reflector/blob/master/screenshot/aggressivemode_context.png)
In the issue information it's marked as:
* Context char - character that allows to breake the syntax.
* Other chars - other chars that are reflected without context.
![reflector usage](https://github.com/elkokc/reflector/blob/master/screenshot/aggressivemode_context_burp.png)
# Reflection navigation
Navigation by arrow buttons in the response tab.
![reflector usage](https://github.com/elkokc/reflector/blob/master/screenshot/navigation.gif)
# Settings
* Scope only - allow reflector to work only with a scope added websites.
* Agressive mode - reflector generates additional request with a test payload .
* Check context - activate check context mode.
Moreover you can manage content-types whitelist with which reflector plugin should work. But if you will use another types except text/html, this can lead to slowdowns in work.
![reflector usage](https://github.com/elkokc/reflector/blob/master/screenshot/settings.png)
# How to compile
Compiled by jdk 1.7
Example:
* javac.exe -d build src/burp/*.java
* jar.exe cf plugin.jar -C build burp
# Authors
* Shvetsov Alexandr (GitHub: ![shvetsovalex](https://github.com/shvetsovalex))
* Dimitrenko Egor (GitHub: ![elkokc](https://github.com/elkokc))
", Assign "at most 3 tags" to the expected json: {"id":"10701","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"