파라미터 변조
URL로 전달되는 파라미터 변조를 통해 타인의 게시물을 열람, 수정 또는 타인의 인사, 회계 정보를 열람하거나 파라미터를 조작하여 권한을 상승하여 제한된 서비스 이용이 가능한 취약점
공격 방법
불충분한 이용자 인증
- 로그인 이후 접근 가능한 페이지에 대해서 로그인 없이 URL직접 접근으로 접근이 가능한지 여부를 점검
- 로그인 세션에 대한 인증 모듈이 누락된 경우만 이 항목으로 분류
- 로그인 세션에 대한 인증이 있으나 우회가 가능한 경우 "불충분한 이용자 인가"로 분류
- 암호화된 인증 정보(인증 토큰, 암호화된 Password)의 random성 및 재사용 가능성을 테스트
- 암호화된 인증 정보 String이 매 인증시 마다 동일할 경우 취약 영후 취복 Stmg이 매번 변경될 경우에도, 과거 사용되었던 인증 정보 String을 재사용 가능할
- SSO 적용된 사이트 집함에서 특정 사이트에서 타 사이트으로 전환하는 과정에서 인증 정보의 변조를 통한 계정 도용이 가능한지 점검
- ID 파라미터, Cookie 변수, 기타 사용자 식별값의 변조를 시도
- 권한 레벨, 사용자 Group 파라미터 등의 변조를 시도
- 인증 토큰, Cookie 변수의 재사용 가능성, 예측 가능성 등을 테스트
- 공인인증서(사설인증서)를 이용하여 인증을 수행할 경우 다음과 같은 사항들을 점검하여야 함
- 인증서 정보 재사용 가능 여부 테스트 - 인증서 전송 Request에서 CERTIFICATE 블록 복사 후 재사용 가능 여부 확인
- 서버측의 인증서 정상 검증 여부 테스트 - 인증서 전송 Request에서 CERTIFICATE 블록 삭제 후 전송하여 인증 통과 여부 확인
- 인증서 로그인 과정에서 노출되는 ID파라미터 등 변조 가능성 테스트
불충분한 이용자 인가
- 현재 계정에게 허가되지 않은 메뉴/페이지의 URL을 직접 입력하여 접근 가능 여부를 점검함
- 인증 세션 검증 자체가 누락된 경우와, 인증 세션 검증은 하되 권한 관리가 누락된 경우를 구분할 것 (전자는 불충분한 인증, 후자는 불충분한 인가)
- Request에서 정보 조회의 식별값으로 판단되는 파라미터가 존재할 경우, 해당 식별값을 변조하여 타 사용자 정보를 열람 가능한지 확인함
- 식별값 파라미터를 변조(삭제, 특수문자등)하여 전송하였을 경우 정상적으로 정보 조회가 진행되 는지 여부를 먼저 테스트 해봄
- 게시판 기능의 권한 관리 적절성 여부를 진단함
- "쓰기가 허가되지 않은 게시판에 대한 무단 게시물 등록 가능성
- 관리자 게시물(공지사항 등) 및 타 사용자 게시물에 대한 무단 열람/수정/삭제 가능성
- 비공개 게시물의 무단 열람 가능성
- 대응방안 작성 시 보안대책 적용이 필요한 페이지를 명시함
- 예를들면, "Edit" 버튼의 강제 활성화 또는 Javascript의 Console 실행 등을 통해서 공격이 성공된 경우 대책 적용이 필요한 페이지는 공격을 수행한 페이지가 아닌, 공격에 의해 호출된 페이지 임 을 분명히 인식하고 보고서에 기술함
- 또한, Form 페이지와 Action 페이지 모두 대책 적용이 필요함을 보고서에 명시함 (특히, Action페이지가 보고서에 누락되지 않도록 주의)
- 중요 정보를 처리하는 페이지 접근 시 재인증을 실시하고 있는지 여부를 점검
- 개인정보 변경 페이지 접근 시 비밀번호 재입력
- 패스워드 변경 시 현재 패스워드 동시 입력 여부
이 항목은 정책적 항목이므로 "권고사항"으로 처리
- Request에서 정보 수정의 시발으 로 한단 되는 파라미터가 존재할 경우, 해당 식별값을 변조하여 타 사용자의 정보를 수정 가능한지 확인함
- 식별값 파라미터를 변조(삭제, 특수문자등)하여 전송하였을 경우 정상적으로 정보 조회가 진행되는지 여부를 먼저 테스트 해봄
- 아이디/패스워드 로그인과 공인인증서 로그인의 기능이 구분되어 있는 사이트의 경우 현재 로그인 상태를 무단으로 변경하거나 현재 로그인 상태에서 접근이 제한된 기능의 무단 접근 가능성을 테스트 함
- 다중 인증 요소를 요구하고 있는 작업 처리 시, 요구되는 인증 요소들 중 일부 요소의 생략/우회가 가능한지 여부를 점검
- 유료 컨텐츠를 불충분한 인증/인가 취약점을 이용하여 무단 사용 가능한지 여부를 확인
- 다운로드 URL에 인증/인가 모듈이 누락되었는지 여부에 대한 점검
- 로그인 필요 게시판의 다운로드 URL의 로그인 인증 누락 여부
- 열람 불가한 게시물의 첨부파일 다운로드 가능 여부
프로세스검증 누락
- 전자금융거래에서 가격 파라미터의 변조를 통하여 부당 이득의 취득 가능 여부를 점검
- 온라인 쇼핑몰, 온라인 강의 등 - 상품 결재, 환불, 상품권 구매/사용
- 온라인 뱅킹 - 이체, 대출, 에스크로, 공과금 납부, 연금 납부
- 카드/증권 - 대금 결재, 주식 매매
- 기타 - 온라인 캐쉬, 포인트, 게임머니 등
- 가격 파라미터의 변조 테스트 시, 음수 입력값에 대한 처리 여부를 반드시 확인
- 주 거래 요소상의 가격 파라미터 외에 다음과 같은 부가 서비스 상의 금액 변조 가능성을 점검
- 쿠폰/상품권 정보의 변조 (재사용, 무단 발급, 금액 변조, 환불 등)
- 배송비 정보의 변조, 삭제
- 수수료 정보의 변조, 삭제
- 사용자 인증 프로세스의 우회 가능성을 점검 (점검 대상 : SMS인증, 카드인증, 계좌번호인증, IPIN 이메일인증, OTP, 보안카드, 패스워드 등
- 인증 프로세스의 생략 가능성 (다음 단계로 직접 접근)
- 인증 결과값의 변조 가능성 (성공/실패 결과값의 변조)
- 프로세스 중간 단계에서의 정보 변조 가능성
보안 대책
불충분한 이용자 인증
- 사용자로부터 전송되어온 URL 파라미터, Cookie변수, HTTP Headler, Referer 등 모든 HTTP 코드 는 항상 변조되어 있을 가능성을 염두에 두고 프로그래밍해야 하며, 데이터 업데이트 및 인증 등 중요한 작업을 수행하기 위해서는 사용자로부터 전송되어온 HTTP 데이터의 사용을 가능한 자제 하고, DB, 세션 등 서버 측에서 입력된 정보를 이용해서 작업을 진행해야 함
- 만일 사용자로부터 전송된 값을 꼭 사용해야 한다면 반드시 이들 값의 변조 여부에 대한 유효성 검토를 거쳐야함
- 이 항목은 진단 대상의 구조 및 종류, 서비스, 유형 등에 따라서 다양한 형태의 취약점이 발생하 는 항목이므로 진단 시 각 진단대상의 특성에게 맞게 커스터마이징 된 보안 대책을 적용해야함
불충분한 이용자 인가
- 인증 후 접속할 수 있는 페이지의 경우 해당 페이지 주소를 직접 입력하거나 파라미터 변조를 통 해 접속하지 못하도록 페이지 각각에 대하여 인증을 위한 세션 관리를 해야함
- 하나의 프로세스는 일반적으로 여러 개의 페이지로 이루어지므로 접근 통제를 구현하고 있는 코 드는 구조화 모듈화가 되어 있어야 권한 체크가 누락되는 것을 방지할 수 있음
- 또한, 인증 과정을 처리하는 부분에 Client Side Script(Javascript, VBScript 등)를 사용하면 사용 자가 임의로 수정할 수 있으므로 Server Side Script(ASP PHP JSP)를 통하여 인증 및 필터링 과 정이 수행되어야함
- 히든 필드에 저장된 값은 소스보기로 확인할 수 있으므로 중요정보는 서버 측 세션을 사용하여 페이지 상에서 노출되지 않도록 구현함
- 불가피하게 사용 시 반드시 암호화하여 사용하고 서버 측에서 무결성을 검증해야함
- JAAS Authorization Framework나 OWASP ESAl Access Control 등의 인증 프레임워크을 사용함
프로세스검증 누락
- 다음의 우회 될 수 있는 플로우를 차단하여야 하며, 페이지 별 권한 매트릭스를 작성하여, 페이지에 부여된 권한의 타당성을 체크 후에 권한 매트릭스를 기준으로 하여 전 페이지에서 권한 체크가 이뤄지도록 구현
- 업무프로세스를 파악
- 권한의 종류 및 범위를 파악
- 페이지의 모든 기능을 수집하여 프로세스 상에 통제된 페이지에 접근이 가능한 것을 확인
모바일
모바일 - Burpsuite
인증서
개발자도구
chrome://inspect
앱 zip
JADX - 소스코드 분석
Hooking 하고싶은 함수, 변수
우클릭 - frida 스니펫
frida-ps -U
frida -U -l 공격스크립트.js -f _앱___
fridump3
packet Capture
adb logcat