[하루한줄] CVE-2020-24581: D-Link 라우터의 의도적인 RCE 취약점
URL
CVE-2020-24581 D-Link DSL-2888A Remote Command Execution
Target
D-Link DSL-2888A AU_2.31_V1.1.47ae55 이전 버전
Explain
대만 D-link사의 통합 서비스 라우터 제품인 DSL-2888A 펌웨어에서 원격 코드 실행 취약점이 발견되었습니다. 보안 연구원들은 취약점이 발생하는 기능이 웹 인터페이스에서 정상적인 사용으로는 접근할 수 없어 의도적으로 숨겨진 기능이라고 분석했습니다.
해당 제품이 웹 서비스를 초기화할 때 cgi-bin
컴포넌트가 로드됩니다. 취약점은 cgi-bin
디렉터리의 execute_cmd.cgi
파일에 존재하며 인증된 사용자가 execute_cmd.cgi
에 접근 시 ajax.js
에서 요청 쿼리의 두 번째 매개변수를 가져와 실행하는데, 이때 매개 변수에 대한 검증이 없어 임의 명령 실행이 가능합니다.
get : function(_dataType)
{
var _url = this.url;
if(_url.indexOf('?') == -1)
_url += '?timestamp=' + new Date().getTime();
else
_url += "×tamp=" + new Date().getTime();
if(this.queryString.length > 0)
_url += "&" + this.queryString;
this.xmlHttp.open("GET", _url, true);
...
해당 취약점은 인증 우회 취약점인 CVE-2020-24579와 같이 악용되어 다음과 같이 인증되지 않은 사용자가 임의 명령을 실행할 수 있습니다.
- 아무 관리자 패스워드로 로그인 인증을 수행합니다.
- 내부적으로는 유효한 인증 세션이 이루어져 인증 페이지에 접근할 수 있습니다. (CVE-2020-24579)
- 이후 ls 명령어를 실행하는 poc는 다음과 같습니다.
http://[DeviceIP]/cgi-bin/execute_cmd.cgi?timestamp=1589333279490&cmd=ls
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.