새소식

인기 검색어

Hacking/Web

DNS Rebinding Attack

  • -
반응형

안뇽 안뇽~~ 이번에 문제를 풀면서 새로 알게 된 공격 기법이 있어서 정리할 겸 가져와봤어

 

DNS Rebinding Attack

이 공격은 도메인 이름의 확인을 조작하는 방법이야.

보통 악의적인 공격을 막기 위해서 도메인의 이름을 확인하고, dns로 해당 도메인의 IP를 확인해

그러고 나서 해당 URL로 접속한단 말이야??

 

그런데 도메인의 ip를 확인하는 로직과 URL로 접속하는 로직의 요청 간 차이 때문에 악의적인 공격을 할 수가 있어

글로 하니까 잘 안와닿지??

 

내가 로컬에서 환경을 구축해서 보여줄게

여기 해당 공격의 flow야.

간단하게 DNS rebinding Test를 구축해 봤어

// index.js
const express = require('express');
const path = require('path');
const dns = require('./dns');

const app = express();
const port = process.env.PORT || 10235;

app.get('/', async(req, res) => {
    return res.sendFile(path.join(__dirname + '/static/index.html'));
});

app.get('/send', async(req, res) => {
    return res.sendFile(path.join(__dirname + '/static/send.html'));
});

app.get('/proxy', async (req, res) => {
    const {url} = req.query;
    const result = await dns.dnsResolve(url);
    res.send(result);
})

app.listen(port, () => {
    console.log(`${port} is listening!`);
});
const dns = require("dns/promises");
const axios = require("axios");

dns.setServers([
    '1.1.1.1',
    '8.8.8.8',
]);

async function dnsResolve(url) {
    const address = await dns.resolve4(url);
    console.log("IP is "+address);

    const res = await axios.get("http://"+url);
    console.log(res.data);
    return res.data;
}

module.exports = {
    dnsResolve,
};

index.js를 보면 /send 앤드포인트에서 url을 입력하면 /proxy 앤드포인트로 이동하여 url의 get요청을 보낸다.

dns.resolve4(url)의 IP가 http://example.com의 IP이고 axios.get(url)은  url한테 get요청을 보낸 응답값이 출력되었다.

https://lock.cmpxchg8b.com/rebinder.html

 

rbndr.us dns rebinding service

 

lock.cmpxchg8b.com

여기는 DNS rebinding 공격을 할 URL을 만들어주는 사이트이다.

여기 사이트에 들어가서 A는 우회할 IP를 적고 B는 get요청을 통해 접속할 IP를 적으면 된다.

그럼 밑에 URL이 나온다.

이렇게 127.0.0.1이 될 때도 있고, 내가 입력한 10.37.21.12가 될 때도 있다.

이러한 문제는 서버가 매우 짧은 TTL로 응답하면 생기는 문제이다.

 

DNS rebinding공격은 SSRF 공격의 한 종류로 꽤 오래전에 나왔지만 그래도 여전히 사용되고 있나 봐~~
오늘은 여기까지 포스팅하고 내가 심화한 부분과 다양한 CVE도 분석하면서 글 추가할게

반응형

'Hacking > Web' 카테고리의 다른 글

JWT Attacks  (1) 2023.05.02
Click jacking  (0) 2023.04.25
Directory Traversal  (0) 2023.04.22
SOP와 CSP  (0) 2022.05.20
Web의 기초지식  (0) 2022.03.25
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.