Max redirects check is now arbitary

This commit is contained in:
Alexey Mozzhakov 2018-04-04 10:57:35 +03:00 committed by GitHub
commit 46ab3365cc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -296,27 +296,6 @@ func (s *SSLStripper) Preprocess(req *http.Request, ctx *goproxy.ProxyCtx) (redi
return return
} }
func (s *SSLStripper) isMaxRedirs(hostname string) bool {
// did we already track redirections for this host?
if nredirs, found := s.redirs[hostname]; found == true {
// reached the threshold?
if nredirs >= maxRedirs {
log.Warning("[%s] Hit max redirections for %s, serving HTTPS.", core.Green("sslstrip"), hostname)
// reset
delete(s.redirs, hostname)
return true
} else {
// increment
s.redirs[hostname]++
}
} else {
// start tracking redirections
s.redirs[hostname] = 1
}
return false
}
func (s *SSLStripper) Process(res *http.Response, ctx *goproxy.ProxyCtx) { func (s *SSLStripper) Process(res *http.Response, ctx *goproxy.ProxyCtx) {
if s.enabled == false { if s.enabled == false {
return return
@ -336,17 +315,12 @@ func (s *SSLStripper) Process(res *http.Response, ctx *goproxy.ProxyCtx) {
log.Info("[%s] Got redirection from HTTPS to HTTP: %s -> %s", core.Green("sslstrip"), core.Yellow("http://"+origHost), core.Bold("https://"+newHost)) log.Info("[%s] Got redirection from HTTPS to HTTP: %s -> %s", core.Green("sslstrip"), core.Yellow("http://"+origHost), core.Bold("https://"+newHost))
// if we still did not reach max redirections, strip the URL down to // strip the URL down to an alternative HTTP version
// an alternative HTTP version strippedURL := s.processURL(newURL)
if s.isMaxRedirs(origHost) { u, _ := url.Parse(strippedURL)
strippedURL := s.processURL(newURL) hostStripped := u.Hostname()
u, _ := url.Parse(strippedURL) s.hosts.Track(origHost, hostStripped)
hostStripped := u.Hostname() res.Header.Set("Location", strippedURL)
s.hosts.Track(origHost, hostStripped)
res.Header.Set("Location", strippedURL)
}
} }
} }
} }