katnip.legos.url module¶
URL legos, based on RFC 1738 and others this module containes a basic URL lego, as well as the following specific scheme: HTTP, HTTPS, FTP, FTPS
Todo
URL fragments
-
class
katnip.legos.url.
DecimalNumber
(value, num_bits=64, signed=False, fuzzable=True, name=None)¶ Bases:
kitty.model.low_level.container.OneOf
Decimal number fuzzing. It’s main strategy is to fuzz both values (integer vulnerabilities) and format (string vulnerabilities).
-
__init__
(value, num_bits=64, signed=False, fuzzable=True, name=None)¶ Parameters: - value – default integer value
- num_bits – number of bit in the integer (default: 64)
- signed – can the value be negative (default: False)
- fuzzable – should fuzz the container (default: True)
- name – name of container (default: None)
-
-
class
katnip.legos.url.
EmailAddress
(username, hostname, fuzz_delim=True, fuzzable=True, name=None)¶ Bases:
kitty.model.low_level.container.Container
Container to fuzz email address
-
__init__
(username, hostname, fuzz_delim=True, fuzzable=True, name=None)¶ Parameters: - username – email username
- hostname – email hostname
- fuzz_delim – should fuzz the delimiter (default: True)
- fuzzable – is the container fuzzable (default: True)
- name – name of the container (default: None)
-
classmethod
from_string
(the_str, fuzz_delims=True, fuzzable=True, name=None)¶
-
-
class
katnip.legos.url.
EmailUrl
(email, scheme='mailto', fuzz_scheme=True, fuzz_user=True, fuzz_host=True, fuzz_delim=True, fuzzable=True, name=None)¶ Bases:
katnip.legos.url.Url
-
__init__
(email, scheme='mailto', fuzz_scheme=True, fuzz_user=True, fuzz_host=True, fuzz_delim=True, fuzzable=True, name=None)¶ Parameters: - email (
EmailAddress
) – the email address - scheme – URL scheme (default: ‘mailto’)
- fuzz_scheme – should fuzz the URL scheme (default: True)
- fuzz_user – should fuzz the username (default: True)
- fuzz_host – should fuzz the host (default: True)
- fuzz_delim – should fuzz the delimiter (default: True)
- fuzzable – is the container fuzzable (default: True)
- name – name of the container (default: None)
- email (
-
classmethod
from_string
(the_url, fuzz_delims=True, fuzzable=True, name=None)¶
-
-
class
katnip.legos.url.
FType
(the_type, fuzz_delims=True, fuzzable=True, name=None)¶ Bases:
kitty.model.low_level.container.Container
Container to fuzz the FTP Type of FTP URL
ftptype = "A" | "I" | "D" | "a" | "i" | "d"
-
__init__
(the_type, fuzz_delims=True, fuzzable=True, name=None)¶ Parameters: - the_type (str) – the FTP type
- fuzz_delims – should fuzz delimiters (default: True)
- fuzzable – is the container fuzzable (default: True)
- name – name of the container (default: None)
-
-
class
katnip.legos.url.
FtpUrl
(scheme='ftp', login=None, hostport=None, path=None, ftype=None, fuzz_scheme=True, fuzz_delims=True, fuzzable=True, name=None)¶ Bases:
katnip.legos.url.Url
Container to fuzz FTP URLs
ftpurl = "ftp://" login [ "/" fpath [ ";type=" ftptype ]] fpath = fsegment *[ "/" fsegment ] fsegment = *[ uchar | "?" | ":" | "@" | "&" | "=" ] ftptype -> see FType
-
__init__
(scheme='ftp', login=None, hostport=None, path=None, ftype=None, fuzz_scheme=True, fuzz_delims=True, fuzzable=True, name=None)¶ Parameters: - scheme – URL scheme name (default: ‘ftp’)
- login (instance of
BaseField
recommend usingLogin
) – the login information (default: None) - hostport (
katnip.legos.url.HostPort
object (default: None)) – FTP host and port - path (
katnip.legos.url.Path
object (default: None)) – file path - ftype (
katnip.legos.url.FType
object (default: None)) – FTP type - fuzz_scheme – should fuzz the URL scheme (default: True)
- fuzz_delims – should fuzz the delimiters (default: True)
- fuzzable – is the container fuzzable (default: True)
- name – name of the container (default: None)
-
classmethod
from_string
(the_url, fuzz_delims=True, fuzzable=True, name=None)¶ Create an FtpUrl Lego from string
Parameters: - the_url – the url string
- fuzz_delims – should fuzz delimiters (default: True)
- fuzzable – is the container fuzzable (default: True)
- name – name of the container (default: None)
-
-
class
katnip.legos.url.
HostName
(host='', fuzz_delims=False, fuzzable=True, name=None)¶ Bases:
kitty.model.low_level.container.Container
Container to fuzz the hostname
host = hostname | hostnumber hostname = *[ domainlabel "." ] toplabel
-
__init__
(host='', fuzz_delims=False, fuzzable=True, name=None)¶ Parameters: - host (str) – hostname (default: ‘’)
- fuzz_delims – should fuzz the delimiters (default: False)
- fuzzable – should fuzz the container (default: True)
- name – name of container (default: None)
-
-
class
katnip.legos.url.
HostPort
(host, port=None, fuzz_host=True, fuzz_port=True, fuzz_delim=True, fuzzable=True, name=None)¶ Bases:
kitty.model.low_level.container.Container
Container for fuzzing the host/port of the URL.
hostport = host [ ":" port ] port = digits
-
__init__
(host, port=None, fuzz_host=True, fuzz_port=True, fuzz_delim=True, fuzzable=True, name=None)¶ Parameters: - host (str or instance of
BaseField
recommend usingHostName
) – hostname - port – port number (default: None)
- fuzz_host – should fuzz the hostname (default: True)
- fuzz_port – should fuzz the port (default: True)
- fuzz_delim – should fuzz the delimiter (default: True)
- fuzzable – should fuzz the container (default: True)
- name – name of container (default: None)
- host (str or instance of
-
-
class
katnip.legos.url.
HttpUrl
(scheme='http', login=None, hostport=None, path=None, search=None, fuzz_scheme=True, fuzz_delims=True, fuzzable=True, name=None)¶ Bases:
katnip.legos.url.Url
Container to fuzz Http(s) URL
httpurl = "http://" hostport [ "/" hpath [ "?" search ]] hpath = hsegment *[ "/" hsegment ] hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ] search = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
-
__init__
(scheme='http', login=None, hostport=None, path=None, search=None, fuzz_scheme=True, fuzz_delims=True, fuzzable=True, name=None)¶ Parameters: - scheme – URL scheme name (default: ‘http’)
- login (instance of
BaseField
recommend usingLogin
) – the login information (default: None) - hostport –
katnip.legos.url.HostPort
object, must be set (default: None) - path – Path object (default: None)
- search – Search object (default: None)
- fuzz_scheme – should fuzz the URL scheme (default: True)
- fuzz_delims – should fuzz the delimiters (default: True)
- fuzzable – is the container fuzzable (default: True)
- name – name of the container (default: None)
-
classmethod
from_string
(the_url, fuzz_delims=True, fuzzable=True, name=None)¶ Create an HttpUrl Lego from string
Parameters: - the_url – the url string
- fuzz_delims – should fuzz delimiters (default: True)
- fuzzable – is the container fuzzable (default: True)
- name – name of the container (default: None)
-
-
class
katnip.legos.url.
IpUrl
(scheme, login, url_path=None, fuzz_scheme=True, fuzz_login=True, fuzz_delims=True, fuzzable=True, name=None)¶ Bases:
katnip.legos.url.Url
IP-based URL
ip-schemepart = "//" login [ "/" urlpath ] login -> see Login class alphadigit = alpha | digit hostnumber = digits "." digits "." digits "." digits user = *[ uchar | ";" | "?" | "&" | "=" ] password = *[ uchar | ";" | "?" | "&" | "=" ] urlpath = *xchar ; depends on protocol see section 3.1
-
__init__
(scheme, login, url_path=None, fuzz_scheme=True, fuzz_login=True, fuzz_delims=True, fuzzable=True, name=None)¶ Parameters: - scheme (str or instance of
BaseField
) – url scheme - login (str or instance of
BaseField
recommend usingLogin
) – the login information - url_path – the url path (default: None)
- fuzz_scheme – should fuzz scheme (default: True)
- fuzz_login – should fuzz login (default: True)
- fuzz_delims – should fuzz delimiters (default: True)
- fuzzable – should fuzz the container (default: True)
- name – name of container (default: None)
- scheme (str or instance of
-
-
class
katnip.legos.url.
Login
(username=None, password=None, fuzz_username=True, fuzz_password=True, fuzz_delims=True, fuzzable=True, name=None)¶ Bases:
kitty.model.low_level.container.Container
Container to fuzz the login part of the URL
login = [ user [ ":" password ] "@" ]
-
__init__
(username=None, password=None, fuzz_username=True, fuzz_password=True, fuzz_delims=True, fuzzable=True, name=None)¶ Parameters: - username – user name (default: None)
- password – password (default: None)
- fuzz_username – should fuzz username (default: True)
- fuzz_password – should fuzz password (default: True)
- fuzz_delims – should fuzz delimiters (default: True)
- fuzzable – should fuzz the container (default: True)
- name – name of container (default: None)
-
-
class
katnip.legos.url.
Path
(path=None, path_delim='/', fuzz_delims=True, fuzzable=True, name=None)¶ Bases:
kitty.model.low_level.container.Container
Container to fuzz the path of the URL
-
__init__
(path=None, path_delim='/', fuzz_delims=True, fuzzable=True, name=None)¶ Parameters: - path (str) – path string
- path_delim – delimiter in the path str
- fuzz_delims – should fuzz the delimiters (default: False)
- name – name of container (default: None)
- fuzzable – should fuzz the container (default: True)
-
-
class
katnip.legos.url.
Search
(search='', fuzz_delims=False, fuzzable=True, name=None)¶ Bases:
kitty.model.low_level.container.Container
Container to fuzz the search part of the URL
Todo
real implementation (parse search string etc.)
-
__init__
(search='', fuzz_delims=False, fuzzable=True, name=None)¶ Parameters: - search – search string (default: ‘’)
- fuzz_delims – should fuzz the delimiters (default: False)
- name – name of container (default: None)
- fuzzable – should fuzz the container (default: True)
-
-
class
katnip.legos.url.
Url
(scheme, parts, fuzz_scheme=True, fuzz_parts=True, fuzz_delim=True, fuzzable=True, name=None)¶ Bases:
kitty.model.low_level.container.Container
Base container for fuzzing URLs.
genericurl = scheme ":" schemepart
-
__init__
(scheme, parts, fuzz_scheme=True, fuzz_parts=True, fuzz_delim=True, fuzzable=True, name=None)¶ Parameters: - scheme (str or instance of
BaseField
) – url scheme - parts (str or instance of
BaseField
) – url parts (i.e. content) - fuzz_scheme – should fuzz scheme (default: True)
- fuzz_parts – should fuzz parts (default: True)
- fuzz_delim – should fuzz delimiters (default: True)
- fuzzable – should fuzz the container (default: True)
- name – name of container (default: None)
- scheme (str or instance of
-
-
katnip.legos.url.
url_from_string
(url, fuzz_delims=True, fuzzable=True, name=None)¶ Create a URL from string, only URLs with supported schemes will result in a lego. In the rest of the cases, an exception will be raised.
Parameters: - url – the URL string
- fuzz_delims – should fuzz delimiters (default: True)
- fuzzable – should the resulted container be fuzzable (default: True)
- name – name of the resulted container (default: None)