본문 바로가기

전체 글115

[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.
[SK shieldus Rookies 19기][애플리케이션 보안 ] - 실습 환경 구성 1. 실습 프로그램 다운로드 VMware workstation WebGoat bWAPP Kali Linux 다운로드 후 설치와 압축 해제한다. 단, WebGoat 파일인 FullstackLAB_20240312은 C:\ 경로에 압축 해제해야 한다. 2. VMware workstation 위 링크는 VMware workstation Pro의 링크다. workstation Pro는 무료 30일 라이선스만 지원하고 시리얼 키를 구매해야 정상적인 사용이 가능하다. 무료 30일 라이선스가 만료되어도 가상머신의 전원만 못 켤 뿐 생성 및 기타 작업이 가능하다. (구글, Github 등 인터넷에 시리얼 키가 돌아다닌다고는 하는데.... ) 추천하진 않는다. 각자의 판단하에 선택하기를 바란다. Pro의 가장 유용한 기능.. 2024. 3. 24.
[SK shieldus Rookies 19기][Django] - Django 3 1. 스타일 적용 웹 페이지를 만들 때 세 가지 요소가 있다. 구분 HTML CSS JavaScript 역할 DATA Style Action HTML은 데이터를 나타내는 데 구조적으로 표현하기 위한 것이다. 데이터는 태그를 둘러싸여 있는데 기계가 해석하기에는 편한데 사람이 보기에는 어렵다. 그래서 이것을 구조와 형식을 만들어주는 CSS로 스타일을 만드는 것이다. CSS는 해당하는 문서의 구조, 형식, 색깔, 배치, 모양을 다루는 것이다. 데이터들을 시각화해서 사람이 쉽게 해석할 수 있도록 하는 것이 CSS에서 스타일을 만드는 것이다. 기계는 태그를 통해 해석하는 반면에, 사람은 시각적인 데이터를 가지고 해석한다. 그래서 CSS는 사람을 위한 것이다. Java Script는 동작을 처리하기 위해 사용한다... 2024. 3. 24.
[SK shieldus Rookies 19기][Django] - Django 2 1. DTL(Django Template Language) Django 템플릿 언어 변수 {{ 변수 }} 필터 변수의 값을 특정 형식으로 변환할 때 사용 변수 다음에 | (파이프)를 넣어서 필터를 명시 필터는 : 문자를 통해 인자를 받을 수 있음 {{ text | escape | lineberaks }} {{ text | truncatewords:30 }} {{ text | default:"default value" }} {{ text | length }} {{ text | upper }} 태그 {% 태그 %} if 문 또는 for 문처럼 흐름을 제어하기 위해 사용 {% extends %}와 같이 단독으로 사용하는 템플릿 태그 {% if %} {% endif %}처럼 반듯이 닫아줘야 하는 템플릿 태그 주.. 2024. 3. 23.
[SK shieldus Rookies 19기][Django] - Django 1 1. 앱 생성 1) pybo 앱 생성 django-admin startapp pybo 생성 tree .\pybo /f 생성된 파일 확인 설치 후 앱 생성까지 다 끝나서 개발 서버로 들어가면 되지만 URL을 정의하지 않아서 오류가 난다. 2) URL 맵핑 config\urls.py 파일에 path() 함수를 사용해서 URL과 요청을 처리할 함수 연결 from pybo import views path('pybo/', views.index), from django.contrib import admin from django.urls import path from pybo import views urlpatterns = [ path('admin/', admin.site.urls), path('pybo/', vie.. 2024. 3. 21.
[SK shieldus Rookies 19기][Django] - 실습 환경 구성 1. Django 보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하도록 도움을 주는 파이썬 웹 프레임워크 Django는 다음과 같은 소프웨어를 개발하는데 도움을 준다. 1). Complete(완결성) "Batteries included"의 철학을 기반으로 개발자들이 개발하고 싶은 거의 모든 것을 개발하는데 도움을 줌 2) Versatile(다용도) 문서관리시스템과 Wiki, SNS, 뉴스에 이르기까지 다양한 종류의 웹 사이트를 빌드하는 데 사용 클라이언트측 프레임워크와 협업할 수 있음 HTML, RSS 피드, JSON, XML 등 대부분의 형식으로 콘텐츠 전송할 수 있음 3) Secure(안전) 개발할 때 실수하기 쉽지만 고려해야 하는 보안 문제에 대해서 많은 도움을 줌 유저의 계정과 비밀번호.. 2024. 3. 20.
[SK shieldus Rookies 19기][Python, SQL] - 실습 3 1. CLI 기반의 CRUD 프로그램 출력 예시 ========================== 메뉴 -------------------------- Q : 종료 ⇒ 프로그램을 종료 I : 등록 ⇒ 등록 화면으로 이동 S : 검색 ⇒ 검색 화면으로 이동 ========================== 메뉴를 선택하세요 >>> ========================== 회원 등록 -------------------------- 이름 : 홍길동 나이 : 23 이메일 : hong@test.com ========================== Y : 등록 / N : 취소 Y → members 테이블에 입력한 내용을 저장 → 등록했습니다. 출력 후 메뉴 화면으로 이동 N → 메뉴 화면으로 이동 ======.. 2024. 3. 20.
[SK shieldus Rookies 19기][SQL] - SQL 1. SQL 연결, 실행 순서 데이터베이스와 연동을 하기 위해서는 데이터베이스와 연결을 해야 한다. 이때 connect() 메서드를 사용한다. 연결이 되면 연결 객체가 만들어지는데 객체 안에는 커서라는 게 있다. 커서란 애플리캐이션 하고 데이터베이스 쪽에 서로 SQL 문을 전달하고 데이터베이스에서 그 SQL문을 실행한 결과를 받아오는 역할을 한다. SQL 문과 실행결과를 실어 나르는 객체다. SQL 문을 실행을 전달할 때는 커서의 execute 함수를 사용한다. commit()은 앞에서 했던 작업들을 DB에 반영되도록 하는 함수 close() 연결을 닫아 준다. 2. SQL 유형 명령어 종류 명령어 설명 데이터 조작어 (DML : Data Manipulation Language) SELECT 데이터베이스.. 2024. 3. 19.