완료됨
외부 도메인으로 접속하는 방법이 왜 안될까요?

프록시에서 host3.dreamhack.games 나 해당 도메인의 ip 주소인 23.81.42.210 로 요청을 보내면 isPrivateIP를 우회할 수 있을 것 같은데 안되는 이유가 궁금합니다.

function isPrivateIP(ip) {
    var s = ip.split('.').map(x => parseInt(x, 10));
    return s[0] === 10 ||                               // 10.0.0.0/8
        (s[0] === 172 && s[1] >= 16 && s[1] < 32) ||    // 172.16.0.0/12
        (s[0] === 192 && s[1] === 168) ||               // 192.168.0.0/16
        s[0] === 127 ||                                 // 127.0.0.0/8
        ip === '0.0.0.0';                               // 0.0.0.0/32
}

async function isSafeHost(host) {
    if (!/^[A-Za-z0-9.]+$/.test(host)) {
        return false;
    }
    try {
        const address = await dns.resolve4(host);
        return address.every(addr => !isPrivateIP(addr));
    } catch {
        return false;
    }
}
#ssrf
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
hoppi_
대표 업적 없음

안녕하세요 qpal님!
문제를 이미 해결하셨는데 어떤 부분에서 안되는 것인지 구체적으로 말씀해주시면 답변드리겠습니다!

2024.12.30. 16:14