MCPcopy Create free account
hub / github.com/Hackmanit/Web-Cache-Vulnerability-Scanner / DOS

Function DOS

pkg/techniques.go:938–1026  ·  view source on GitHub ↗

* Check for different DOS techniques */

()

Source from the content-addressed store, hash-verified

936
937/* Check for different DOS techniques */
938func DOS() reportResult {
939 var repResult reportResult
940 repResult.Technique = "DOS"
941
942 hho(&repResult)
943
944 // HMC (Header Metachar Character)
945 headers := []string{"X-Metachar-Header"}
946 values := []string{"n\nn", "r\rr", "a\aa", "x00\x00x00", "b\bb", "x1b\x1bx1b", "v\vv", "f\ff", "u0000\u0000u0000"} // TODO put not functional meta chars, due to fasthttp header value restrictions, in the value using \r\n in the header name
947
948 for _, header := range headers {
949 headerDOSTemplate(&repResult, values, header, "HMC ", true)
950 }
951
952 headers = []string{"X-Meta\nchar-Header", "X-Meta\rchar-Header", "X-Meta\achar-Header", "X-Meta\x00char-Header", "X-Meta\bchar-Header", "X-Meta\x1bchar-Header", "X-Meta\vchar-Header", "X-Meta\fchar-Header", "X-Meta\u0000char-Header"}
953 values = []string{"n", "r", "a", "x00", "b", "x1b", "v", "ff", "u0000"}
954
955 for i, header := range headers {
956 headerDOSTemplate(&repResult, []string{values[i]}, header, "HMC ", true)
957 }
958
959 // HMO (HTTP Method Override)
960 values = []string{"GET", "POST", "DELETE", "HEAD", "OPTIONS", "CONNECT", "PATCH", "PUT", "TRACE", "NONSENSE"}
961 headers = []string{"X-HTTP-Method-Override", "X-HTTP-Method", "X-Method-Override"}
962 for _, header := range headers {
963 headerDOSTemplate(&repResult, values, header, "HMO ", true)
964 }
965
966 // DOS via not implemented transferEncoding
967 values = []string{"asdf"}
968 headerDOSTemplate(&repResult, values, "zTRANSFER-ENCODING", "Not supported Transfer-Encoding ", true)
969
970 // DOS via incompatible/outdated browser agent
971 values = []string{"Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))"}
972 headerDOSTemplate(&repResult, values, "User-Agent", "incompatible browser ", true)
973
974 // DOS via blacklisted security scanner user agent // TODO: Also add bots? Or will the IP be blocked too fast
975 values = []string{"WebCacheVulnerabilityScanner v" + version, "Fuzz Faster U Fool", "Nuclei - Open-source project (github.com/projectdiscovery/nuclei)", "sqlmap/1.3.11#stable (http://sqlmap.org)", "gobuster/3.1.0", "Wfuzz/2.2", "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)", "masscan/1.3", "blekkobot"}
976 headerDOSTemplate(&repResult, values, "User-Agent", "blacklisted security scanners ", true)
977
978 // DOS via illegal header name
979 /* Currently disabled because of net/http throws error because of illegal character TODO: workaround, see https://stackoverflow.com/questions/70678016/how-to-bypass-golangs-http-request-net-http-rfc-compliance
980 values = []string{"foobar"}
981 headerDOSTemplate(&repResult, values, "Ill\\egal", "illegal header name ", true)
982 */
983
984 // DOS via Max-Forwards (Webserver/Cache returns request)
985 values = []string{"0", "1", "2"}
986 headerDOSTemplate(&repResult, values, "Max-Forwards", "", true)
987
988 // DOS via waf blocking because of a blacklist word
989 // TODO: change header to probably whitelisted header, More Blacklist words?
990 values = []string{".burpcollaborator.net", "<script>alert(1)</script>"}
991 headerDOSTemplate(&repResult, values, "Any-Header", "blacklist ", true)
992
993 // DOS via Range
994 values = []string{"bytes=m10x", "bytes=9-4", "bytes=-1024,0", "bytes=0-,0-,0-,0-"}
995 headerDOSTemplate(&repResult, values, "Range", "", true)

Callers 1

runTestsFunction · 0.92

Calls 2

hhoFunction · 0.85
headerDOSTemplateFunction · 0.85

Tested by

no test coverage detected