| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- diva
- FTK Imager
- Strings
- 안드로이드
- lord of sql injection
- foremost
- frida
- elasticsearch
- InsecureBank
- ctf
- SQL Injection
- otter
- vulnhub
- XSS
- 2018
- Volatility
- CTF-d
- binwalk
- dreamhack
- 인시큐어뱅크
- MFT
- igoat
- ESXi
- base64
- beebox
- Suninatas
- kibana
- Reflected XSS
- Docker
- Openstack
- Today
- Total
목록전체 글 (450)
Information Security
XSS – Reflected (AJAX/JSON) - AJAX 기능을 활용하여 검색어를 입력하면 해당하는 영화가 데이터베이스에 있는지를 확인하고 결과를 바로 출력한다. Level (Low) 를 입력했는데 바로 보이는 것을 알 수 있다. GET 방식으로 xss ajax 2-2.php로 데이터가 전달되는 것을 알 수 있다. 소스코드를 확인한 결과 xss ajax 2-2.php를 호출하는 것을 알 수 있다. 스크립트 언어가 GET방식으로 인코딩 방식으로 전달되는 것을 알 수 있다. GET 방식이기 때문에 URL 주소에 그림 1-4처럼 보이는 스크립트 언어가 보이는 것을 알 수 있다. Level (Medium) Iron Man 데이터를 입력하면 데이터베이스에 있다고 메시지를 보여준다. 그림 1-5처럼 URL 주..
XSS – Reflected(JSON) - JSON은 클라이언트와 서버가 통신할 때 자료를 표현하는 방법으로 특정 언어에 제한 없이 그대로 사용할 수 있다는 장점이 있고 JSON으로 객체를 선언하는 자바 스크립트 코드를 사용하여 검색한 영화 정보를 출력한다. Level (Low) 입력란에 123을 입력했다. 소스코드를 열어 입력한 값을 확인했다. 로 닫아주고 를 입력했다. 그림 1-3처럼 입력 해 스크립트가 동작하는 것을 알 수 있다. 대응방안 htmlspecialchars 함수를 호출하여 입력 데이터를 UTF-8로 인코딩한다. 두 번째 인자에 ENT_QUOTES를 추가하여 XSS에 사용되는 특수 문자들을 HTML 엔티티 코드로 변환하여 스크립트 코드를 입력하여도 웹 브라우저에서는 문자로 인식한다.
XSS – Reflected(POST) - 웹 페이지 URL에 존재하는 파라미터에 악의적인 스크립트 코드를 입력하여 사용자가 URL을 클릭하면 파라미터에 입력한 악성 스크립트 코드가 실행되게 하는 공격이다. Level (Low) First name aaaa Last name aaaa를 입력했다. 버프 스위트에 그림 1-1에 입력한 데이터 내용의 있다. , 를 데이터를 수정해 전송했다. 그림 1-3에서 보이는 스크립트 언어 경고창이 보이는 것을 알 수 있다. Level (High) Level (High)도 스크립트를 삽입했다. Level (High)는 스크립트 언어가 그대로 노출되는 것을 알 수 있다. 대응방안 htmlspecialchars 함수를 호출하여 입력 데이터를 UTF-8로 인코딩한다. 두 번째 ..
XSS – Reflected(GET) - 웹 페이지 URL에 존재하는 파라미터에 악의적인 스크립트 코드를 입력하여 사용자가 URL 클릭하면 파라미터에 입력한 악성 스크립트 코드가 실행되는 공격이다. Level (Low) First name 1234 Last name 1234를 입력해 URL 주소와 Welcome 1234를 확인할 수 있다. , 를 입력해 쿠키 값을 확인할 수 있다. Level (High) 그림 1-1처럼 스크립트 언어를 입력하면 그대로 노출되는 것을 알 수 있다. 대응방안 htmlspecialchars 함수를 호출하여 입력 데이터를 UTF-8로 인코딩한다. 두 번째 인자에 ENT_QUOTES를 추가하여 XSS에 사용되는 특수 문자들을 HTML 엔티티 코드로 변환하여 스크립트 코드를 입력하..
그림 1-1을 보면 Key 값을 Chek 하면 풀리는 것 같다. 그림 1-2처럼 소스코드 내용을 보면 eval() 함수를 통해 packer라는 자바스크립트 난독화 되어 있는 것을 알 수 있다. Hint 12342046413275659 힌트를 확인할 수 있다. 그림 1-3처럼 packer 난독화를 해독을 하면 코드 내용을 확인할 수 있다. (PACKER 난독화 : https://beautifier.io/) 구글 개발자 도구를 이용해 Hint 12342046413275659 값을 PASS 변수에 집어넣어 9c43c20c 값을 획득했다. 그림 1-5처럼 9c43c20c 값을 넣었더니 Authkey 값을 확인할 수 있다.
그림 1-1처럼 User-Agent 정보를 보여주고 있다. Plus 버튼을 클릭 시 포인트의 값이 1씩 증가하는 것을 알 수 있다. 소스코드의 내용을 확인해보니 50 point 값과 SuNiNaTaS라는 힌트를 확인할 수 있다. 계속 클릭을 시도해 포인트 값을 25까지 만들었다. 그림 1-4처럼 포인트 값을 25로 만들었더니 "I like the SuNiNaTas brower!"라는 경고창을 확인할 수 있다. 그림 1-4처럼 User-Agent 값을 SuNiNaTaS로 변경 후 포인트 값을 50까지 만들었다. 그림 1-6처럼 Auth key 값을 확인할 수 있다.
그림 1-1처럼 3번 문제를 보면 "Write articles in Notice Board!"라는 문구만 표시되어 있다. 그림 1-2처럼 FREE WRITE 게시판에 URL을 보면 /board/free/write를 확인할 수 있다. 그림 1-1을 보면 notice 게시판에 글을 쓰라고 해서 그림 1-3처럼 URL 주소에 board 대신에 notice로 변경 후 NOTICE 게시판이 나온 것을 알 수 있다. 그림 1-4처럼 NOTICE 게시판에 글을 등록했다. NOTICE 게시판에 게시글을 등록하면 키 값을 확인할 수 있다.
XSS - Stored(User-Agent) - 접속한 웹 브라우저의 정보가 저장된 User-Agent 헤더 값을 테이블 형태로 출력한다. Level (Low) User-Agent 부분에 를 입력했다. 게시판에 쿠키 값이 저장된 것을 알 수 있다. Level (Medium) Level (Medium)도 그림 1-1처럼 User-Agent 부분에 스크립트를 삽입했다. 그림 1-2처럼 쿠키 값이 보이지 않고 공백으로 보이는 것을 알 수 있다. Level (High) Level (High)도 그림 1-1처럼 User-Agnt 부분에 스크립트를 삽입했다. Level (High)은 스크립트 언어가 그대로 노출되는 것을 알 수 있다. 대응방안 htmlspecialchars 함수를 호출하여 입력 데이터를 UTF-8로..