본문 바로가기

CTF/WEB

[250104 ~ 250106] IrisCTF 2025 풀이 스크랩

728x90
반응형

  • 무척이나 이해하기 어려웠음.
  • 일단 OIDC 로그인 로직을 기반으로 만들어진 문제. 가능하다면 OIDC쪽 공부를 해보는게 좋을듯
  • 우선 OIDC 개념을 모른다고 하더라도, 코드 내 function을 읽다보면 어떤 응답을 OIDC Provider가 해줘야하는지 알 수 있음. 어짜피 실질적으로 OIDC 서비스를 통한 인증로직이 있는건 아니기에 직접 이 응답을 만들어주면 됨
  • prime_flag라는 함수를 처음에 실행시키면서 flag라는 sqlite파일이 생성됨 이 안에 flag가 있음
  • 결과적으로는 storage.js의 LFI 취약점으로, OIDC Provider가 내려준 응답 중 sub에 해당하는 응답이 ..flag가 되면 idp기준으로 sha 단방향 암호화한 디렉토리의 상위로 이동하여 실질적으로 flag 파일을 조회하게 만들 수 있음
  • 애초에 ejs에서 렌더링 해주는 데이터를 통해 flag를 유출할 수 밖에 없고 이는  getUserTodos 함수가 담당하니 자세히 살펴보자
  • 코드를 하나하나 자세히 읽어보아야 풀 수 있는 문제로 보임
  • https://akimo.dev/blog/irisctf2025/ 아주 자세하니 좋음
  • https://ireland.re/posts/irisctf_2025/ 설명 나름 잘해둠

  • 재밌다고 생각한 문제로, DNS Rebinding 공격을 기반으로 한다.
  • 이미 만들어진 도구를 사용하거나, 실제 dns를 구매하여 subdomain을 만들어 자동으로 a레코드를 교체하도록 구성하는게 일반적임
  • 이미 만들어진 도구는 Singularity라는 도구가 있고, 도메인을 쓴다면 내도메인.한국을 이용하면 무료료 가능
  • 이번 공격에서 중요했던건 java, kotlin에서 url type의 변수를 ==(equals)로 비교할 때는 IP주소를 기반으로 비교한다는 것을 알고 있어야 풀이가 가능했다.
    (https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/URL.html#equals(java.lang.Object))
  • equals를 통해 비교할 때는, 문제가 의도하는 도메인의 ip와 공격자 도메인의 ip가 동일하도록 rebinding 공격을 수행하고, openConnection을 수행하여 dns 쿼리를 다시 수행할 때는, 실제 공격자의 ip를 바라보도록 순식간에 전환이 필요하다. 이때 조금이라도 텀을 벌기 위해서 equals와 openConnection 사이에서 진행되는 string replace 작업에 부하를 주기위해 POST body에는 꽤나 큰 데이터를 넣어 공격을 수행하면 효과가 좋다.
  • 정확하지는 않지만... dns cache에 만약 example.com에 대한 ip가 있다면 공격에 실패하게됨. 그러니까 openConnection을 수행할 때 1차적으로는 dns cache에 ip가 들어가게 되겠지. 그러면 첫번째로 캐시에 저장되는 ip는 example.com에 대한 ip가 됨. 그래야 조건문을 통과하니까. 그렇다면 cache 기본 만료시간인 30초동안은 아무리 rebinding을해도 캐시를 참조할테니까, 지속적으로 공격을 해서, cache가 유치되는 시점에 if조건문을 통과하고, if 조건문 통과이후 캐시만료시점이 왔을때 openConnection을 통해 진짜 공격자의 IP가 응답되면 문제는 해결되게 되는 구조. 즉 운이 필요함
    (기본적으로 자바는 dns cache 저장 시간이 30초임)
  • 가장 잘 설명한 링크는 : https://www.dottak.me/posts/2025-01-11-ctf-2025-irisctf-web-webwebhookhook
  • 여기도 나름 잘 설명함 : https://zimzi.substack.com/p/irisctf-2025-webwebhookhook

 

풀이를 작성해주신 모든 해커분들 감사합니다


728x90
반응형

'CTF > WEB' 카테고리의 다른 글

[250111 ~ 250113] UofTCTF 2025 풀이 스크랩  (0) 2025.02.16