본문 바로가기

웹 보안

(11)
Hidden XSS https://www.hahwul.com/2016/06/20/web-hacking-hiddenxss-xss-in-hidden/ HIDDEN:XSS - input type=hidden 에서의 XSS웹 취약점 진단에서 가장 만만하면서 가장 어려울때도 있는 XSS에 대한 이야기를 할까합니다. 그 중에서도 오늘은 hidden XSS. 즉 hidden 속성을 가진 태그에 대한 xss입니다.www.hahwul.com https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags?pk_source=portswiggerres&pk_medium=social&pk_campaign=psres Exploiting XSS in hidden input..
HTTP 통신과 인증 인가 HTTP(Hyper Text Transfer Protocol)- Web 상에서 client와 server 간에 통신을 위한 protocol 특징: Stateless protocol (상태유지 X) + Connectionless (비연결성) 한계: 현재 connection에 대한 client의 어떠한 상태정보도 유지할 수 없음.    HTTP의 한계를 해결하기 위해 나온 방식 세가지: Cookie, Session, Token    Cookie (내가 만든 쿠키)- client session 상태정보를 유지하기 위한 정보 특징: 개별 client 상태정보를 HTTP request와 HTTP response header에 같이 전달한다.          처리속도가 빠르고 서버는 쿠키 정보를 바탕으로 페이지 접..
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로 주로 검색할 때 사용한다. (최대 전송 Byte = 4096 Bytes)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로 requ..
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..