ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Webhacking.kr] 41번 풀이
    Wargame/webhacking.kr (old) 2019. 5. 7. 19:20


    파일을 업로드 할 수 있다. 파일 업로드 취약점 문제인 것 같다.


    파일 업로드 취약점이란?

    업로드할 수 있는 게시판 등을 이용하여 악성 서버 스크립트(웹 쉘)를 해당 페이지에 심어 악성코드가

    실행되도록 하는 취약점


    문제의 소스를 보았다.



    hidden_dir에 업로드한 파일이 복사되고, 그 파일에 password를 적어준다.

    업로드한 파일로 접근하여 password를 알아내는 문제이다.

    hidden_dir를 어떻게 알아내야할까?!


    소스를 자세히 보면 copy함수 앞에 @표시가 없다.

    함수의 에러를 이용하여 hidden_dir를 알아낼 수 있을 것 같다.


    php의 @

    함수 실행 시 에러가 발생하여도 에러 메시지를 출력하지 않는다.


    copy(string \$source, string \$dest[, resource \$context ] )

    copy 함수의 dest 부분에 directory가 올 경우, Warning 메시지를 띄운다.


    dest 부분이 directory가 되게 하기 위해 ../를 입력해보았으나, /가 필터링되어 있다.

    파일 이름을 공백으로 만들어 에러를 발생시켜보자.


    파일 이름을 공백으로 만들어보려 하였으나 반드시 파일 이름을 설정해주어야 한다.

    따라서 임의로 test라는 파일을 생성하고, Fiddler를 사용하여 파일 이름을 공백으로 수정해주었다.



    해당 request를 전송하였다.



    no,,;;

    공백의 파일을 날리면,, no로 막혀있다.


    다른 방법을 이용할게 뭐가 있는지 찾아보다가 소스 코드를 보았는데,

    <와 >를 공백으로 치환시켜준다. 이 문자를 파일 이름으로하면 될 것 같다.


    파일 이름을 <로 수정해주고 파일을 업로드 하였다.



    copy 함수의 Warning 메시지가 출력되면서 hidden_dir 이름을 알려준다.



    hidden_dir : dkanehdkftndjqtsmsdlfmadmlvhfejzzzzzzzzzkkkkkkkkggggggggg


    hidden_dir을 통해 업로드한 파일로 접근하면 password를 확인할 수 있을 것이다.


    test 파일 업로드



    업로드 완료시 Done~이 출력된다.

    hidden_dir을 통해 업로드한 test파일로 접근하여 password를 알아냈다.



    알아낸 password를 인증하여 문제를 풀었다.



    보안에 있어서 Error 처리가 얼마나 중요한지 알려주는 문제였다.


    'Wargame > webhacking.kr (old)' 카테고리의 다른 글

    [Webhacking.kr] 43번 풀이  (0) 2019.05.07
    [Webhacking.kr] 42번 풀이  (0) 2019.05.07
    [Webhacking.kr] 40번 풀이  (0) 2019.05.07
    [Webhacking.kr] 39번 풀이  (0) 2019.05.07
    [Webhacking.kr] 38번 풀이  (0) 2019.05.07

    댓글

@Jo Grini's Blog