- [ 오픈소스 컨트리뷰션 양성 과정/Project Discovery ]Project Discovery 개발환경 구축2024-05-04 17:54:05Go언어 설치 하기wget 명령어를 실행해서 Go 언어 설치 파일을 다운로드합니다.wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz터미널에 tar 명령을 입력하여 Go 압축을 /usr/local 폴더에 풀어줍니다. 이미 Go를 설치하신 분들은 /usr/local/go 폴더를 미리 삭제해주어야 합니다.sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz아래 명령어를 실행하여 .profile 파일에 경로를 추가합니다.GOROOT는 Go가 설치된 경로를, GOPATH는 유저의 Go 워크스페이스 경로를 의미합니다. 이곳에 유저가 내려받은 외부 패키지들이 설치됩니다.echo ..
- [ 오픈소스 컨트리뷰션 양성 과정/오픈소스 이해하기 ]오픈소스 컨트리뷰션 프로세스2024-05-04 17:35:34본 문서는 오픈소스 프로젝트에 기여하는 방법에 대한 가이드입니다. 오픈소스 프로젝트에 기여하면서 다양한 경험과 기술을 쌓을 수 있으며, 오픈소스 생태계에 기여함으로써 다른 개발자분들에게도 도움이 될 수 있습니다.1. 프로젝트 이해선택한 프로젝트를 이해합니다. 프로젝트의 문서, 소스코드, 이슈 등을 살펴보면서 프로젝트의 구조와 흐름을 파악합니다. 이를 통해 어떤 부분에 기여할 수 있을지 생각해 볼 수 있습니다.2. 이슈 탐색프로젝트 이슈를 탐색합니다. 이슈는 버그 수정, 새로운 기능 추가 등 다양한 형태로 등록될 수 있습니다. 이슈를 통해 어떤 기여를 할 수 있는지 파악합니다. 이슈에 대한 자세한 내용을 파악하고, 프로젝트의 CONTRIBUTING.md 등의 기여 가이드도 함께 살펴봅니다.3. 로컬 환경 ..
- [ 오픈소스 컨트리뷰션 양성 과정/오픈소스 이해하기 ]오픈소스 이해하기2024-05-04 17:35:09보안 전문성을 높이고 코드를 더 잘 짜려면, 숙련된 개발자들이 이미 작성해둔 오픈소스의 코드를 읽고 어떤 문제를 어떤 구조로, 어떻게 해결했는지로 부터 배울 수 있습니다. 하지만, 실제로 오픈소스 코드를 읽는건 숙련된 개발자 에게도 절대 쉽지 않습니다. 현대의 오픈소스 소프트웨어는 코드 규모가 배우 방대하고 복잡하며 아키텍쳐를 한눈에 파악하기 어렵기 때문이죠. 본 교육 과정에서는 오픈소스 동작과 문제해결 방법을 이해하며 보안 취약점 템플릿 개발, 버그수정, 신규기능 개발 등 다양한 기여 활동을 통해 성장하는 것을 목표로 합니다.오픈소스 선택하기:순수 지식으로 관심있는 오픈소스자기 분야에서 활발하게 사용되고 있는 오픈소스관심있는 회사에서 운영하는 오픈소스프로젝트 진행 과정에서 활발하게 사용되는 오픈소스오픈..
- [ 웹애플리케이션 해킹/해킹 실습하기 ](A9) Security Logging Failures - Logging Security2023-10-04 14:57:27로깅은 시스템 운영에 있어 매우 중요한 부분입니다. 로깅의 목적은 애플리케이션에 대한 운영 모니터링 및 디버깅 뿐만 아니라 해당 시스템에 접속하는 사용자들의 행위를 감사하기 위한 목적도 있습니다. 특히, 각종 보안 이벤트에 대한 모니터링을 위해서도 로깅은 매우 중요합니다. 1번 문제 소개 이 문제는 "admin”이라는 username로 로그인에 성공한 것처럼 보이게 하는 것입니다. 최초에 아래와 같은 화면이 나타납니다. 위와 같이 username과 password를 입력할 수 있도록 하는 텍스트 상자가 존재하고, 그 아래의 빨간색 영역에 웹서버의 log 파일이 표시됩니다. 우선 아래와 같이 아무 값이나 한번 입력을 해보면 입력한 username 값이 웹서버 log 파일 상의 가장 우측에 표시되는 것을 알..
- [ 웹애플리케이션 해킹/해킹 실습하기 ](A7) Identity & Auth Failure - Secure Passwords2023-10-04 14:46:02본 섹션에서는 강력한(strong, 보안적으로 강인한) 패스워드를 생성하고 안전하게 저장하는 방법에 대해 다룹니다. 1번 문제 소개 무차별 공격 시도에 강인하도록 충분히 strong한 패스워드를 입력하라는 간단한 문제입니다. 일반적으로 잘 알려진 패스워드 설정 규정과 같이 패스워드를 입력하면 아래와 같이 문제가 해결됩니다. [참고자료] https://www.kisa.or.kr/2060305/form?postSeq=14&lang_type=KO
- [ 웹애플리케이션 해킹/해킹 실습하기 ](A7) Identity & Auth Failure - JWT tokens2023-10-04 14:35:21JWT(JSON Web Token) 토큰은 RFC 7519 open standard로서, JSON 포맷을 이용하여 사용자에 대한 속성 정보를 저장하는 방식이며, 사용자 인증이나 정보 교환에 사용됩니다. 1번 문제 소개 JWT 토큰 내에 저장되어 있는 user name을 알아내는 간단한 문제입니다. JWT 토큰은 base64 인코딩되어 있기 때문에, 아래와 같이 토큰 값을 base64로 디코딩하면 내용을 쉽게 알 수 있습니다. 2번 문제 소개 JWT 토큰을 변조하여 admin으로 로그인하고, 투표를 초기화시키는 문제입니다. 우선, proxy 도구를 사용하여 intercept를 on 시켜놓고, 사용자를 아래와 같이 Tom으로 변경합니다. (Guest 외에 다른 사용자 아무거나 선택하면 됨) 그러면 아래와 같..
- [ 웹애플리케이션 해킹/해킹 실습하기 ](A7) Identity & Auth Failure - Insecure Login2023-10-04 14:15:03본 섹션에서는 통신 구간의 암호화에 대한 이야기를 다루고 있습니다. 로그인 시에 암호화가 되어 있지 않으면, 중간에서 패킷 스니핑을 통해 데이터를 가로챌 수 있고, 이를 통해 계정 정보가 유출될 수 있는 위험이 존재하기 때문에, 로그인 데이터는 반드시 암호화되어 전송되어야 한다는 것입니다. 1번 문제 소개 문제 화면이 나오면 아래와 같이 Log in 버튼이 존재하는데, 이는 로그인 시의 계정 정보를 다른 사용자에게 전달되는 기능이라고 문제에 기재되어 있습니다. 이 때 전송되는 아이디와 패스워드를 아래 쪽 텍스트 박스 두 개에 각각 입력하고 Submit을 클릭하면 되는 문제입니다. Log in 버튼 클릭 시 데이터를 가로채기 위해서, 물론 Burp Suite와 같은 웹 Proxy 도구로도 값을 가로챌 수 ..
- [ 웹애플리케이션 해킹/해킹 실습하기 ](A7) Identity & Auth Failure - Authentication Bypasses2023-10-04 13:50:30Authentication Bypasses(인증 우회)는 여러 가지 방법으로 발생되지만 일반적으로 설정 또는 구현 로직 안에 특정 결함이 존재할 때 이를 통해 발생됩니다. 1번 문제 소개 2FA Password Reset 실제 PayPal에서 있었던 2FA 인증우회 문제점과 비슷한 형태의 취약점을 가진 문제로서, 아래와 같이 두 개의 text 값을 입력 받아서 내용을 확인하는 과정에서 해당 값을 알지 못해도 인증은 우회할 수 있도록 입력값을 조작하는 문제입니다. 두 개의 텍스트 입력 값을 전송하는 과정에서, 중간에 Burp Suite와 같은 Proxy 도구를 활용하여 전송되는 파라미터의 이름을 각각 다른 값으로 변경하여 전송시키면, 해당 파라미터값이 없을 때의 예외처리 로직 부재로 인해 패스워드 인증 절..
- [ 웹애플리케이션 해킹/해킹 실습하기 ](A3) Injection - SQL Injection (intro)2023-10-04 13:33:241번 문제 소개 1번 문제는 SQL에 대한 기본적인 개념과 사용법을 물어보는 문제로 조회 SQL Query를 사용하여 문제를 풀 수 있습니다. SQL이란 무엇입니까? SQL은 표준화된(1986년 ANSI, 1987년 ISO) 프로그래밍 언어로 관계형 데이터베이스를 관리하고 그 안의 데이터에 대해 다양한 작업을 수행하는 데 사용됩니다. 데이터베이스는 데이터 모음입니다. 데이터는 행, 열 및 테이블로 구성되고 인덱싱되어 관련 정보를 보다 효율적으로 찾을 수 있습니다. [그림1] 문제 화면 아래 쿼리문을 사용하여 Bob Franco의 부서를 검색하면 문제가 풀립니다. SELECT department FROM Employees WHERE last_name = 'Franco'; [그림2] 문제 풀이 화면 2번 문..
- [ 웹애플리케이션 해킹/해킹 실습하기 ](A2) Cryptographic Failures- Crypto Basics2023-09-29 10:39:561번 문제 소개 1번 문제는 인코딩과 암호화에 대한 차이에 대해서 물어보는 문제로 base64 인코딩을 이해하고 문제에 있는 base64 문자열을 디코딩하여 문제를 풀 수 있습니다. Base64 인코딩은 모든 종류의 바이트를 특정 범위의 바이트로 변환하는 데 사용되는 기술입니다. 이 특정 범위는 ASCII로 읽을 수 있는 바이트입니다. 이렇게 하면 비밀 키나 개인 키와 같은 바이너리 데이터를 더 쉽게 전송할 수 있습니다. 심지어 인쇄하거나 기록할 수도 있습니다. 인코딩은 되돌릴 수도 있습니다. 따라서 인코딩된 버전이 있으면 원본 버전을 만들 수 있습니다. [그림1] 문제 화면 문제에 있는 아래 base64 인코딩 문자열을 https://www.base64decode.org/ 사이트에 접속하여 base64..