toctou 문제이다.
일단 baby toctou와 비슷하게 cat flag.php는 못한다.
api.php내용은 다음과 같다.
webhacking.kr 이나 202.182.106.159로 온 응답이 아니면 exit된다.
이제 이건 dns rebinding attack으로 우회할 수 있는데 dns rebinding attack은 dns를 리바인딩 했을 때 ip 가 두개 이상이 리턴되면서 예상했던 ip와 다르게 공격자의 ip로 요청을 보낼 수 있다.
뭐 ssrf나 sop 우회등에 쓰이는데 인터넷에 자료 참고하면 될것 같다.
https://lock.cmpxchg8b.com/rebinder.html
rebinder 사이트이다. A에다가 우회할 ip B에다가 get으로 보낼 ip를 적으면된다.
여기선 A에다가 내 서버 ip, B에다가 webhacking.kr ip를 적으면 된다.
그러면 요청을 보낼때마다 B ip가 나오다가 가끔가다 A ip가 나올것이다.
$_SERVER['HTTP_HOST'] 는 request의 host헤더부분을 바꾸면 쉽게 변조 가능하다.
그래서 다음과같이 요청을 계속 보내다 보면 어느 순간 내 ip로 요청이 올거고 flag가 뜬다.
사실 dns rebinding과 toctou와 뭔상관인지 잘 모르겠다라고 생각할 수 있는데
나역시 그렇게 생각해서 찾아보니 dns rebinding이 toctou의 일종이라고 하긴 하는데....
저 코드에선 sleep(1)없이도 dns rebinding취약점이 발생할거 같긴한데 아직은 잘 모르겠다.
https://github.com/taviso/rbndr
toctou 기법에 대해선 좀더 공부해봐야겠다
'Web Hacking > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Orange 🍊 풀이 (0) | 2024.08.10 |
---|---|
[Webhacking.kr] Regex Master (0) | 2024.08.08 |
[Webhacking.kr] NotSQL (0) | 2024.07.27 |
[Webhacking.kr] old 13 (1) | 2024.07.22 |
[Webhacking.kr] old-30 (편법) (0) | 2024.07.15 |