Field Fuzzers
CATS has currently 100 registered Field Fuzzers. The names below match the
current output of cats list --fuzzers.
AbugidasInStringFields- iterate through each field and send values containing abugidas charsAdditionalPropertiesMassAssignmentFields- iterate through each object without additional properties field and replace it with object containing unexpected extra properties valuesBidirectionalOverrideFields- iterate through each string field and replace it with bidirectional-override characters valuesCommandInjectionInStringFields- iterate through each string field and send OS command injection payloads to detect command injection vulnerabilitiesDateRangeInversion- send requests where the start date field (e.g., startDate, checkIn) is set after the end date field (e.g., endDate, checkOut) to test temporal validationDecimalFieldsLeftBoundary- iterate through each Number field (either float or double) and send requests with outside the range values on the left side in the targeted fieldDecimalFieldsRightBoundary- iterate through each Number field (either float or double) and send requests with outside the range values on the right side in the targeted fieldDecimalNumbersInIntegerFields- iterate through each Integer field and send decimal valuesDefaultValuesInFields- iterate through each field with default values defined and send a happy flow requestDuplicateKeysFields- duplicates each JSON key to detect first-wins/last-wins parsing ambiguities per RFC 8259EmptyStringsInFields- iterate through each field and send requests with empty String values in the targeted fieldEnumCaseVariantFields- iterate through each enum field and send case-variant values to test case sensitivity of enum handlingExamplesFields- send a request for every unique exampleExtremeNegativeNumbersInDecimalFields- iterate through each Number field and send requests with the lowest value possible in the targeted fieldExtremeNegativeNumbersInIntegerFields- iterate through each Integer field and send requests with the lowest value possible in the targeted fieldExtremePositiveNumbersInDecimalFields- iterate through each Number field and send requests with the highest value possible in the targeted fieldExtremePositiveNumbersInIntegerFields- iterate through each Integer field and send requests with the highest value possible in the targeted fieldFullwidthBracketsFields- insert fullwidth '<' and '>' to test for markup filter bypassHangulFillerFields- inject Hangul filler characters to test for hidden-input handlingHomoglyphEnumFields- iterate through each enum value field and replace it with homoglyph-altered value valuesInsertWhitespacesInFieldNamesField- iterates through each request field name and insert random whitespacesIntegerFieldsLeftBoundary- iterate through each Integer field and send requests with outside the range values on the left side in the targeted fieldIntegerFieldsRightBoundary- iterate through each Integer field and send requests with outside the range values on the right side in the targeted fieldInvalidValuesInEnumsFields- iterate through each ENUM field and send invalid valuesInvalidReferencesFields- iterate through each path fuzz the path parameters with invalid referencesIterateThroughEnumValuesFields- iterate through each enum field and send happy flow requests iterating through each possible enum valuesLeadingWhitespacesInFields- iterate through each field and send requests with Unicode whitespaces and invisible separators prefixing the current value in the targeted fieldLeadingControlCharsInFields- iterate through each field and send requests with Unicode control chars prefixing the current value in the targeted fieldLeadingSingleCodePointEmojisInFields- iterate through each field and send values prefixed with single code points emojisLeadingMultiCodePointEmojisInFields- iterate through each field and send values prefixed with multi code points emojisLowercaseExpandingBytesInStringFields- iterate to string fields and send values that expand the byte representation when lowercasedLowercaseExpandingLengthInStringFields- iterate to string fields and send values that expand their length when lowercasedMassAssignment- adds undeclared fields to the request payload to detect Mass Assignment vulnerabilities where APIs blindly bind user inputMaxLengthExactValuesInStringFields- iterate through each string fields that have maxLength declared and send requests with values matching the maxLength size/value in the targeted fieldMaximumExactNumbersInNumericFields- iterate through each integer fields that have maximum declared and send requests with values matching the maximum size/value in the targeted fieldMinGreaterThanMaxFields- sends a request where the lower-bound field (e.g., minAmount) is set greater than the upper-bound field (e.g., maxAmount)MinLengthExactValuesInStringFields- iterate through each string fields that have minLength declared and send requests with values matching the minLength size/value in the targeted fieldMinimumExactNumbersInNumericFields- iterate through each number fields that have minimum declared and send requests with values matching the minimum size/value in the targeted fieldNewFields- send a 'happy' flow request and add a new field inside the request called 'catsFuzzyField'NoSqlInjectionInStringFields- iterate through each string field and send NoSQL injection payloads to detect NoSQL injection vulnerabilitiesNullValuesInFields- iterate through each field and send requests with null values in the targeted fieldOnlyControlCharsInFields- iterate through each field and send values with control chars onlyOnlyWhitespacesInFields- iterate through each field and send values with unicode separators onlyOnlySingleCodePointEmojisInFields- iterate through each field and send values with single code point emojis onlyOnlyMultiCodePointEmojisInFields- iterate through each field and send values with multi code point emojis onlyOverflowArraySizeFields- iterate through each array field and replace it with overflow array valuesOverflowMapSizeFields- iterate through each dictionary/hashmap field and replace it with overflow dictionary/hashmap valuesRandomStringsInBooleanFields- iterate through each Boolean field and send random stringsRemoveFields- iterate through each request fields and remove certain fields according to the supplied 'fieldsFuzzingStrategy'ReplaceArraysWithPrimitivesFields- iterate through each array field and replace it with primitive valuesReplaceArraysWithSimpleObjectsFields- iterate through each array field and replace it with simple object valuesReplaceObjectsWithArraysFields- iterate through each object field and replace it with array valuesReplaceObjectsWithPrimitivesFields- iterate through each non-primitive field and replace it with primitive valuesReplacePrimitivesWithArraysFields- iterate through each primitive field and replace it with array valuesReplacePrimitivesWithObjectsFields- iterate through each primitive field and replace it with object valuesSSRFInUrlFields- iterate through URL-type fields and send SSRF payloads to detect Server-Side Request Forgery vulnerabilitiesSqlInjectionInStringFields- iterate through each string field and send SQL injection payloads to detect SQL injection vulnerabilitiesStringFieldsLeftBoundary- iterate through each String field and send requests with outside the range values on the left side in the targeted fieldStringFieldsRightBoundary- iterate through each String field and send requests with outside the range values on the right side in the targeted fieldStringFormatAlmostValidValues- iterate through each String field and send almost-valid format valuesStringFormatTotallyWrongValues- iterate through each String field and send totally invalid format valuesStringsInNumericFields- iterate through each Integer and Number field and send requests having thefuzzstring value in the targeted fieldSwapDiscriminatorValuesFields- iterate through each discriminator field and replace it with swapped values valuesTemporalLogicFields- sends semantically invalid date values (e.g., startDate after endDate, expired tokens, future birth dates) to verify if the backend enforces logical date constraintsTrailingWhitespacesInFields- iterate through each field and send values trailed with Unicode whitespacesTrailingControlCharsInFields- iterate through each field and send values trailed with Unicode control charsTrailingSingleCodePointEmojisInFields- iterate through each field and send values trailed with single code point emojisTrailingMultiCodePointEmojisInFields- iterate through each field and send values trailed with multi code point emojisUppercaseExpandingBytesInStringFields- iterate to string fields and send values that expand the byte representation when uppercasedUppercaseExpandingLengthInStringFields- iterate to string fields and send values that expand their length when uppercasedUserDictionaryFields- iterates through each request fields and sends values from the user supplied dictionaryVeryLargeStringsInFields- iterate through each String field and send requests with very large values (40000 characters) in the targeted fieldVeryLargeDecimalsInNumericFields- iterate through each numeric field and send requests with very large numbers (40000 characters) in the targeted fieldVeryLargeIntegersInNumericFields- iterate through each numeric field and send requests with very large numbers (40000 characters) in the targeted fieldVeryLargeUnicodeStringsInFields- iterate through each field and send requests with very large random unicode values in the targeted fieldWithinControlCharsInStringFields- iterate through each field and send values containing unicode control charsWithinSingleCodePointEmojisInStringFields- iterate through each field and send values containing single code point emojisWithinMultiCodePointEmojisInStringFields- iterate through each field and send values containing multi code point emojisXssInjectionInStringFields- iterate through each string field and send XSS payloads to detect Cross-Site Scripting vulnerabilitiesZalgoTextInFields- iterate through each field and send values containing zalgo textZeroWidthCharsInNamesFields- iterate through each field and insert zero-width characters in the field namesZeroWidthCharsInValuesFields- iterate through each field and send values containing zero-width characters
Type-coercion fuzzers
These fuzzers send values encoded as a different type to check whether the
service or its framework silently coerces input. They expect 4XX by default;
use --no-strictTypes when the service intentionally accepts the coercion.
BooleanStringInBooleanFields- send boolean values encoded as stringsBooleanValuesInStringFields- send boolean values to string fieldsEnumNumericOrdinalFields- send numeric enum ordinals to enum fieldsEpochNumberInDateTimeFields- send epoch numbers to date-time fieldsLeadingZerosInNumericFields- send numeric values with leading zerosNumericBooleansInBooleanFields- send numeric boolean valuesNumericStringsInNumericFields- send numeric values encoded as stringsNumericValuesInStringFields- send numeric values to string fieldsScientificNotationStringsInDecimalFields- send scientific-notation numbers as stringsSingleElementArrayToScalarFields- send primitive values wrapped in a single-element arrayWhitespacePaddedNumericFields- send numeric values padded with whitespace
Additional field fuzzers
DuplicateItemsInUniqueArraysFields- send duplicate items in arrays declared withuniqueItems: trueFreeFormArrayItemsFields- send hostile values in arrays whose items are unconstrainedFreeFormObjectFields- send hostile keys and values in objects with unrestrictedadditionalPropertiesOnlyRequiredFields- send requests containing only the fields marked as requiredSstiInjectionInStringFields- send server-side template injection payloads to string fieldsXxeInjectionInStringFields- send XML External Entity payloads to string fields
You can run only these Fuzzers by supplying the --checkFields argument.
📄️ Type-Coercion Fuzzers
Fuzzers that test implicit type conversion
📄️ Free-Form Fuzzers
Fuzz unconstrained OpenAPI arrays and objects
📄️ DuplicateItemsInUniqueArraysFields
Detect duplicate values in unique arrays
📄️ OnlyRequiredFields
Test requests containing only required fields
📄️ Additional Injection Fuzzers
Additional server-side injection fuzzers
📄️ Abugidas In Strings
This Fuzzer has 2 flavours depending on the --sanitizationStrategy.
📄️ Additional Properties Mass Assignment Fields Fuzzer
| Item | Description |
📄️ Bidirectional Override Fields Fuzzer
| Item | Description |
📄️ Command Injection in String Fields Fuzzer
| Item | Description |
📄️ Date Range Inversion Fuzzer
| Item | Description |
📄️ Decimal Fields Left Boundary
| Item | Description |
📄️ Decimal Fields Right Boundary
| Item | Description |
📄️ Decimal Numbers In Integers
| Item | Description |
📄️ Default Values
| Item | Description |
📄️ Duplicate Keys Fields Fuzzer
| Item | Description |
📄️ Empty Strings
| Item | Description |
📄️ Enum Case Variant Fields Fuzzer
| Item | Description |
📄️ Examples
| Item | Description |
📄️ Extreme Negative Numbers In Decimals
| Item | Description |
📄️ Extreme Negative Numbers In Integers
| Item | Description |
📄️ Extreme Positive Numbers In Decimals
| Item | Description |
📄️ Extreme Positive Numbers In Integers
| Item | Description |
📄️ Fullwidth Brackets Fields Fuzzer
| Item | Description |
📄️ Hangul Filler Characters in Field Values
This fuzzer has two flavours, depending on the configured --sanitizationStrategy.
📄️ Homoglyph Enum Fields Fuzzer
| Item | Description |
📄️ InsertWhitespacesInFieldNamesField
| Item | Description |
📄️ Integer Fields Left Boundary
| Item | Description |
📄️ Integer Fields Right Boundary
| Item | Description |
📄️ Invalid References
| Item | Description |
📄️ Invalid Values In Enums
| Item | Description |
📄️ Iterate Through Enum Values
| Item | Description |
📄️ Leading Control Characters
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Leading Multi Code Point Emojis
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Leading Single Code Point Emojis
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Leading Whitespaces
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Lowercase Expanding Bytes in String Fields
| Item | Description |
📄️ Lowercase Expanding Length in String Fields
| Item | Description |
📄️ Mass Assignment Fuzzer
| Item | Description |
📄️ Max Length Exact Values In Strings
| Item | Description |
📄️ Maximum Exact Values In Numbers
| Item | Description |
📄️ Min Greater Than Max Fields Fuzzer
| Item | Description |
📄️ Min Length Exact Values In Strings
| Item | Description |
📄️ Minimum Exact Values In Numbers
| Item | Description |
📄️ New Fields
| Item | Description |
📄️ NoSQL Injection in String Fields Fuzzer
| Item | Description |
📄️ Null Values
| Item | Description |
📄️ Only Control Characters
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Only Multi Code Point Emojis
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Only Single Code Point Emojis
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Only Whitespaces
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Overflow Array Size
| Item | Description |
📄️ Overflow Map Size
| Item | Description |
📄️ Prefix Numbers With Zero Fields Fuzzer
| Item | Description |
📄️ Random Strings In Booleans
| Item | Description |
📄️ Remove Fields
| Item | Description |
📄️ Replace Arrays With Primitives
| Item | Description |
📄️ Replace Arrays With Simple Objects
| Item | Description |
📄️ Replace Objects With Arrays
| Item | Description |
📄️ Replace Objects With Primitives
| Item | Description |
📄️ Replace Primitives With Arrays
| Item | Description |
📄️ Replace Primitives With Objects
| Item | Description |
📄️ SQL Injection in String Fields Fuzzer
| Item | Description |
📄️ SSRF in URL Fields Fuzzer
| Item | Description |
📄️ string-format-almost-valid
Run cats list --formats for a full list of supported formats.
📄️ string-format-wrong-values
Run cats list --formats for a full list of supported formats.
📄️ String Fields Left Boundary
| Item | Description |
📄️ String Fields Right Boundary
| Item | Description |
📄️ Strings in Numbers
| Item | Description |
📄️ Swap Discriminator Values Fields Fuzzer
| Item | Description |
📄️ Temporal Logic Fields Fuzzer
| Item | Description |
📄️ Trailing Control Characters
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Trailing Multi Code Point Emojis
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Trailing Single Code Point Emojis
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Trailing Whitespaces
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Uppercase Expanding Bytes in String Fields
| Item | Description |
📄️ Uppercase Expanding Length in String Fields
| Item | Description |
📄️ Very Large Decimals In Numbers
| Item | Description |
📄️ Very Large Integers In Numbers
| Item | Description |
📄️ Very Large Strings
| Item | Description |
📄️ Very Large Unicode Strings
| Item | Description |
📄️ Within Control Characters
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Within Multi Code Point Emojis
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Within Single Code Point Emojis
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ Within Whitespaces
This Fuzzer has 2 flavours depending on the --edgeSpacesStrategy.
📄️ XSS Injection in String Fields Fuzzer
| Item | Description |
📄️ Zalgo Text
This Fuzzer has 2 flavours depending on the --sanitizationStrategy.
📄️ Zero-Width Characters in Field Names
| Item | Description |
📄️ Zero-Width Characters in Field Values
This fuzzer has two flavours, depending on the configured --sanitizationStrategy.