Reflected cross-site scripting (XSS) arises when an application receives data in an HTTP request, then includes that data in its response in an unsafe way.
Applications use a range of processing and input validation methods to protect against common XSS payloads. You can use Burp Intruder to enumerate tags and attributes that are permitted by the application. This enables you to craft an XSS payload that will be executed by the application, and is a useful next step if your attempts to test using proof-of-concept payloads were not successful.
Identify a request / response pair with reflected input. For more information, see Identifying reflected input.
You can follow the processes below using the lab Reflected XSS into HTML context with most tags and attributes blocked.
Identify whether any tags are permitted:
<>.
Click inside the angle brackets, then click Add § to add a payload position.
200 status code. This indicates that the tag is permitted. If a tag is filtered out, it has a 400 status code instead.
Identify whether any attributes are permitted:
In the Intruder tab, update the payload position. Add a tag that you enumerated in the previous step, click Add § to add a payload position to test different attributes.
200 status code. This indicates that an attribute is permitted.
You can use the permitted tags and attributes that you identified to construct an attack string. For more information, see Testing for reflected XSS manually.