macOS Office Sandbox Bypasses
Reading time: 3 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Word Sandbox bypass via Launch Agents
이 애플리케이션은 com.apple.security.temporary-exception.sbpl
권한을 사용하는 커스텀 샌드박스를 사용하며, 이 커스텀 샌드박스는 파일 이름이 ~$
로 시작하는 한 어디에나 파일을 쓸 수 있도록 허용합니다: (require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))
따라서 탈출은 **~/Library/LaunchAgents/~$escape.plist
**에 plist
LaunchAgent를 작성하는 것만큼 쉬웠습니다.
원본 보고서 확인하기를 확인하세요.
Word Sandbox bypass via Login Items and zip
첫 번째 탈출에서 Word는 이름이 ~$
로 시작하는 임의의 파일을 쓸 수 있지만, 이전 취약점의 패치 이후 /Library/Application Scripts
또는 /Library/LaunchAgents
에 쓸 수는 없었습니다.
샌드박스 내에서 로그인 항목(사용자가 로그인할 때 실행되는 앱)을 생성할 수 있다는 것이 발견되었습니다. 그러나 이러한 앱은 notarized되지 않으면 실행되지 않으며, args를 추가할 수 없습니다(따라서 **bash
**를 사용하여 리버스 셸을 실행할 수 없습니다).
이전 샌드박스 우회로 인해 Microsoft는 ~/Library/LaunchAgents
에 파일을 쓸 수 있는 옵션을 비활성화했습니다. 그러나 로그인 항목으로 zip 파일을 넣으면 Archive Utility
가 현재 위치에서 압축을 풀기만 한다는 것이 발견되었습니다. 따라서 기본적으로 ~/Library
의 LaunchAgents
폴더가 생성되지 않기 때문에 **LaunchAgents/~$escape.plist
**에 plist를 압축하고 **~/Library
**에 zip 파일을 배치하면 압축 해제 시 지속성 목적지에 도달할 수 있었습니다.
원본 보고서 확인하기를 확인하세요.
Word Sandbox bypass via Login Items and .zshenv
(첫 번째 탈출에서 Word는 이름이 ~$
로 시작하는 임의의 파일을 쓸 수 있다는 것을 기억하세요).
그러나 이전 기술에는 제한이 있었습니다. ~/Library/LaunchAgents
폴더가 다른 소프트웨어에 의해 생성된 경우 실패할 수 있습니다. 그래서 이를 위한 다른 로그인 항목 체인이 발견되었습니다.
공격자는 .bash_profile
및 .zshenv
파일을 생성하고 실행할 페이로드를 추가한 다음 이를 압축하고 희생자의 사용자 폴더에 **~/~$escape.zip
**로 작성할 수 있습니다.
그런 다음 zip 파일을 로그인 항목에 추가하고 Terminal
앱을 추가합니다. 사용자가 다시 로그인하면 zip 파일이 사용자 파일에 압축 해제되어 .bash_profile
및 **.zshenv
**를 덮어쓰게 되고, 따라서 터미널은 이 파일 중 하나를 실행하게 됩니다(사용되는 셸에 따라 다름).
원본 보고서 확인하기를 확인하세요.
Word Sandbox Bypass with Open and env variables
샌드박스된 프로세스에서 여전히 open
유틸리티를 사용하여 다른 프로세스를 호출할 수 있습니다. 게다가 이러한 프로세스는 자신의 샌드박스 내에서 실행됩니다.
open 유틸리티에는 특정 env 변수를 사용하여 앱을 실행하는 --env
옵션이 있다는 것이 발견되었습니다. 따라서 샌드박스 내의 폴더에 .zshenv
파일을 생성하고 --env
로 HOME
변수를 해당 폴더로 설정하여 Terminal
앱을 열면 .zshenv
파일이 실행됩니다(어떤 이유로 인해 __OSINSTALL_ENVIROMENT
변수를 설정해야 했습니다).
원본 보고서 확인하기를 확인하세요.
Word Sandbox Bypass with Open and stdin
open
유틸리티는 --stdin
매개변수도 지원했습니다(이전 우회 이후 --env
를 사용할 수 없게 되었습니다).
문제는 **python
**이 Apple에 의해 서명되었더라도 quarantine
속성이 있는 스크립트를 실행하지 않는다는 것입니다. 그러나 stdin에서 스크립트를 전달하면 격리 여부를 확인하지 않게 됩니다:
- 임의의 Python 명령이 포함된
~$exploit.py
파일을 드롭합니다. - open **
–stdin='~$exploit.py' -a Python
**을 실행하여 Python 앱을 실행하고, 드롭한 파일을 표준 입력으로 사용합니다. Python은 우리의 코드를 기꺼이 실행하며, 이는 _launchd_의 자식 프로세스이므로 Word의 샌드박스 규칙에 구속되지 않습니다.
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.