OAuth 인증 제공자가 지켜야 하는 보안 사항 1. TLS 적용 2. 최소 범위(scope) 설정 3. Refresh Token 사용 관리 4. State 파라미터 활용 5. Redirect URI 검증 및 고정 6. 클라이언트 ID 및 비밀 보호 7. 액세스 토큰의 수명 제한 8. Implicit Grant Flow 사용 제한 9. 액세스 토큰의 안전한 전송 10. 로그 및 모니터링 (IDS/IPS 포함) 11. 동적 클라이언트 등록 제한 12. 사용자 로그아웃 시 모든 토큰 무효화 13. 클라이언트 자격 증명 보호 14. Bearer 토큰의 안전한 전송 15. 권한 부여 코드와 토큰 재사용 방지 16. 사용자 정보의 최소한 제공 17. 불필요한 인증 정보 전송 금지 18. 만료된 토큰 처리 19. ..
인증 및 권한 부여 • API Gateway를 사용하여 인증 및 권한 관리를 중앙화한다. • 적절한 인증 방식을 구현한다: • API 키 기반 인증 • JWT 기반 인증 • OAuth 2.0 • 기본 인증(HTTPS 필수) • 상호 SSL 인증 • 역할 기반 접근 제어(RBAC)를 적용한다. • 강력한 비밀번호 정책을 수립하고 다요소 인증을 적용한다. • 로그인 시도 제한 및 계정 잠금 정책을 도입한다. • 토큰과 자격 증명을 안전하게 저장하고 전송한다. 입력 검증 및 데이터 유효성 검사 • 모든 입력 데이터를 서버 측에서 검증한다. • 화이트리스트 기반의 입력 검증을 수행한다. • 데이터 타입, 길이 제한, 형식 검증을 적용한다. • 인젝션 공격(SQL, NoSQL, OS 명령어 등)..
이번 세션은 SQL Injection 중 UNION Injection과 Blind Injection에 대한 내용이다. 첫 번째 퀴즈는 UNION Injection을 이용해서 유저의 패스워드 정보를 탈취하는 퀴즈인데, 친절하게도 두 개의 테이블에 대한 정보를 제공해준다. SQL Injection이 발생하는지 확인하기 위해 쿼리 에러가 발생할 수 있도록 입력값을 구성해서 전달해보니, 에러가 발생하는 것을 알 수 있었다. 이를 통해 SQL Injection이 가능할 수 있다는 것을 알 수 있다. 특히 에러 메시지를 통해 실제 실행되는 쿼리 구문이 무엇인지 까지 전달해주고 있어, SQL Injection에 더욱 도움이 되고 있는 상태이다. UNION SQL Injection을 할 때에는 테이블명, 필드명을 알..
이번 세션은 Injection 취약점 중 SQL Injection에 대한 내용이다. 세션 내용은 기본적인 Query 지식을 시작으로 간단한 SQL Injection 내용을 순으로 다루고 있다. 앞 부분에서 다루고 있는 Query에 대한 내용은 간단히 질문에 해당하는 쿼리구문을 입력만 하면 되는 문제들이므로 넘어가고, 후반부의 SQL Injection 부분을 다뤄본다. 첫 번째 문제는 주어진 쿼리구문이 SQL Injection이 발생하도록 3개의 셀렉트 박스에서 값을 선택해서 실행해보도록 디자인 되어 있다. 쿼리구문이 항상 참이 되도록 아래와 같이 선택하여 문제를 통과한다. Smith' or '1'='1 두 번째는 직접 쿼리를 입력하도록 좀 더 어렵게 퀴즈가 나왔다. 이때 두 필드 중 한개의 필드에서만 인..
ChatGPT를 이용하여 AWS re:Inforce 2023 컨퍼런스 중 애플리케이션 보안과 관련된 세션 내용을 정리하고 어떤 트랜드가 있는지 확인해 보았다. https://docs.google.com/spreadsheets/d/1_BE8hfimkhHcgajB38Yt34F_64B19EvIWuwKA8ORxyw/edit#gid=1979300205 re:Inforce 2023 Application Security Trends AWS re:Inforce 2023의 애플리케이션 보안 관련 세션들은 현대적인 애플리케이션 개발 환경에서 보안이 중요한 측면 중 하나임을 강조합니다. 클라우드 서비스, AI/ML 기술의 통합, 개발 및 배포 프로세스에서의 보안 통합과 같은 다양한 주제를 다루며, DevSecOps 문화의 ..
ChatGPT를 이용하여 AWS re:Invent 2022 컨퍼런스에서 이야기 한 내용을 정리하고 어떤 트랜드가 있는지 확인해 보았다. https://docs.google.com/spreadsheets/d/1_BE8hfimkhHcgajB38Yt34F_64B19EvIWuwKA8ORxyw/edit#gid=0 1. Re:Invent 2022 Trends 서버리스 및 마이크로서비스 아키텍처 클라우드 환경에서 서버리스와 마이크로서비스 아키텍처의 채택이 증가하고 있으며, 이는 개발의 속도와 유연성을 높이는 동시에 운영 복잡성과 보안 과제를 증가시키고 있습니다. 이러한 아키텍처는 DevOps, 보안, 인프라 자동화에 대한 새로운 접근 방식을 요구합니다. 암호화 및 데이터 보호 암호화 및 데이터 보호에 대한 관심이 커..
이번 세션에서는 준비된 도커이미지를 다운받고, 해당 이미지의 /root 경로에 있는 파일을 확인하여 제시한 암호문을 복호화하는 것이다. 우선 도커 이미지부터 다운받고 bash shell로 해당 도커에 접속해보자 docker exec -it [docker image id] /bin/bash 이제 /root에 접속해보면, 현재 사용된 계정은 권한 때문에 접근이 불가능하다는 메시지를 받게 된다. 그럼 이번에는 passwd 파일을 확인하여 관리자 그룹으로 변경해보면 어쩔까 싶어, /etc/passwd 파일을 확인해 보았다. 역시 현재 사용되고 있는 webgoat 계정의 UID/GID는 root와 다른 값이였다. 이제 이 /etc/passwd를 로컬로 다운로드 받아 수정 후 관리자 UID/GID로 변경을 해보자 ..
이번 세션은 서명과 관련된 내용이다. 우선 이번 세션은 자주 접하지 못했던 부분이라 온전히 혼자 힘만으로 해결할 수 없었고, 다른 유튜버가 풀이한 내용을 많이 참고하여 진행하였다. https://www.youtube.com/watch?v=9lQJa4zHRYM 우선 해당 세션에서는 RSA 암호화 알고리즘에 대한 Private Key를 제공할 때, Pubilc Key에 대한 Modulus를 구하고, 이 Modulous를 이용한 서명을 확인하라는 퀴즈를 제공하고 있다. 사실 나는 Modulus가 무엇인지 부터 막막했다. 이럴땐 역시 ChatGPT에게 문의해본다. Modulus는 Public Key에 저장되고, 이 값은 암호화나 서명 검증 등에 사용된다는 것을 확인할 수 있었지만, 여전히 완전히 이해가 되지 않..
WebGoat의 두 번째 도메인은 암호화와 관련된 내용이다. 여기서 다루어야 하는 내용은 후반부에 꽤 많은 내용이 있어, 나눠서 작성하려고 한다. 처음 이야기하는 부분은 인코딩과 관련된 내용이다. Basic Authentication으로 전달되는 입력값을 통해 계정정보를 탈취하라는 퀴즈이다. Authorization: Basic bXl1c2VyOm15cGFzc3dvcmQ= Basic Auth는 계정정보를 암호화가 아닌 인코딩을 통해 전달하는 방법이기 때문에, 해당 인증값이 노출될 경우, 디코딩을 통해 계정정보를 확인할 수 있다. 간단히 해당 정보를 디코딩 해보면 예문에서 이야기 했던 계정정보와 똑같은 값을 확인할 수 있었다. 그럼 실제 문제로 나온 Basic Authentication을 동일한 방법으로 ..
이번 퀴즈는 인증쿠키 스푸핑을 통한 인증우회 방법에 대한 내용이다. 주어진 내용은 webgoat, admin 계정과 패스워드를 제공해주고 있으며, 이때 Tom 계정으로 스푸핑을 진행하는 것이다. 우선 주어진 계정정보를 통해 어떤 쿠키가 생성되고 있는지 확인해보자 다음으로 로그인 시 다른 계정의 인증토큰을 함께 넣었을 때, 어떻게 반응하는지 확인해보자 위 스크린샷을 보는 것처럼, 전달한 계정정보와 상관없이 인증쿠키가 있을 경우, 인증쿠키를 통해 로그인이 진행된 것을 확인할 수 있다. 그렇다면 퀴즈의 의도는 인증쿠키의 값에 계정정보 등이 포함되어 결정되고 있어, 해당 패턴을 유추하여 특정 계정에 해당하는 인증쿠키를 생성하여 인증로직을 우회하는 것일 것이다. 그럼 인증쿠키가 어떻게 생성되고 있는지 확인해보도록..
- Total
- Today
- Yesterday