Skip to content

Instantly share code, notes, and snippets.

@jakewarren jakewarren/ticketbleed.go Secret forked from FiloSottile/ticketbleed.go
Last active Feb 6, 2019

Embed
What would you like to do?
package main
import (
"crypto/tls"
"fmt"
"log"
"net"
"os"
"strings"
"time"
)
var Target = ""
func main() {
if len(os.Args) != 2 {
fmt.Println("usage: ticketbleed [domain:port]")
os.Exit(1)
}
Target := os.Args[1]
conf := &tls.Config{
InsecureSkipVerify: true,
ClientSessionCache: tls.NewLRUClientSessionCache(32),
}
dialer := &net.Dialer{
Timeout: 30 * time.Second,
}
conn, err := tls.DialWithDialer(dialer, "tcp", Target, conf)
if err == nil {
conn.Close()
} else if strings.Contains(err.Error(), "timeout") {
fmt.Println(Target, "connection timed out")
os.Exit(2)
} else {
log.Fatalf("Error testing %s: %s", Target, err)
}
conn, err = tls.Dial("tcp", Target, conf)
if err != nil && strings.Contains(err.Error(), "unexpected message") {
fmt.Println(Target, "is vulnerable to Ticketbleed")
} else if err != nil {
log.Fatalln("Failed to reconnect:", err)
} else {
fmt.Println(Target, "does NOT appear to be vulnerable")
conn.Close()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.