완료됨
localhost 호출문제

안녕하세요..

제가 이해한 바로는 ..,,
http://host3.dreamhack.games:<번호>/flag 에서
param에 어떠한 값을 넣고 제출하면,

def check_xss(param, cookie={"name": "name", "value": "value"}):
    url = f"http://127.0.0.1:8000/vuln?param={urllib.parse.quote(param)}"
    return read_url(url, cookie)


def read_url(url, cookie={"name": "name", "value": "value"}):
    cookie.update({"domain": "127.0.0.1"})
    try:
        service = Service(executable_path="/chromedriver")
        options = webdriver.ChromeOptions()
        for _ in [
            "headless",
            "window-size=1920x1080",
            "disable-gpu",
            "no-sandbox",
            "disable-dev-shm-usage",
        ]:
            options.add_argument(_)
        driver = webdriver.Chrome(service=service, options=options)
        driver.implicitly_wait(3)
        driver.set_page_load_timeout(3)
        driver.get("http://127.0.0.1:8000/")
        driver.add_cookie(cookie)
        driver.get(url)
    except Exception as e:
        driver.quit()
        # return str(e)
        return False
    driver.quit()
    return True

해당 코드에 의해 로컬호스트의 URL이 호출 되는 구조라고 생각했는데..,,
해당 요청이 아예 들어오고 있지 않아서요..,,

그럴 경우, 어떤 부분을 check해보면 될지..궁금합니다. !

로컬호스트가 아래와 같이 run되고 있는 상태이긴합니다~

image.png

#web
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
hoppi_
대표 업적 없음

안녕하세요 해보자go님
문제 페이지에서 [서버 생성하기] 버튼을 누르게되면, 문제(xss-1)가 컨테이너라는 하나의 박스안에서 실행이 됩니다.
따라서 localhost는 해당 컨테이너를 가르키며, 해보자go님의 localhost를 지칭하는 것이 아닙니다.
보통 XSS와 같이 클라이언트 사이드에서 발생하는 취약점은 희생자인 제 3자가 필요하고, 그 역할을 하는 것이 저 bot 코드입니다.
url을 전송하게되면 저 코드가 동작하게되고, 즉, 희생자(bot)가 XSS 공격을 받게 되어 풀이자(공격자)가 의도한 스크립트가 실행되는 구조입니다.
더 궁금하신 사항이 있다면 질문 남겨주세요!

2024.12.11. 16:12