인증&인가 Authorization 1/4/6번 풀이 포함(예시)

황인환·2024년 8월 2일

인증(Athentication)

인증이란?

클라이언트가 본인이 맞는지 확인하는 작업

인증취약점

인증 취약점은 인증과정에서 얻어내는 취약점
인증단계를 건너뛰는(무시) 공격

인증취약점case

1. cookie를 통해 인증하는 case

클라이언트 측에서 인증절차를 하는 경우

cookie로 인증 확인
admin으로 변경

2. process 점프

2.1 직접접근

ex) /step1.php (유추)-> /step2.php
문제 : PIN CODE Bypass

ex1. 메인 페이지

step1.php

ex2. step1.php에서 다음 버튼 클릭으로 step2.php로 진행

step2.php비밀번호 랜덤 입력 결과

ex3. step3.php가 존재함을 유추후 입력

step3.php버튼클릭

2.2 본인인증우회

ex) 회원가입단계 a -> c로 건너뜀
a. 약관동의
b. 본인인증 ex)휴대폰 인증
c. 회원가입

3. 파라미터 응답값 변조

직접접근 중 하나 / 모바일앱에 많음
ex) 문제 Admin is mine

정상적인 id와 pw입력응답값메인 화면
admin으로 로그인응답값변경메인화면

4. 인증횟수제한 없는 경우

무작위 대입공격 가능
로그인 페이지에는 횟수제한이 있어도 마이페이지에 없는 경우도 있음

핀코드 입력페이지python으로 제한없이 시도결과

python코드

import requests

url="http://ctf.segfaulthub.com:1129/6/checkOTP.php?otpNum="


for i in range(0000, 9999):
    opt=f"{i:04}" # 04는 4자리 14는 14자리
 
    param={
        "otpNum" : opt
    }
    res=requests.get(url,params=param)

    keyword="Login Fail"
    if keyword not in res.text:
        print(opt)
        break

    print(opt)

인가(Athorization)

인가란

특정권한을 부여하는 것
특정기능을 권한에 따라 할 수 있거나 못 할 수 있음

인가 취약점

특정권한만 할 수 있는 기능을 할 수 있게함
로직의 허점을 찾는 것
주로 파라미터 변조

인가 취약점case

1. 주석으로 접근 제한

(클라이언트 측에서 권한 체크)
ex) 문제 Authorization 1

메인페이지응답값보기
응답값에서 주석제거결과보기

2. 인가체크를 클라이언트에서 하고 있는 경우

클릭했을때 웹으로 요청이 가는지를 확인
2.1 확장자 검증(php)웹요청할때 응답값에서 빼고
2.2 javascript 난독화
-> 인터넷 이용하여 복원
-> 동적분석

정적분석동적분석
실행안하고 코드만 분석실행하면서 코드분석

3. guessing 공격

서버측에 존재는 하지만 눈에 보이지 않는 것을 추측하여 공격
ex) 문제 Authorization 4 -> 관리자만 쓸수 있는 게시판에 글쓰기
notice_read.php가 있으면 notice_post.php notice_write.php notice_create.php 있을것이라 추측

게시글 들어가보기(notice_read.php로 방문)notice_write.php 있을것이라 추측후 입력

4. 파라미터 변조

페이지를 분석할 때 내가 보낸 값이 어떻게 오는지 생각
ex) Authorization 6 -> admin정보 알아내기

mapage에 파라미터 값 sfUser 파라미터 값 admin으로 변경

normaltic study 6기 16주차

0개의 댓글