
CVE-2024-22515 임의 파일 업로드 및 CVE-2024-22514 원격 코드 실행 (AgentDVR 5.1.6.0, 인증된 상태)
CVE-2024-22515 임의 파일 업로드 및 CVE-2024-22514 원격 코드 실행 (AgentDVR 5.1.6.0, 인증됨)
(이전 버전도 영향을 받을 가능성이 있습니다.)
https://github.com/Orange-418/CVE-2024-22514-Remote-Code-Execution
https://github.com/Orange-418/CVE-2024-22515-File-Upload-Vulnerability
https://www.ispyconnect.com/docs/agent/about
https://www.youtube.com/watch?v=RXmoXERWVk8
4.7.3.0 및 5.1.6.0에서 테스트되었습니다. 그 사이의 버전과 이전 버전도 영향을 받을 가능성이 있습니다. Windows x64, Linux x64, Docker 설치에서 테스트되었습니다. Windows의 익스플로잇 경로가 약간 다르다는 점에 유의하세요. bash를 호출하는 대신 "/AgentDVR/sounds/payload.exe"와 같은 실행 파일을 직접 호출할 수 있습니다.
AgentDVR 버전 5.1.6.0에는 두 가지 취약점이 포함되어 있습니다: 임의 파일 업로드 취약점과 임의 파일 실행 취약점입니다. 이 두 취약점은 함께 연결되어 업로드된 모든 임의 파일(악성 페이로드 포함)을 실행할 수 있습니다. 이로 인해 AgentDVR 서버에 유효한 자격 증명을 가진 사용자가 RCE를 수행할 수 있습니다.
프로그램의 특성상(주로 WebRTC를 사용) PoC 스크립트를 만들지 않았습니다. 그러나 수동 과정은 매우 간단합니다. 누군가 PoC 스크립트를 만들어 저에게 연락하면, 여기에 링크를 추가하겠습니다.
먼저, 대시보드에 로그인한 후 새 장치를 추가합니다. 기본 설정으로 "Dummy" 장치를 만듭니다.

장치에서, 사진이 촬영되면 작업을 트리거하는 액션을 추가합니다. 그런 다음 작업을 추가하고 "Execute Command"를 선택한 후, 드롭다운에서 실행할 명령으로 "File"을 선택합니다.

이제 페이로드를 준비합니다. 이 저장소에 있는 "payload.sh" 파일을 수정하여 사용할 수 있습니다. 매우 간단한 리버스 셸 스크립트입니다.
준비가 되면, 서버 메뉴로 돌아가 "File Upload"를 선택합니다. "Audio"를 선택하고 파일을 찾아보기 시작하되, 파일 선택기 드롭다운을 "*.wav"에서 "All Files"로 전환합니다.


다음으로, 서버 메뉴로 돌아가 "Backup/Restore"를 선택합니다. "Download"를 선택하면 여러 .XML 파일이 포함된 zip 파일을 받게 됩니다.

내용을 추출하고 "config.xml"을 엽니다. 하단 부근에 '<Directory Entry="/path/to/media/"'와 유사한 줄이 있습니다. 이는 AgentDVR 설치의 폴더 구조이므로 중요하며, 설치 유형에 따라 몇 가지 다른 형태로 나타날 수 있습니다.

다음으로, objects.xml 파일을 편집하고 하단 부근에 '<entry type="EXE" param1='와 유사한 줄을 찾습니다. 기본 알림 배치 파일을 호출하는 경로를 편집하여 bash를 호출한 다음 .sh 스크립트를 호출하는 경로를 삽입합니다. 이전 단계의 경로를 참조하여 무엇을 삽입할지 알 수 있습니다.

그런 다음 리스너를 시작할 수 있습니다.

이제 서버 메뉴로 다시 돌아가 "Backup/Restore"를 선택합니다. 이번에는 파일 업로드를 선택하고 수정된 "objects.xml" 파일을 선택합니다.

변경 사항이 적용되면 대시보드가 다시 시작됩니다. 이제 이론적으로 사진이 촬영될 때 리버스 셸 스크립트를 트리거하는 알림이 있는 더미 카메라가 있어야 합니다. 리스너를 시작한 상태에서 더미 카메라 피드를 마우스 오른쪽 버튼으로 클릭하고 "Take Photo"를 선택합니다.

이제 루트 셸이 열려 있어야 합니다.
