인증되지 않은 API 보고서
Source: Dev.to
개요
API 엔드포인트를 스캔하여 인증되지 않은 접근 취약점을 식별하는 보안 자동화 도구입니다. 다양한 HTTP 메서드와 인증 방식을 테스트하여 적절한 인증 없이 데이터를 노출할 수 있는 API를 탐지합니다.
기능
- 다중 메서드 테스트: GET, POST, PUT, DELETE 메서드 테스트
- 인증 우회 탐지: 적절한 인증 없이 접근 가능한 API 식별
- 토큰 검증: 다양한 인증 방식(Bearer, Basic) 테스트
- 자동 보고서 생성: 상세 보안 보고서 생성
- 이메일 알림: 보안 결과에 대한 알림 전송
- 동시 처리: 효율성을 위한 멀티스레드 스캔
사전 요구 사항
- Python 3.13+
- 필수 Python 패키지(
requirements.txt참조) - 대상 API에 대한 네트워크 접근 권한
- 알림을 위한 이메일 설정
설치
# 솔루션 디렉터리로 이동
cd unauthenticated-apis-report
# 의존성 설치
pip install -r requirements.txt
설정
API 목록 설정
다음과 같이 unauthenticated-api.json 파일을 만들어 API 엔드포인트를 지정합니다:
{
"data": [
"https://api.example.com/v1/users",
"https://api.example.com/v1/orders",
"https://api.example.com/v1/admin"
]
}
알림 설정
보안 알림을 위해 Notification 모듈에서 이메일 알림을 구성합니다.
사용법
기본 스캔
python unauthenticated-api.py
주요 함수
get_api_list(): 설정 파일에서 API 엔드포인트를 로드check_authentication(api_url): 특정 엔드포인트에 대한 인증 테스트 수행get_api_authentication(): 개별 인증 테스트 실행generate_password(): 테스트용 무작위 토큰 생성
보안 테스트 방법
- 인증 헤더 없음 – 인증 없이 API가 정상 응답하는지 테스트합니다.
- 잘못된 토큰 테스트 – 무작위 토큰을 사용해 약한 검증을 식별합니다.
- 인증 스키마 테스트
- Bearer 토큰 검증
- Basic 인증 테스트
- 사용자 정의 인증 헤더
- HTTP 메서드 테스트 – 각 엔드포인트에 대해 일반적인 HTTP 메서드 모두를 테스트합니다.
보고서 출력
도구는 다음과 같은 상세 보고서를 생성합니다:
- 요청/응답 상세
- 인증 상태
- 취약점 발견 내용
- 대응 권고 사항
보안 고려 사항
- 윤리적 사용: 자신이 소유하거나 테스트 허가를 받은 API만 스캔하십시오.
- 속도 제한: 대상 시스템에 과부하가 걸리지 않도록 지연을 구현하십시오.
- 자격 증명 보안: 테스트에 실제 자격 증명을 사용하지 마십시오.
- 네트워크 보안: 인증된 안전한 네트워크에서만 실행하십시오.
통합
CI/CD 파이프라인
보안 스캔 워크플로에 통합:
# 파이프라인에 추가
python unauthenticated-api.py --output-format json
모니터링
새로운 취약점이 발생하는지 정기적으로 스캔을 설정하십시오.
문제 해결
일반적인 이슈
- 연결 시간 초과: 느린 API에 대해 타임아웃 값을 늘리세요.
- 속도 제한: 요청 사이에 지연을 추가하세요.
- SSL 오류: 올바른 인증서 검증을 구성하세요.
디버그 모드
자세한 문제 해결을 위해 상세 로그를 활성화하십시오.
기여
- 테스트할 새로운 인증 스키마 추가
- 보고서 기능 강화
- 오류 처리 개선
- 추가 HTTP 메서드 지원
GitHub 링크
https://github.com/prashantgupta123/devops-automation/tree/main/unauthenticated-apis-report
보안 안내
이 도구는 권한이 있는 보안 테스트를 위해 설계되었습니다. API를 스캔하기 전에 반드시 적절한 권한을 확보하십시오. 무단 테스트는 서비스 약관이나 관련 법률을 위반할 수 있습니다.