안녕하세요, 아오바 스터디 숙제로 웹해킹 문제의 Write up을 작성하게 되었습니다.
이번에 풀이할 문제는 The great escape 입니다. 본 게시물의 내용은 정준영(Joon)님이 수업해주신 내용과 거의 동일합니다.
https://wargame.aover.team/challenges 아오바 워게임 사이트의 The great escape라는 문제를 참고하여주시기 바랍니다.
처음에 문제의 사이트에 접속하면 이런 꼴로 되어있습니다. 여기서 주목할 것은 사이트의 URI입니다.
http://server2.aover.team/Web/The_great_escape/login/ 이 URI에 관련된 취약점, Directory listing에 대하여 알아보겠습니다.
Directory listing
Directory listing, 즉 디렉토리 리스팅은 웹의 파일 목록이 공격자에게 노출되는 취약점입니다. 이는 Apache 또는 Nginx등의 웹서버에서 Indexes 옵션을 꺼주지 않았을 때 발생하는 취약점입니다.
디렉토리 리스팅은 사이트에 접속한 일반 사용자가 표면적인 웹사이트에서 볼 수 없는 파일들을 조회, 열람할 수 있도록 합니다. 만약, 백업 파일 등이 포함되어 있다면 큰 사고로 이어질 수 있습니다.
웹 DAV를 사용하는 경우, 팀원 이외 사람에게 작업 내용이 노출될 위험성이 매우 높아집니다.
이 공격을 통해, 홈페이지 변조 공격(Deface 공격)이 가능해질 수 있습니다.
또한, 관리자 페이지의 주소가 노출될 가능성이 존재합니다.
이런 위험성 속에서도, 개발자의 귀찮음, 또는 옵션 삭제를 까먹는 이유로 매우 자주 발생하는 취약점입니다.
이 경우는 웹 서버 설정에 있는 Indexes 옵션을 해제하여 방어할 수 있습니다.
실습하기
구글에 index of /hdd1 만 검색하더라도 많은 자료들이 있습니다.
이제, The great Escape 풀이를 진행하도록 하겠습니다.
다시, http://server2.aover.team/Web/The_great_escape/login/ 이 URI에 주목하면, 디렉토리 리스팅의 취약점을 발견하실 수 있을 겁니다.
여기서 login만 제거하면, http://server2.aover.team/Web/The_great_escape/ 이 상태에서 Backup 폴더에 접근할 수 있습니다.
Backup 폴더에 접근하여, index.php.backup 파일을 읽다보면,
1
2
3
4
5
6
7
8
9
10
11
|
?php
// Add flag for agent here - Jack
$flag = "";
if(isset($_GET["pass"])){
if($_GET["pass"] == "WhenDoesNewGameGen.3Release..."){
echo"<script>alert('[Identitiy confirmed]\\nWelcome back, agent. Here\'s your flag.\\n" . $flag . "'); location.href='./index.php';</script>";
}else{
echo"<script>alert('You are not an agent.'); location.href='./index.php';</script>";
}
}
?>
|
cs |
위 코드를 확인할 수 있습니다. 이 코드의 if문을 보면, 비밀번호가 WhenDoesNewGameGen.3Release... 임을 확인할 수 있습니다. 이를 이용해서 Flag를 얻을 수 있고요.
감사합니다.