SK Shieldus Rookies 19th/애플리케이션 보안11 [SK shieldus Rookies 19기][애플리케이션 보안] - Python 시큐어코딩 가이드 2 1. 보안 기능 보안과 관련한 기능을 구현하지 않거나 부적절하게 구현한 경우 발생 인증, 인가, 접근통제, 암호화, 권한관리 등을 부적절하게 구현 시 발생하는 보안 약점은 적절한 인증 없는 중요기능 허용, 부적절한 인가 등이 있다. 중요한 정보가 있을 때, 이 중요한 정보를 보호하기 위해서는 인가된 사용자만 접근할 수 있도록 접근 통제를 하고, 식별, 인증, 인가를 해야 한다. 접근 통제에 문제가 생기는 것은 중요 정보에 권한이 없는 사용자에게 중요 정보가 노출된다고 한다. 권한이 없는 사용자가 중요 정보를 획득했을 때 중요 정보를 알지 못하도록 방어하기 위해서 암호화한다. 1) 적절한 인증 없는 중요 기능 허용 인증된 사용자인지 확인하지 않고 기능을 제공할 때 발생 Django 에서 기본적인 인증 로그.. 2024. 4. 2. [SK shieldus Rookies 19기][애플리케이션 보안] - Python 시큐어코딩 가이드 1 1. 입력데이터 검증 및 표현 Python 시큐어코딩 가이드 프로그램 입력값에 대한 검증 누락 또는 부적절한 검증, 데이터의 잘못된 형식 지정, 일관되지 않은 언어셋 사용 등으로 인해 발생하는 보안 약점으로 SQL 삽입, XSS 등의 공격을 유발할 수 있다. 1) SQL 삽입 입력값에 쿼리 조작 문자열을 확인하지 않고 쿼리문 생성 및 실행에 사용하는 경우 발생 쿼리가 조작되어 실행되기 때문에 권한 밖의 데이터에 접근할 수 있고, 쿼리 실행을 통해서 제공되는 기능을 우회해서 사용해 해당하는 시스템의 제어권을 탈취할 수 있다. (1) 안전한 코딩 기법 DB API 사용 시 인자(arguments)를 통해 외부 입력값을 바인딩해서 사용하면 SQL 삽입 공격으로부터 안전하게 보호할 수 있다. 구조를 정의하고 정.. 2024. 4. 1. [SK shieldus Rookies 19기][애플리케이션 보안] - Bee box, Upload 1. Upload 취약점 파일 업로드 기능이 제공되는 경우, 파일의 크기와 개수, 종류들 제한하지 않고, 외부에서 접근할 수 있는 경로에 업로드 파일을 저장하는 경우 발생 1) 가이드 파일 크기와 개수를 제한하지 않는 경우 서버의 연결 및 디스크 자원을 고갈시켜 정상적인 서비스를 방해 종류를 제한하지 않는 경우 바이러스와 같은 파일을 업로드해서 해당 서버를 악성코드 유포지로 활용 서버에서 실행할 수 있는 파일을 업로드해서 실행 웹쉘(WebShell) 외부에서 접근할 수 있는 경로에 업로드 파일을 저장하는 경우 URL을 통해서 접근할 수 있는 경로에 위치 Web Document Root 아래에 위치 2) 파일 업로드 기능 확인 방법 form 태그 설명 위 코드가 파일 업로드에 사용되는 코드다. input .. 2024. 3. 31. [SK shieldus Rookies 19기][애플리케이션 보안] - WebGoat, Bee box, BeEF, XSS, CSRF 1. BeEF를 이용한 XSS 공격 1) 설치 및 실행 (1) 설치 sudo apt install beef-xss 입력으로 설치 (2) 실행 sudo beef-xss 입력 실행 처음 실행하면 기본 비밀번호 재 설정을 해야 한다. 각자의 비밀번호를 입력하고 넘어가면 127.0.0.1:3000 주소로 BeEF 페이지가 열린다. ID에는 beef를 입력하고 각자가 설정한 비밀번호를 입력하고 로그인한다. 2) XSS 공격 (1) XSS - Stored(Blog) 이전 포스팅에서 스크립트로 공격했던 페이지에서 BeEF로 공격 실습한다. (2) hook.js Kali 가상머신에서 XSS 취약점을 가지고 있는 게시판에 hook.js 파일을 실행하는 글을 등록한다. (3) BeEF 확인 BeEF 콘솔에서 스크립트 코드.. 2024. 3. 31. [SK shieldus Rookies 19기][애플리케이션 보안] - WebGoat, Bee box, XSS 1, 크로스 사이트 스크립트(XSS : Cross-Site Scripting) 공격자가 전달한 스크립트 코드가 사용자 브라우저를 통해 실행 1) 공격자가 전달한 스크립트 코드 사용자에게 가짜 페이지를 제공하고 입력을 유도해서 사용자 정보를 탈취 사용자 브라우저 또는 PC에 저장된 정보를 탈취 브라우저에 설치되어 있는 각종 플러그인의 취약점 활용 사용자 PC의 제어권을 탈취해서 원격지에서 해당 PC를 제어 BeEF 2) 유형 (1) Stored XSS(저장 크로스 사이트 스크립트) 공격자가 입력한 스크립트 코드가 취약한 서버에 저장되고, 사용자가 조회 시 저장된 스크립트 코드가 그대로 사용자 브라우저로 전달되어 실행 공격자가 게시판이 글을 쓸 때 를 입력하면 저장 페이지로 전달되어 그대로 DB에 저장된다... 2024. 3. 30. [SK shieldus Rookies 19기][애플리케이션 보안] - WebGoat, Bee box, Command Injection 1. Command Injection 애플리케이션에 운영체제 명령어(= 쉘 명령어)를 실행하는 기능이 존재하는 경우, 외부 입력값을 검증, 제한하지 않고 운영체제 명령어 또는 운영체제 명령어의 일부로 사용되는 경우 발생한다. 시스템의 제어권을 탈취해 해당 시스템을 원격에서 공격자가 마음대로 제어할 수 있게 된다. 1) 운영 체제 명령어를 실행하는 기능 (1) Java Runtime.getRuntime().exec("쉘 명령어") 쉘 명령어를 해당 시스템에서 실행하고 결과를 반환 (2) PHP exec("쉘 명령어") exec 설명 (3) Python subprocess.run([쉘 명령어]) os.system("쉘 명령어") 명령어 설명 2) 외부 입력값 검증, 제한 (1) 검증 추가 명령어를 실행하는 .. 2024. 3. 29. [SK shieldus Rookies 19기][애플리케이션 보안] - WebGoat, Bee box, SQL Injection 1. String SQL Injetcion Injection Flaws > LAB: SQL Injection > Stage 1 : String SQL Injection 목표는 Neville 사용자로 로그인하는 것 1) 로그인 버튼을 클릭했을 때 서버로 전달되는 내용 분석(GET 방식) attack?Screen=18&menu=1100&employee_id=112&password=입력한패스워드&action=Login Larry Stooge (employee) Moe Stooge (manager) Curly Stooge (employee) Eric Walker (employee) Tom Cat (employee) Jerry Mouse (hr) David Giambi (manager) Bruce McGuirre.. 2024. 3. 27. [SK shieldus Rookies 19기][애플리케이션 보안] - WebGoat, SQL Injection 1. 입력데이터 검증 및 표현 프로그램 입력값에 대한 검증 누락 또는 부적절한 검증, 데이터의 잘못된 형식 지정, 일관되지 않은 언어셋 사용 등으로 인해 발생하는 보안 약점으로 SQL 삽입, 크로스사이트 스크립트(XSS) 등의 공격을 유발할 수 있다. 1) 입력값 검증이 필요한 이유 프로그램은 입력, 처리, 출력이 순서로 반복되는 것이다. 프로그램을 안전하게 만들기 위해서는 처리 단계에서 안전한 처리가 이루어져야 한다. 안전한 처리란 개발자가 의도한 대로 동작해야 안전한 처리가 이루어진다. 처리만 개발자의 의도대로 동작한다고 안전해지는 것은 아니다. 입력 또한 신뢰할 수 있는 입력을 받아야 한다. 믿을 수 있는 시스템 내부의 값 같은 안전한 곳으로부터 전달된 입력은 신뢰할 수 있는 입력이지만, 믿을 수 .. 2024. 3. 25. [SK shieldus Rookies 19기][애플리케이션 보안] - WebGoat, Burp Suite 1. WebGoat 실행 C:\FullstackLAB\run.bat 실행 작업 관리자에 MySQL 서비스가 실행되고 있으면 실행할 때 오류가 발생할 수 있다. 작업 관리자를 실행해 MySQL을 종료하고 실행해야 한다. 1) Tomcat 서버 실행 이클립스에서 서버를 실행 JavaEE 퍼스펙티브로 전환(옵션) 퍼스펙티브를 초기화 (옵션) Server 탭을 클릭, 등록된 서버 확인 Tomcat을 선택, 실행할 서버를 선택 디버거 모드 또는 실행 모드로 서버 실행 실행 시 화면 비율이 사진과 같지 않다면 1번부터 진행하고, 사진과 같은 비율이라면 3번부터 하면 된다. 2) 서버 실행 확인 3) index.html 추가 index.html이 없으면 로그인 후 404 오류 발생 이클립스 WebGoat\src\ma.. 2024. 3. 24. [SK shieldus Rookies 19기][애플리케이션 보안] - 애플리케이션 보안 1 1. 애플리케이션 보안 웹 애플리케이션에서는 클라이언트, Web 서버, WAS 서버, DB 서버가 있다. 클라이언트가 웹에 요청할 때 static한 데이터는 웹에서 실행하고, dynamic한 데이터는 WAS 서버 관련된 데이터를 DB 서버에서 조회해서 그에 맞는 응답을 전달한다. 이때, 클라이언트에서 오는 데이터가 안전한지 아닌지를 판단해야 하고, 그 판단이 안전하지 않다고 판단되는 것들은 더 이상 내부로 진입할 수 없도록 하는 기법들이 나온다. 기법 중 가장 앞에 나오는 것은 방화벽인데 방화벽은 특정 IP나 특정 Port로의 진입과 진출을 제어하는 데 사용한다. Web 서버에 접근할 때 80 포트를 사용할 때, 80 포트로만 접근해야 하는데, 80 포트가 아닌 허용하지 않는 포트로 접근한다는 것은 정상.. 2024. 3. 24. 이전 1 2 다음