[하루한줄] CVE-2020-35606: Arbitrary Command Execution in Webmin
URL
Webmin-1962-PU-Escape-Bypass-Remote-Command-Exectuion
Target
- Wemin 1.962 이하 버전
Explain
Webmin에서 Remote Command Execution 취약점이 발견되었습니다. 해당 취약점을 통해 패키지 업데이트 모듈을 사용할 수 있는 모든 유저가 root 권한으로 arbitrary command를 실행할 수 있습니다. CVE-2019-12840에 대한 필터링은 package name 변수가 system command 안에 직접적으로 들어가므로 URL encoding을 통해 우회할 수 있습니다.(ex. command line을 한 줄 아래에서 실행)
u
파라미터는 update.cgi
에서 @pkgs
변수에 들어가서 여러 연산을 수행합니다. update.cgi
의 함수들은 package-updates-lib.pl
에서 호출되는데, 그중 package_install(package-name, [system], [new-install])
은 update system이나 Wemin을 통해 패키지를 설치할 수 있고 업데이트된 패키지 목록을 반환합니다.
패지키를 설치할 때 CVE-2019-12840에 대한 조치로 s/\\(-)|\\(.)/string/g;
필터링이 걸려있습니다. 패키지 이름은 http request 변수이므로 %0a
나 %0c
등을 통해 escape가 가능합니다. 패키지 이름 뒤에 %7c
등으로 pipe나 .
을 추가하면 그 부분에 \
백 슬래시가 추가되어 명령 실행이 불가능하지만 %0a%7c
등으로 새로운 command line에서 실행하면 \
가 무시되고 정상적으로 arbitrary command execution이 가능합니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.