Couch DB 에 대해서
- NoSQL DB 중 하나인 Couch DB 는 키와 값이 하나의 쌍을 이루는 / JSON 형태의 데이터를 저장한다.
- HTTP 기반의 서버로 동작하여 HTTP 를 사용해 요청을 받고 처리한다.
- 일반적으로 _ 문자로 시작하는 URL, JSON 필드 등은 특수 구성 요소를 나타낸다.
- /_all_dbs 데이터베이스 목록을 반환
- /{db}/_all_docs 지정한 데이터베이스에 포함된 모든 도큐먼트(?)를 반환한다.
- /{db}/_find 지정한 데이터베이스에서 JSON 쿼리에 해당하는 모든 도큐먼트(?)를 반환한다.
Couch DB 공격 기법
- Node JS 에서 Couch DB 를 사용할 때는 아파치에서 개발한 nano 패키지를 사용한다.
- nano 패키지는 get 함수를 사용해서 데이터를 조회하거나 가져올 수 있다.
- get 함수의 입력값의 대한 검증이 부족할때 공격자는 특수구성 요소인 _all_docs, _find 등을 통해 원하는 명령을 내릴 수 있다.
실습
Dreamhack NoSQL-CouchDB 실습문제
- curl 명령어를 통해 문제 url 에 HTTP 요청을 보낸다.
- curl 옵션:
- -X HTTP 메소드 선택
- -H 요청 헤더에 추가하고자 하는 내용
- -d POST 메소드 보내고자 하는 데이터
- undefined 값을 만드는 방법
- JSON 형식