Jenkins Arbitrary File Read to RCE via "Remember Me"
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
이 블로그 게시물에서는 Jenkins의 Local File Inclusion 취약점을 RCE로 변환하는 훌륭한 방법을 찾을 수 있습니다: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
이것은 임의의 쿠키를 조작하여 RCE를 얻는 방법에 대한 게시물의 요약입니다. 제가 직접 요약을 작성할 시간이 생길 때까지 사용됩니다:
기능 요구 사항: "Remember me"가 활성화되어 있어야 합니다 (기본 설정).
접근 수준: 공격자는 전체/읽기 권한이 필요합니다.
비밀 접근: 주요 파일에서 이진 및 텍스트 콘텐츠를 읽을 수 있는 능력.
사용자 정보 검색
각 사용자에 대해 $JENKINS_HOME/users/*.xml
에서 사용자 구성 및 비밀을 접근하여 수집합니다:
사용자 이름
사용자 시드
타임스탬프
비밀번호 해시
비밀 키 추출
쿠키 서명에 사용되는 암호화 키를 추출합니다:
비밀 키: $JENKINS_HOME/secret.key
마스터 키: $JENKINS_HOME/secrets/master.key
MAC 키 파일: $JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
토큰 준비
토큰 만료 시간 계산:
토큰을 위한 데이터 연결:
MAC 키 복호화
MAC 키 파일 복호화:
서명 계산
HMAC SHA256 계산:
쿠키 인코딩
최종 쿠키 생성:
세션 인증
CSRF 및 세션 토큰 가져오기:
/crumbIssuer/api/json
에 요청을 보내 Jenkins-Crumb
를 얻습니다.
응답에서 JSESSIONID
를 캡처하여 remember-me 쿠키와 함께 사용합니다.
명령 실행 요청
Groovy 스크립트로 POST 요청 보내기:
Groovy 스크립트는 시스템 수준의 명령이나 Jenkins 환경 내에서 다른 작업을 실행하는 데 사용할 수 있습니다.
제공된 curl 명령 예시는 임의의 코드를 안전하게 실행하기 위해 필요한 헤더와 쿠키를 사용하여 Jenkins에 요청을 보내는 방법을 보여줍니다.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)