본문 바로가기

Web hacking/개념 정리 & 심화28

[Dreamhack] W - STAGE 2 Background: Web 1. 웹 HTTP를 이용해서 정보를 공유하는 서비스를 웹이라고 한다. 정보 제공 주체는 웹 서버, 정보를 받는 이용자를 웹 클라이언트이다. 웹 서비스의 구조에서 이용자의 요청을 받는 부분을 프론트엔드, 요청을 처리하는 부분을 백엔드라고 부름 프론트엔드는 웹 리소스로 이루어져 HTML, CSS, JS 등으로 이루어진다. 2. HTTP/HTTPS 2-1 HTTP HTTP란 서버와 클라이언트의 데이터 교환을 요청과 응답 형식으로 정의한 프로토콜이다. 웹 서버는 HTTP 서버를 HTTP 서비스 포트에 대기시킨다. 이 포트는 일반적으로 TCP/80 또는 TCP/8080이다. 네트워크 포트와 서비스 포트 네트워크 포트 중 특정 서비스가 점유하고 있는 포트를 서비스 포트라고 하며 각 서비스는 전송 계층의 정해진 프로.. 2023. 2. 22.
4) SQL injection 및 XSS 보안 대책 상세 4. 보안 대책 4.1. SQL Injection 취약점 항목 SQL Injection 취약점 개요 공격자가 임의의 SQL 질의 문을 삽입할 수 있는 공격이다. 사용자의 입력을 SQL 질의 문에 그대로 넣어서 사용했기때문에 발생된다. 이것으로 인해 데이터 우회와 변조, 추가, 추출이 가능하다. 보안 조치 방법 - 보안 조치 방법 1. Mybatis의 경우 ${ }를 #{ }로 바꾸어 주어 SQL Injection에 대한 보안 대책을 적용한다. 2. JPA의 경우, Spring Data JPA를 사용하면 제공하는 API(save(), saveAll() 등)을 사용해 내부적으로 이미 Parameter Binding을 적용시킬 수 있다. 다만, JPA를 사용해 직접 짜는 경우엔 취약할 수 있기때문에 주의해야한.. 2023. 1. 17.
3) 게시판 개발 및 SQLi, XSS 취약점 테스트 1.1. 개발 기술서 환경 구성은 아래와 같다. 스프링 부트 Spring boot 2.7.3 빌드 프레임워크 Gradle 템플릿 엔진 Thymeleaf SQL Mapper 프레임워크 Mybatis 데이터베이스 MySQL 1.1.1. 로그인 기능 구현 [초기 화면] 1. 처음 페이지에 들어갔을 때 보이는 화면으로 로그인을 제외한 다른 기능 사용이 불가능함. [초기 화면 > 로그인] 2. 로그인 페이지(login.html)와 로그인이 성공했을 때 보이는 메인 페이지 구현. [초기 화면 > 로그인 > 메인 화면] 3. 로그인 후 메인 페이지에 진입한 것을 확인한다. 4. 로그인과 로그인을 수행하는 SQL문에 대한 소스코드이다. 4. 로그인 수행 시 세션을 name에 저장해 로그인 여부를 체크하는 interce.. 2023. 1. 16.
웹 서비스의 구조 1.1. 웹 서비스의 구조 1. 웹의 구조 웹은 www서버로 인터넷을 연결한 다수의 사용자가 웹 서비스를 할 수 있게 해주는 통로이다. 웹 환경은 서비스를 제공하는 서버와 서비스를 이용하는 클라이언트로 구성된다. 이 둘의 연결은 사용자가 URL 주소를 입력하거나 링크를 클릭할 때마다 일어나서, TCP 연결이 설정되고 클라이언트가 서버에 html 문서를 요청하면 서버는 HTTP로 해당 문서를 클라이언트에게 전송한다. 메시지 전송이 완료되는 즉시 TCP 연결이 끊기기 때문에 클라이언트가 웹 브라우저 화면에 문서를 띄울 때는 이미 서버와의 연결이 끊겨 있다. 마이크로 소프트, 구글 크롬처럼 서버가 제공하는 웹 문서를 사용자에게 보여주는 프로그램은 웹 브라우저라고 한다. HTML로 작성된 문서와 그림, 음성과 .. 2023. 1. 13.
HTTPS 프로토콜의 모든 것(SSL인증서, SSL 피닝, TLS, HTTP 인증) 2.1 HTTP 기본 HTTP는 HTML 문서와 같은 리소스를 가져올 수 있도록 해주는 프로토콜이다. HTTP는 웹에서의 모든 데이터 교환의 기초이며 클라이언트-서버간에 사용되는 프로토콜이다. HTTP는 애플리케이션 계층의 프로토콜로, TCP/IP 프로토콜을 통해 통신한다. (=tcp 기반으로 만들어진 프로토콜이다) HTTP는 확장성이 뛰어나 이미지, 비디오나 폼 결과를 서버로 POST 하기 위해서 도 사용돤다. ☑️ HTTP는 상태 비저장 프로토콜이지만 세션을 사용한다. ☑️ HTTP 기반 API로는 user agent와 서버간의 데이터를 교환하는데 사용될 수 있는 XMLHttpRequest API가 있다. XHR 객체는 서버와 상호작용할 떄 사용한다. 페이지의 새로고침 없이도 URL에서 데이터를 가져.. 2022. 12. 4.
Django를 이용한 SSTI 실습 환경 설정 2022.11.17 - [Web hacking/웹 정리 & 심화] - Django 설치 및 실습 - 1 2022.12.01 - [Web hacking/웹 정리 & 심화] - Django 설치 및 실습 - 2 2.1.2 SSTI 공격 방법 - Django 페이로드와 url, view 구문 참조 https://github.com/Lifars/davdts GitHub - Lifars/davdts: Simple Django to show post-exploitation options when server-side template injection (SSTI) is present in Simple Django to show post-exploitation options when server-side t.. 2022. 12. 1.
Django 설치 및 실습 - 2 2022.11.17 - [Web hacking/웹 정리 & 심화] - Django 설치 및 실습 - 1 (2) 페이지 만들기 프로젝트 이름(testproject)으로 만들어진 폴더 내 urls.py에 아래의 내용을 추가한다. 해당 폴더 밑에 생성한 애플리케이션(ssti)의 내용을 찾을 수 있도록 한다. 또한 앱 내 url 파일에서 입력해도 경로를 찾을 수 있도록 include를 통해 포함시킨다. from django.contrib import admin from django.urls import path, include urlpatterns = [ path("admin/", admin.site.urls), path('ssti/', include('ssti.urls')), ] 앱 경로에 url 파일을 새로.. 2022. 12. 1.
Django 설치 및 실습 - 1 2.1 자주 사용하는 프레임 워크 - Django 장고란 보안이 우수하고 유지보수가 편리한 파이썬 웹 프레임워크이다. MVT(Model View Template) 아키텍쳐로 아래와 같이 분류된 파일에 대해 일련의 단계를 수행합니다. URLs: 해당 mapper는 요청 URL을 기준으로 HTTP 요청을 적절한 뷰로 보내주기 위해 사용됩니다. Views: 뷰는 HTTP 요청을 수신하고 HTTP 응답을 반환하는 요청 처리 함수이다. 뷰는 Model을 통해 요청을 충족시키는데 필요한 파이썬 객체입니다. Model: 모델은 응용 프로그램의 데이터구조 정의, 데이터베이스 기록관리 및 쿼리를 제공하는 파이썬 객체입니다. Templates: 템플릿은 파일의 구조나 레이아웃을 정의하고 실제 내용을 보여주는데 사용하는텍스.. 2022. 11. 17.
Flask(jinja)를 이용한 SSTI 실습 파이썬의 웹 프레임워크인 Flask는 파이썬 환경에서 웹 환경을 구현해 주며 간단하게 사용할 수 있다. 2.2.1 Flask 실습 설치 명령어는 다음과 같다. 나는 anaconda를 사용하기 때문에 해당 프롬프트 창에서 flask를 설치, 실행시켰다. pip install Flask 설치 후 해당 경로에서 python [파일 명].py로 실행이 가능하다. 2.2.2 템플릿 엔진-jinja2 ⇒ jinja2는 파이썬용 템플릿 엔진이다. 개념 플라스크는 WSGI 구현체인 Werkzueg와 템플릿 jinja2을 사용한다. jinja는 플라스크 설치 시 자동으로 같이 설치된다. 플라스크 템플릿 파일들은 /templates 폴더에 위치해야한다. 물론 독립적으로 사용 또한 가능하다. 2) 특징 jinja의 가장 강.. 2022. 11. 15.