[ webhacking.kr ] old-05
포스트
취소

[ webhacking.kr ] old-05

image-20230704170812230

문제를 들어가면 Login버튼과 Join버튼이 존재한다.


image-20230704171303071

먼저 Join 페이지에 들어가려고 하면 Access_Denied가 뜨면서 들어갈 수 없다.


image-20230704170904395

그래서 우선 로그인 페이지를 확인해보았다. 페이지는 단순하였으나 아이디와 비밀번호는 알 방법이 없었다.

또한 여러 공격을 시도해보았으나 아무 반응이 없어 로그인 페이지에서의 공격 시도는 그만두었다.


image-20230704171619288

결국 Login페이지가 아닌 Join페이지에서 공격을 시도해야 한다고 생각하여 Join페이지를 찾기 위해 혹시나 하고 url에서 login.php를 지워보았다.

그러니까 디렉터리 리스팅 취약점이 존재하여 join.php페이지를 찾을 수 있었다.


image-20230704171917365

join.php에 접근해보면 bye라는 문구만 보이고 아무것도 뜨지 않는다.

그래서 페이지의 소스코드를 확인해보았다.


image-20230704172037004

소스코드 자바스크립트가 난독화 되어있는 것을 볼 수 있다.


image-20230704172855365

우선 자바스크립트 코드를 이쁘께 줄바꿔주는 사이트를 사용해서 보기 편하게 해준다.


image-20230704173252474

이후 크롬의 개발자 도구 콘솔창에서 코드를 전부 붙여넣은 후에 확인하고 싶은 부분을 입력하면 해독된 코드를 볼 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (eval(document.cookie).indexOf('oldzombie') == -1) {
    alert('bye');
    throw "stop";
}
if (eval(document.URL).indexOf(mode=1) == -1) {
    alert('access_denied');
    throw "stop";
} else {
    document.write('<font size=2 color=white>Join</font><p>');
    document.write('.<p>.<p>.<p>.<p>.<p>');
    document.write('<form method=post action=join.php>');
    document.write('<table border=1><tr><td><font color=gray>id</font></td><td><input type=text name=id maxlength=20></td></tr>');
    document.write('<tr><td><font color=gray>pass</font></td><td><input type=text name=pw></td></tr>');
    document.write('<tr align=center><td colspan=2><input type=submit></td></tr></form></table>');
}

코드를 전부 바꿔주면 이런 코드가 나온다.

확인해보면 oldzombie라는 쿠키가 있어야 하며, url에 mode=1이 있어야한다.


image-20230704173525294

쿠키는 editthiscookie를 통해 쉽게 만들 수 있다.


image-20230704173628893

image-20230704173649879

그리고 url에 mode=1을 추가하면 join페이지에 접속할 수 있다.


image-20230704173835272

image-20230704173844158

아무 계정이나 시도해보면 성공적으로 회원가입을 할 수 있다.


image-20230704173923016

로그인을 시도해보면 로그인은 되지만, admin으로 로그인 해야한다고 메시지가 뜬다.

다시 Join페이지로 돌아가서 admin으로 회원가입을 시도해보자


image-20230704174041692

이미 존재하는 id라고 뜨면서 회원가입을 할 수 없다.


image-20230704174200206

image-20230704174207482

하지만 회원가입을 할 때 admin앞에 공백을 넣어주면 admin으로 회원가입이 되는 것을 볼 수 있다.


image-20230704174233684

image-20230704174400373

이제 새로 만든 admin계정으로 로그인 하면 문제를 풀 수 있다.