정보보안 스터디 - 13주차 3일 - 인증/인가 차이점
☞ 인증/인가 차이점
주평기반의 기준을 통해
인증/인가 차이점의 구분을 확실히 합니다.
인증이란 나임을 확인하는 것입니다.
인가란 권한이 있다면 기능을 할 수 있도록 허용하는 것입니다.
인증 취약점이란 나임을 확인하지 않아도, 또는 인증 단계를 뛰어넘어서 기능에 접근할 수 있는 취약점입니다.
인가 취약점이란 권한이 없어도 제한된 기능에 접근이 가능한 취약점입니다. 즉 세션점검을 안한다는 뜻입니다.
즉 확인해야할 점은
인증 취약점: 정보변경 등을 할 때 기존 비밀번호(+ OTP번호 등 2차비밀번호)을 입력하도록 관리하는지 확인하고, 또 그 인증 절차를 뛰어넘을 수 있는지 확인합니다.
ex) 정보수정 (비번 변경, 주소 변경, 이름 변경) 을 할 때 기존 비밀번호가 필요하겠고, 글 수정, 삭제, 비밀글 읽기도 기존 비밀번호를 확인해야합니다.
인가 취약점: 아무나 기능을 할 수 없도록 서버측에서 세션 검증을 하는지 확인합니다.
ex)세션 검증을 안해서 실제로 로그인을 안해도 유저의 이름, 주소, 비번 변경할 수도 있습니다. 또 글 수정, 삭제, 글 읽기 에도 세션검증이 필요합니다.
사실 이런 예시들이 중복되는 것들이 많기 때문에 인증, 인가 취약점의 차이점을 헷갈릴 수 있습니다.
중복될 수 있음을 이해합니다.
☞ 아파치 서버 설정파일
디렉토리 인덱싱이 기본으로 설정되는데
설정해놓은경우 index.php 또는 index.html 메인 페이지가 없을 경우
디렉토리 리스팅, 즉 업로드된 파일과 서버의 경로를 확인할 수 있습니다.
또한 intitle:"Index of" 구글 검색이 가능하기 때문에 서버가 취약해질 수 있습니다.
대응은
xampp/apache/conf/httpd.conf
설정파일에서 Options설정을 주석처리해줍니다.
403 permission 접근허용으로 처리된 것을 확인할 수 있습니다.
그 외로도 서버 설정을(변수) 변경해서 다양한 적용을 시킬 수 있다는 점입니다.
RewriteEngine On: localhost/index.php?data=test라는 형식을 localhost/index/test라는 식으로 디렉토리 구조처럼 변환시켜 주는 구문입니다.
Options MultiViews: localhost에 접속했을 때 처음에는 index.php를 찾지만, 없으면 index.html를 찾는 형태입니다.
.htaccess 설정
.htaccess 도 서버설정인데 설정을 변경해서 많은 것을 할 수 있습니다.
디렉토리를 만들고 권한을 준 뒤
php engine off를 하면 해당 디렉토리에서는 파일의 php가 실행되지 않습니다.
☞ 모의해킹 과정
모의해킹 할 때
목적 > 체크리스트로 점검 > 주평기반 취약점 평가 28항목 상세점검
순으로 합니다.
본인만의 기준으로 체크리스트를 만드는데
체크리스트
SQL 로그인 검색창 마이페이지 등 union ' or 1=1 # 가능 여부 ' union 1,2 # 가능 여부 error ' and updatexml(null,concat(0x3a,(database())),null) and 1=1 # 가능 여부 blind ' and 1=1 and ascii(substr(database(),1))>100 가능 여부 를 빠르게 확인합니다. |
XSS stored 게시판1 : 파라미터- 내용,이름 > CSRF 가능 reflected 게시판2: 파라미터- 글번호 검색창:파라미터- all 글읽기: 파라미터- 글번호 |
CSRF Stored XSS 이름 > 회원정보수정(비번변경, 주소, 이름 변경), 글, 수정 수정가능 등 |
파일업로드 파일인클루드 파일다운로드 |
인증/인가 권한 필요한 곳 중 자바스크립트가 뜨는 곳 개발실수된 곳 있는지(세션 검증 안하는 곳) 로그인없이 글 수정, 삭제 가능한지 로그인 없이 유저정보 변경가능한지 그 외로 로그인 없이 가능한 게 있는지 게싱예측공격 글 번호 수정으로 비밀글 확인가능한지 주석 처리 되어있는 곳 있는지 디렉토리 인덱싱 되는지 보이지 않는 다른 취약한 페이지가 있는지 |
사소한 곳도 놓치지 않고 확인합니다.