본문 바로가기

웹 보안

(9)
HTTP Smuggling HTTP request smuggling 취약점은 HTTP/1 version에서 발생한다. 해당 취약점은 Front-end와 Back-end에서 http request를 해석하고 처리하는 방식에 따라 응답이 달라지게 되는 점을 활용한 취약점이다. 이를 알려면 Content-Length와 Transfer-Encoding 헤더에 대한 개념을 파악해야한다. - Cotent-Length header 해당 헤더는 Request packet의 body message의 크기를 표기한다. 만약, content-length 값이 10bytes인데 entity body에서 5bytes 값만 있다면 server 입장에서는 data가 아직 들어오지 않았다고 판단하여 기다릴 것이다. 이 때, request가 추가적으로 들어오지..
JWT 인증 우회 JWT 이해JWT는 JSON Web Token의 약자로 system 간에 암호화된 JSON data를 전송하기 위한 표준화된 형식이다. 주로 인증, session 처리 및 Access 제어 메커니즘의 이룹로 사용자에 대한 정보를 전송할 때 사용한다. Session token과 달리 server가 필요로 하는 모든 data는 전부 JWT 자체 내 client에 저장되게 된다. HTTP의 Connectionless, Stateless 두 가지 특성으로 인하여 token, cookie, session들을 사용하게 된 것은 설명하지 않아도 알고 있을 것이다. Connectionless: 일회성 통신, 한번 통신하면 바로 연결 끊기 (3-way -> 4-way handshaking) Stateless: 이전 상태..
MVC 패턴 MVC 패턴 이란소프트웨어 디자인 패턴 중 하나로 "Model - View - Controller" 의 약자Model과 View, Controller는 밑의 그림과 같은 흐름으로 이뤄진다. 사용자는 View를 통해서 UI를 확인하고 사용자가 Controller에 내린 명령을 통해 View에서 그 결과를 확인할 수 있다. 명령을 받은 Controller는 Model에게서 data를 받아오고 받아온 data를 통해 View에서 보여준다. 간단하게 표현하면 Model, View, Controller는 다음과 같다. Model = DB View = Web Controller = WAS controller 파일은 .do 확장자를 가진 파일이며 사용자가 요청한 data에 대해 동적으로 이를 DB로 전달하게 된다. ..
HTTP method status code 1. HTTP request method 대표 메소드 6가지 GET: URI에 자원을 지정하여 server에 요청하는 method로 주로 검색할 때 사용한다. POST: URI에 지정한 자원으로 data를 전달 후, 처리 결과를 server에 요청하는 method로 data를 http request body에 넣어 전달하므로 GET과 달리 전달한 data가 URI에 노출되지 않음 HEAD: server가 response packet을 보낼 때, body를 제외하고 header만 응답해주는 method 주로 URL link 유효성 검증을 위해 사용한다. OPTIONS: 사용할 수 있는 method를 확인한다. PUT: 자원을 업로드할 때 사용하는 method로 request body에 포함된 data를 요..
Blind SQL injection 이번 시간에는 Blind SQL injection에 대해서 배워보도록 할 거야 저번 시간에 SQL injection의 종류는 크게 두 가지로 나눠져 있다고 했지? 바로 Non blind injection과 Blind injection으로 나눠져 있는데 지난 시간까지는 Non blind injection을 통해서 직접적으로 query에 대한 응답을 확인해 가면서 injection을 수행했어 오늘은 지난 시간과는 다르게 Blind injection에 대해서 배워보고 어떻게 injection이 수행되는지 하나씩 실습해 보도록 할게 바로 go~ go~! substring 활용 substring 함수를 통해서 입력한 JNU에 대해 구간을 정해서 문자를 출력하도록 하고 있어 substring ('JNU',1,3)의..
Non-Blind SQL injection 지난 시간에 SQL injection을 실습해 보고 종류에 대해 알아봤어 오늘은 SQL injection 과정을 살펴보려고 해 injection을 실행하는데 있어서 필요한 명령어인 union에 대해 알아보고 MYSQL 안에 database 구조와 table이 어떻게 이루어졌는지와 이를 이용한 침투 방법을 보여줄게! Union 명령 union 명령어는 field column에 외부 table 값을 넣을 수 있도록 해주는 database 명령어야 좀 더 정확히 말하자면 밑에 사진을 보면서 이야기해 볼게 market이라는 table에는 현재 총 4개의 column을 갖고 있고 staff라는 table에는 총 3개의 column을 갖고 있어 union 명령을 통해서 market table안에 staff tabl..
SQL injection 이번 시간에는 OWSAP top 10 에서도 많이 나오는 injection 공격에 대해서 배워볼거야 injection 공격 중에서도 가장 많이 일어나는 공격이 바로 SQL injection인데 SQL injection이 어떤 방식으로 공격이 진행되는지 알아보도록 할께~ 먼저 내가 만든 웹 페이지에 3개의 계정으로 회원가입을 진행해보도록 할께 admin, test, jinwoo 라는 아이디로 3개의 계정을 만들고 DB에 계정들이 잘 입력되었는지 확인해보자 자 그러면 이제 로그인 창에 들어가서 접속이 잘 되는지 확인을 한 이후, 이제 여기서부터 injection 공격을 진행해도록 할건데 id , pw를 입력하는 곳에 'or' 1=1 입력 후 로그인을 시도해보도록 해보자 그리고 결과가 어떻게 나오는지 한 번 ..
XSS 공격 오늘은 XSS 공격에 대해서 배워볼꺼야! 웹보안을 배웠다면 XSS 공격에 대해선 한번씩 들어봤을텐데 XSS 공격을 직접 실행해보고 cookie 값을 burp suite로 직접 탈취해보는 시간을 가져보도록 할께~ XSS 공격을 실행하기 전에 먼저 XSS 공격이 무슨 공격인지를 알고 가보도록 하자..! XSS 공격 = Cross Site Scripting 공격 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 하는 것을 뜻해 밑에 그림을 보면 좀 더 이해하기 쉬울꺼야..!! 그래서 우리가 실습할 때 사용할 script 언어는 javascript로 script가 실행되는지 확인을 해볼꺼야 XSS 공격은 보통 Sto..