SSRF 취약점을 이용하는 문제이다. 문제 파일에서 파이썬 코드를 열어보았다.
/img_viewer는 img_viewer.html을 렌더링하는 GET과 이용자가 입력한 url에 HTTP 요청을 보내고, 응답을 img_viewer.html의 인자로 하여 렌더링하는POST 요청을 처리한다.
img_viewer는 서버 주소에 “127.0.0.1”, “localhost”이 포함된 URL로의 접근을 막는다. 이를 우회하면 SSRF를 통해 내부 HTTP 서버에 접근할 수 있다.
블랙리스트 필터링은 URL에 포함되면 안되는 문자열로 블랙리스트를 만들고, 이를 이용하여 이용자의 접근을 제어한다.
화이트리스트 필터링은 접근을 허용할 URL로 화이트리스트를 만든다. 이용자가 화이트리스트 외의 URL에 접근하려하면 이를 차단한다.
127.0.0.1과 매핑된 도메인 이름 사용
도메인 이름을 구매하면, 이를 DNS 서버에 등록하여 원하는 IP 주소와 연결할 수 있다. 이후에는 등록한 이름이 IP 주소로 리졸브(Resolve) 된다. 따라서 임의의 도메인 이름을 구매하여 127.0.0.1과 연결하고, 그 이름을 url로 사용하면 필터링을 우회할 수 있습니다. 이미 127.0.0.1에 매핑된 "*.vcap.me"를 이용하는 방법도 있다.
localhost의 alias 이용
URL에서 호스트와 스키마는 대소문자를 구분하지 않는다. 따라서 "localhost"의 임의 문자를 대문자로 바꿔도 같은 호스트를 의미한다.
로컬 호스트의 8000번 포트에는 문제 서버가 실행되고 있는데, 위 URL을 image viewer에 입력하면 문제 인덱스 페이지를 인코딩한 이미지가 반환된다.
위는 강의에서 제공해준 포트 번호를 찾는 코드이다. 다음 코드를 서비스 포트와 함께 실행해보면 포트 번호를 알 수 있다.
포트번호와 함께 다음 문장을 넣어주면 이미지가 하나 나오는데 그 이미지를 base64로 인코딩 해봐야 한다.
그러면 플래그가 나온다!
'SWUFORCE > 모의해킹팀' 카테고리의 다른 글
모의해킹 과제 6주차 (0) | 2023.11.21 |
---|---|
모의해킹 5주차 과제 (0) | 2023.11.14 |
모의해킹 과제 4주차 (0) | 2023.11.07 |
3주차 웹해킹 과제 (0) | 2023.10.11 |
2주차 과제 - 시스템 해킹 (0) | 2023.10.04 |