2
2
Only exports find_hostname_in_userinput function
3
3
"""
4
4
5
- from typing import Optional , List , Tuple
5
+ from typing import Optional , List
6
6
7
7
from aikido_zen .helpers .get_port_from_url import get_port_from_url
8
8
from aikido_zen .helpers .try_parse_url import try_parse_url
9
+ from aikido_zen .vulnerabilities .ssrf .normalize_string_to_hostname_and_port import (
10
+ normalize_string_to_hostname_and_port ,
11
+ )
9
12
10
13
11
14
def find_hostname_in_userinput (
12
- user_input : str , normalized_hostname : str , port : Optional [int ] = None
15
+ user_input : str , hostname_variants : List [ str ] , port : Optional [int ] = None
13
16
):
14
17
"""
15
18
Returns true if the hostname is in userinput
16
19
"""
17
- normalized_hostname = normalized_hostname .lower ()
18
20
if len (user_input ) <= 1 :
19
21
return False
20
22
21
- user_input_variants = [user_input , f"http://{ user_input } " , f"https://{ user_input } " ]
22
- user_input_normalized_variants = normalize_raw_url_variants (user_input_variants )
23
+ user_input_variants = normalize_string_to_hostname_and_port (user_input )
23
24
24
- for user_input_hostname , user_input_port in user_input_normalized_variants :
25
- hostname_variants = [normalized_hostname , f"[{ normalized_hostname } ]" ]
25
+ for user_input_hostname , user_input_port in user_input_variants :
26
26
if user_input_hostname in hostname_variants :
27
27
# We were unable to retrieve the port from the URL, likely because it contains an invalid port.
28
28
# Let's assume we have found the hostname in the user input, even though it doesn't match on port.
@@ -36,17 +36,3 @@ def find_hostname_in_userinput(
36
36
return True
37
37
38
38
return False
39
-
40
-
41
- def normalize_raw_url_variants (
42
- url_variants : List [str ],
43
- ) -> List [Tuple [str , Optional [int ]]]:
44
- normalized_variants = []
45
- for variant in url_variants :
46
- # Try parse the variant as an url,
47
- user_input_url = try_parse_url (variant )
48
- if not user_input_url or not user_input_url .hostname :
49
- continue
50
- port = get_port_from_url (user_input_url .geturl ())
51
- normalized_variants .append ((user_input_url .hostname .lower (), port ))
52
- return normalized_variants
0 commit comments