>  기사  >  운영 및 유지보수  >  Gogs 임의 사용자 로그인 취약점 사례 분석

Gogs 임의 사용자 로그인 취약점 사례 분석

王林
王林앞으로
2023-05-11 16:43:062306검색

1. 취약점 배경

Gogs는 GitHub와 유사한 오픈 소스 파일/코드 관리 시스템(Git 기반)입니다. Gogs의 목표는 셀프 서비스 Git 서비스를 구축하는 가장 간단하고 빠르며 쉬운 방법을 만드는 것입니다. Go 언어로 개발된 Gogs는 독립 실행형 바이너리로 배포될 수 있으며 Linux, Mac OS X, Windows 및 ARM 플랫폼을 포함하여 Go 언어가 지원하는 모든 플랫폼을 지원합니다.

2. 취약점 설명

gogs는 구축하기 쉬운 셀프 서비스 Git 서비스 플랫폼으로, 설치가 쉽고, 크로스 플랫폼이 가능하며, 사용자가 많습니다. 0.11.66 및 이전 버전(go-macaron/session 라이브러리)에서는 세션 ID를 확인하지 않습니다. 공격자는 악의적인 세션 ID를 사용하여 모든 파일을 읽고 파일 내용을 제어하여 세션 내용을 제어한 다음 로그인할 수 있습니다. 어떤 계정.

3. 영향을 받는 버전

영향을 받는 버전은 다음과 같습니다:

Gogs 0.11.66 및 이전 버전

4. 취약점 재발

(1) ubuntu 가상 머신 docker를 사용하여 vulhub에서 gogs 환경 복제

(2 ) 다음 명령으로 Start gogs를 실행합니다. docker-compose up -d

(3) 환경이 시작된 후 http://192.168.49.103:3000/install을 방문하여 설치 페이지를 확인하세요. 설치 중에 sqlite 데이터베이스를 선택하고 등록 기능을 활성화합니다.

Gogs 임의 사용자 로그인 취약점 사례 분석

Gogs 임의 사용자 로그인 취약점 사례 분석

(4) Gob 직렬화를 사용하여 세션 파일 데이터를 생성합니다.

(5) 그런 다음 일반 사용자 계정을 등록하고 프로젝트를 생성한 후 새로 생성된 세션 파일을 "버전 릴리스" 페이지에 업로드합니다.

Gogs 임의 사용자 로그인 취약점 사례 분석

(6) 이 첨부 파일의 URL을 통해 이 파일의 파일 이름을 알 수 있습니다: ./attachments/2eb7f1a2-b5ec-482e-a297-15b625d24a10. 그런 다음 쿠키를 구성합니다: i_like_gogits=../attachments/2/e/2eb7f1a2-b5ec-482e-a297-15b625d24a10. 액세스한 후 id=1로 성공적으로 로그인한 사용자(예: 루트 관리자)를 찾을 수 있습니다

Gogs 임의 사용자 로그인 취약점 사례 분석

five, 취약점 분석 및 활용

우선 각 사용자별로 웨어하우스를 생성하고, 릴리스 기능을 통해 제어 가능한 내용이 포함된 파일을 업로드하여 세션 파일을 위조할 수 있는 조건을 제공합니다.

를 통해 탐색 기능을 사용하면 많은 사용자의 창고를 찾을 수 있습니다. 사용자의 사용자 정보 페이지를 입력하면 사용자의 세션을 구성하는 데 필요한 모든 정보(uid, 사용자 이름)를 얻을 수 있습니다.

Gogs 임의 사용자 로그인 취약점 사례 분석

file.go를 통해. 위의 코드에서 우리는 세션 파일 콘텐츠가 P Niu가 작성한 세션 페이로드를 기반으로 Gob 인코딩이라는 것을 발견했습니다.

Gogs 임의 사용자 로그인 취약점 사례 분석

이로부터 세션을 생성할 수 있으며, 모든 사용자가 사용할 수 있는 릴리스 업로드 기능을 통해 위조된 세션을 서버에 업로드합니다.

gogs 및 release의 파일이 기본적으로 저장되는 디렉터리 구조는 attachments/fid[0]/fid[1]/fid입니다. 세션이 저장되는 디렉터리 구조는 session/sid[0]/sid[1]/sid입니다. 또한 세션 및 첨부 파일 폴더는 동일한 데이터 폴더에 저장됩니다.

Gogs 임의 사용자 로그인 취약점 사례 분석

gogs는 세션을 읽기 전에 세션을 분할하여 최종 경로로 구성하기 때문에 첨부 파일과 세션이 동일한 폴더에 있으므로 방금 업로드한 파일의 경로로 세션을 수정합니다. attachments /1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b, 세션을 읽는 함수는 session/././../attachments/1/7/17f4120b-1a0d-416a-b0b0-def4342ded5b에 대한 경로를 구문 분석합니다. , 이는 우리가 업로드한 파일이 결국 모든 사용자의 로그인을 완료하게 됩니다.

6. 수리 제안

Gogs는 개발 브랜치의 Github에서 다운로드하여 컴파일할 수 있습니다. 이 브랜치에서는 이 취약점이 수정되었거나 최신 버전의 Gogs로 업그레이드할 수 있습니다.

위 내용은 Gogs 임의 사용자 로그인 취약점 사례 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제