[BWAPP] Cross-site scripting – Stored(Blog)
·
Hacking/Web Hacking
난이도 : low Quest. 다음 화면과 같이 경고창을 띄워봅시다. 텍스트란에 글을 적고 submit 버튼을 누르면 글이 작성되는 구조이다. 여기에 를 작성해 보았다. 그랬더니 success 경고창을 띄울 수 있었다. ​ Quest. 사용자의 쿠키 값을 경고창에 띄워봅시다. 사용자의 쿠키 값을 경고창을 통해 띄울 수 있었다. ​ Quest. (게시판에 등록된 내용을 삭제하지 않았다면) XSS 공격을 시도할 때마다 경고창이 여러 개가 뜨는 것을 확인했습니다. 왜 그럴까요? 이유를 작성해주세요. 사용자의 쿠키 값을 경고창을 통해 띄울 때 그 앞에서 했던 success도 함께 실행되었다. 그 이유를 알아보기 위해 소스 코드를 살펴보았다. 테이블을 살펴보니 뒤에 가 먼저 읽혀서 success 경고창이 뜨고, ..
[BWAPP] Cross-site scripting – Reflected (POST)
·
Hacking/Web Hacking
Quest. GET방식과 POST방식의 차이에 대해 간단히 정리해봅시다. GET 방식 : Header에 정보(변수)를 포함시켜 주소창(URL)에 서버로 넘어가는 정보가 보인다. POST 방식 : body에 정보(변수)를 포함시켜 주소창(URL)에 서버로 넘어가는 정보가 보이지 않는다. ​ Quest. 다음 화면을 띄워보세요. 경고창을 누른 후 화면 (Welcome success 출력) 난이도 low GET에서 했던 것처럼 와 success를 입력했다. 문제를 해결할 수 있었다. 난이도 medium ​ Quest. 다음과 같이 사용자의 쿠키 값을 경고창에 출력해보세요. 쿠키 값을 구하기 위해 이번에는 가 아니라 를 입력했다. 사용자의 쿠키가 출력되었다. 예제 문제는 security_level이 0으로 표시..
[BWAPP] Cross-site scripting – Reflected (GET)
·
Hacking/Web Hacking
Quest. xss 취약점이 있는지 알아봅시다. 다음 화면을 띄워보세요. 경고창을 누른 후 화면 (Welcome success 출력) 난이도 low first name에 si, last name에 ss를 넣으니 사진과 같게 출력되었다. alert()를 입력해 경고창을 출력해보겠다. first name에 를 입력하고 last name에 success를 입력했더니 alert 창이 뜨는 것을 확인할 수 있었다. ​ last name에 코드를 삽입해도 같은 동작을 하는 것을 확인했다. 난이도 medium 난이도 low와 같이 태그를 입력했으나 이번에는 alert 창이 뜨지 않았다. 원인을 파악하기 위해 소스코드를 살펴보았다. 보안 레벨에 대한 것은 /BWAPP/xss_get.php에 있다고 한다. 터미널창에서 ..
[BWAPP] SQL Injection (POST/search)
·
Hacking/Web Hacking
MISSON. 버프스위트를 이용해 사용자들의 id와 password를 획득하자. Quest. 데이터베이스 정보를 알아내세요. 이번에도 지난번과 같이 '를 통해 SQL Injection이 가능한지 살펴보았다. ​ 버프스위트를 이용해 살펴보았다. 하단의 title과 action이 눈에 띈다. action = search는 아마도 이번 injection post/search를 말하는 것 같고, title을 건드려보자. ​ title에 siss라고 작성한 뒤 forward를 했다. 목록에 siss라는 영화가 없었기 때문에 이런 결과가 나온 것 같다. 버프스위트를 이용해서 홈페이지를 건드릴 수 있다는 것을 알아냈다. ​ 데이터베이스 정보를 알아내자. 0' UNION SELECT ALL 1,@@version,3,4..
[BWAPP] SQL Injection (GET/search)
·
Hacking/Web Hacking
Quest. SQL 기본 지식 정리하기 SQL SQL(Structured Query Language) : 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어 문법이 단순한 편이고, 모든 데이터베이스 관리 시스템에서 사용 가능하다. 쿼리 : 데이터베이스에 정보를 요청하는 것, 웹 서버에 특정한 정보를 보여달라는 웹 클라이언트 요청에 의한 처리이다. 대개 데이터베이스로부터 특정한 주제어나 어귀를 찾기 위해 사용된다. 테이블 : 세로줄과 가로줄의 모델을 이용해 정렬된 데이터 값의 집합. - 관계형 테이블 : 관계형 데이터베이스의 사용자 데이터를 보유하는 기본 구조 - 오브젝트 테이블 : 세로줄을 정의하는 객체 형을 이용하는 테이블. SQL 문법의 종류 데이터 정의 언어..
[bWAPP] HTML Injection – stored (Blog)
·
Hacking/Web Hacking
HTML Injection Reflected URL에 악의적인 HTML 태그를 삽입하여 링크를 클릭한 사용자의 PC에서 HTML 태그가 실행되게 하는 공격이다. 공격자는 이메일, 게시판이나 SNS를 통해 악의적인 URL을 유포하고, 해당 URL을 클릭하면 피싱 사이트로 접속되어 개인 정보 유출, 악성 프로그램 설치 등의 피해를 입을 수 있다. ​ Stored 서버에 악의적인 HTML 태그를 저장시켜, 사용자가 태그가 저장된 게시물을 읽을 경우 HTML 태그가 실행되게 하는 공격이다. 공격자는 게시글에 악의적은 스크립트를 삽입하고, 사용자가 게시글을 읽으면 태그가 실행되어 쿠키 정보 갈취, 악성 코드 유입, 랜섬웨어, 피싱 사이트 접속 등의 피해를 입을 수 있다. ​ 저장(Stored) htmli_stor..
[bWAPP] HTML Injection – Reflected(POST)
·
Hacking/Web Hacking
HTML Injection Injection 인젝션 : 공격자가 악의적으로 주입한 데이터를 웹 애플리케이션에서 데이터베이스의 정상적인 쿼리 일부로 인식하고 실행할 때에 발생하는 취약점 데이터를 입력받거나 데이터베이스 정보를 요청하는 곳에는 인젝션 공격이 가능하다. 공격 방법이나 사용 언어에 따라 인젝션의 종류가 달라지는데, 대표적인 유형으로 SQL 인젝션, HTML 인젝션, OS Command 인젝션, LDAP 인젝션 등이 있다. ​ HTML 인젝션 HTML 인젝션 : 코드 인젝션 공격의 하위 개념으로, 취약한 매개변수에 악의적인 HTML 코드를 삽입하는 공격 공격자는 사용자가 연결을 요청한 페이지에 HTML 태그를 삽입하여 의도하지 않은 내용을 보게 하거나 악의적인 사이트에 연결 시킬 수 있다. ​ H..
[bWAPP] HTML Injection – Reflected(GET)
·
Hacking/Web Hacking
HTML Injection Injection 인젝션 : 공격자가 악의적으로 주입한 데이터를 웹 애플리케이션에서 데이터베이스의 정상적인 쿼리 일부로 인식하고 실행할 때에 발생하는 취약점 데이터를 입력받거나 데이터베이스 정보를 요청하는 곳에는 인젝션 공격이 가능하다. 공격 방법이나 사용 언어에 따라 인젝션의 종류가 달라지는데, 대표적인 유형으로 SQL 인젝션, HTML 인젝션, OS Command 인젝션, LDAP 인젝션 등이 있다. ​ HTML 인젝션 HTML 인젝션 : 코드 인젝션 공격의 하위 개념으로, 취약한 매개변수에 악의적인 HTML 코드를 삽입하는 공격 공격자는 사용자가 연결을 요청한 페이지에 HTML 태그를 삽입하여 의도하지 않은 내용을 보게 하거나 악의적인 사이트에 연결 시킬 수 있다. ​ H..
Node.js
·
Hacking/Web Hacking
Node.js - 1.수업소개 자바스크립트에 익숙한 웹 개발자들이 새로운 컴퓨터 언어를 배우지 않고도 웹 페이지를 자동으로 생성하는 서버 쪽 애플리케이션을 만들 수 있도록 만들어진 것이 node.js이다. 2008년 구글이 자바스크립트의 성능을 개선하기 위해서 v8엔진을 개발해 오픈소스로 공개했다. node.js의 창시자인 라이언이 v8 엔진을 기반으로 하는 node.js를 만들었다. 태초의 자바스크립트가 웹 브라우저를 제어하는 것이었다면 node.js는 자바스크립트를 이용해서 컴퓨터자체를 제어한다. Node.js - 2. 수업의 목적 수업의 목적 : 생산성을 높이는 것 node.js의 템플릿을 사용하면 한번에 여러 코드를 바꿀 수 있다. Node.js - 3.1.설치 (Wi..
[Node.Js] 섹션 2. session
·
Hacking/Web Hacking
2-1. session 1 - intro session : cookie를 기반으로 더 안전하고 많은 데이터를 저장하는 효과를 내는 방법 로그인 애플리케이션의 경우 사용자가 로그인을 하고 로그인이 성공했다면 다음에도 로그인을 할 수 있도록 값을 심어 놓을 수 있는데, 이는 보안에 이슈가 있다. 사용자의 컴퓨터와 서버가 서로 통신하는 과정에서 id나 비밀번호와 같은 중요한 정보가 왔다갔다 하는 것은 해킹의 위험이 있기 때문이다. 심지어 컴퓨터에 저장되어 있기 때문에 자리를 비운 동안 쿠키를 탈취해 갈 수 있다. 이러한 문제점을 보완하기 위해 서버 쪽에서 데이터를 저장할 수 있도록 세션을 사용한다. 사용자가 서버에 접속하면 서버는 데이터를 저장하는데, 쿠키 방식과는 다르게 오직 사용자의 식별자와 id값만을 저..
[Node.Js] 섹션 1. cookie
·
Hacking/Web Hacking
1-1. cookie 1 : intro cookie : 방문한 웹사이트에서 생성된 파일 인터넷 사용정보를 저장하기 때문에 쿠키를 사용하면 사이트에서 로그인 상태를 유지하고 사이트 환경설정을 기억하며 지역 관련 콘텐츠를 제공할 수 있다. cookie는 사용자마다 다른 상태를 유지할 수 있다. 검사 → resources → cookie를 삭제하면 count가 0으로 초기화되는 것을 확인할 수 있다. cookie의 response headers에서 set-cookie를 통해 cookie의 값을 알 수 있다. node.js를 이용해서 set-cookie의 count에 +1을 하라고 명령하면 웹 브라우저는 명령을 따라 값을 바꾸고 다음 접속에는 값이 바뀌게 되는 것이다. 1-2. cookie 2 - counter..
[Node.Js] 섹션 0. HTTP
·
Hacking/Web Hacking
HTTP : HyperText Transfer Protocol, 웹 브라우저와 웹 서버 사이에 서로 주고받는 규칙을 정의하는 통신 방법 웹 브라우저가 웹 서버에 정보를 요청(request)하면 그 요청에 따라 적당한 정보를 응답(response) 한다. 우클릭 → 검사 → Network를 선택하면 인터넷에서 동작을 실행하면 다운받는 파일들을 확인할 수 있다. html, css, js 등 다양한 파일이 있다. Request header 부분은 웹 브라우저가 웹 서버로 보낸 요청서이다. 해당 부분에서 파일의 형태, 기기 종류 등을 확인할 수 있다. 웹 브라우저와 웹 서버는 HTTP를 통해 통신하는데, request header과 response header을 통해 웹 애플리케이션이 잘 작동될 수 있게 한다...