전제조건
- 시스템에 이미 침입 성공
- Unqoted service path를 가진 서비스가 존재
파일 경로의 참조 순서를 악용하는 공격
윈도우에서는 시스템 권한으로 실행하고 있는 서비스들이 많이 있다.
이 중 간혹 띄어쓰기를 잘못 처리해서 악용으로 이어어지는 경우들이 있다.
원리는 다음과 같은데 예를들어 다음과 같은 서비스와 폴더 경로로가 있다고 해보자.
C:\Program files\Log Process\Log Processer\nssm.exe
이때 띄어쓰기 부분을 따옴표로 감싸지 않으면 시스템이 서비스를 실행할 때 잘못 인식해서 고의적으로 배치한 악성 프로그램을 실행할 수 있다.
아래와 같이 리버스쉘을 배치했다고 해보자.
그럼 시스템이 파일을 실행할 때 Log Processer가 아닌 Log.exe를 인식해버려 실행하게 된다.
관리자 권한 쉘 획득
위의 경우처럼 리버스쉘을 배치한 후 시스템을 재시작하면 리버스쉘이 실행되면서 시스템 권한으로 연결된다.
취약점 발견하는 방법
간단하게 악용할 수 있는 방법이지만 생각보다 자주 취약점이 발견되기도 하는 것 같다. 아래의 명령어로 파일 경로를 찾는게 가능하다.
wmic service get name,displayname,startmode,pathname | findstr /i /v "C:¥Windows¥¥" |findstr /i /v """
한가지 주의할 점은 일반 유저의 권한으로 파일을 배치해야 하기 때문에 취약점을 가진 파일 경로를 발견했다고 하더라도 쓰기 권한이 없으면 이용할 수 없다.