ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ctf-d] 이벤트 예약 웹사이트를 운영하고... #A
    2022/Write-Ups 2022. 5. 17. 23:25

    4팀 김기연

    공격자가 웹페이지 소스코드를 유출한 시간을 구하라고 한다.

     

     

    리눅스 로그 덤프

    압축을 풀면 위와 같은 폴더들을 확인할 수 있다.

    웹페이지 소스코드를 유출한 시간을 구하라고 해서 weblog 폴더를 먼저 확인했다.

     

     

    weblog\access.log 파일 하나가 있었는데, 플래그 형식이랑 맞는 것 같아서 플래그는 여기서 찾으면 될 것 같다고 생각했다!

     

     

    리눅스 로그파일

    https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=joonee14&logNo=220349139519

    1) utmp

    : 현재 로그인한 사용자 상태 정보를 담고 있는 로그파일

    명령어) w, who, finger

     

    2) wtmp

    : 성공한 로그인, 로그아웃 및 시스템의 boot, shutdown의 히스토리를 담고 있는 로그파일

    명령어) last

    accounts\last_R

     

    3) btmp

    : 실패한 로그인 정보를 담고 있는 로그파일

    명령어) lastb

     

    4) last log

    : 마지막으로 성공한 로그인 정보를 담고 있는 로그파일

    명령어) lastlog

    accounts\lastlog

    admin01, dev, ahnlab 이 로그인했던 것으로 보인다.

     

     

    accounts\history

    chmod 777 ..? 읽기 쓰기 실행 위험하다고 생각

    /var/www/upload/editor/image 가 유출된 파일인가..?

    일단 아는 게 이거밖에 없으니 /var/www/upload/editor/image 중심으로 파보려고 한다 ㅎ . ㅎ

     

     

    웹로그 파일에서 냅다 /var/www/upload/editor/image 검색하고 플래그 넣어봤지만, 당연하게도 실패 ^_______^

    그리고 group, w, passwd, shadow 이런 파일들은 별로 필요가 없을 것 같다고 생각했다. 그냥 느킴임.

     

     

    file\fls_r_m

    이게 뭔지 모르겠다...

     

    process\ps_eaf

    process 폴더의 ps_eaf 파일이다. 마찬가지로 /var/www/upload/editor/image 검색해봤는데, reverse.php..??

    차례대로 UID, PID, PPID, C, STIME, TTY, TIME, CMD

    아 저 뒤쪽이 명령어인 것 같다.

    php -f /var/www/upload/editor/image/reverse.php 명령어를 실행한 것으로 보인다.

     

     

    network\lsof

    마찬가지로 /var/www/upload/editor/image를 검색해보았다.

     

    lsof

    : list open files, 시스템에 있는 모든 열린 파일들에 대한 정보를 출력해주는 명령어

    차례대로 COMMAND, PID, USER, FD, TYPE, DEVICE, SIZE/OFF, NODE NAME

    COMMAND가 php인 라인을 기준으로 정리했다.

    - COMMAND : 실행한 명령어 => php

    - PID : 프로세스 ID => 5245

    - USER : 명령어를 실행한 사용자 => www-data ??

    - FD : File Descriptor, 파일의 종류  => cwd (current working directory)

    - TYPE : 파일의 종류 => DIR 디렉토리

    - DEVICE : 디바이스 번호 => 8,1 ???

    - SIZE/OFF : 파일의 크기 혹은 현재 오프셋 => 73728 ???

    - NODE : 노드 번호 => 653895

    - NAME : 파일 이름 => /var/www/upload/editor/image

    https://dev.plusblog.co.kr/44

     

    [Linux] lsof 명령어 사용법

    lsof는 list open files의 약자로 시스템에서 열려있는 파일에 대한 정보를 출력해주는 명령어다. (대략 '엘에스오브'라고 발음하는 것 같다) 리눅스와 유닉스는 일반 파일과 디렉토리, 소켓, 파이프,

    dev.plusblog.co.kr

     

     

    fls_r_m

     

    정리하면, /var/www/upload/editor/image 가 유출된 것 같고,

    크기가 73728

    디바이스 번호가 

    실행한 명령어 php

    PID 5245

    사용자 www-data 

    reverse.php 실행?

     

     

    process\ps_eaf

    다시 보면, UID가 www-data, PID가 5245, PPID가 5244, STIME이 10:11, CMD가 php -f ~

     

     

    딱히 뭐가 없어서 블로그 검색해봤는데, 이제 웹로그에서 확인만 하면 되는 거였다.

    (참고 https://whitesnake1004.tistory.com/570)

     

    weblog\access.log 에서 upload/editor/image를 검색해본 결과, 위의 결과들만 찾을 수 있었다.

     

    그 중에서도 인코딩되어 있는 정보들이 눈에 띄었는데, 명령어 부분을 base64 디코딩해보았다.

    http://www.hipenpal.com/tool/base64-encode-and-decode-in-korean.php

     

    112.216.97.29 - - [25/Aug/2012:17:19:23 +0900] "GET /upload/editor/image/cmd.php?cmd=bHMgLWFsICAvdmFyL3d3dy91cGxvYWQvZWRpdG9yL2ltYWdlLw%20%20 HTTP/1.1" 200 13318 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2;

    => ls -al /var/www/upload/editor/image/

    ==> 자세히 출력

     

    112.216.97.29 - - [25/Aug/2012:17:21:12 +0900] "GET /upload/editor/image/cmd.php?cmd=dGFyIC1jdmYgL3Zhci93d3cvdXBsb2FkL2VkaXRvci9pbWFnZS8xMzMwNjY0ODM4IC92YXIvd3d3Lw%20%20 HTTP/1.1" 200 14541 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2;

    => tar -cvf /var/www/upload/editor/image/1330664838 /var/www/

    ==> tar 명령어를 통해 압축

     

    112.216.97.29 - - [25/Aug/2012:17:26:40 +0900] "GET /upload/editor/image/cmd.php?cmd=cGhwIC1mIC92YXIvd3d3L3VwbG9hZC9lZGl0b3IvaW1hZ2UvcmV2ZXJzZS5waHA%20 HTTP/1.1" 200 294 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2;

    => php -f /var/www/upload/editor/image/reverse.php

    ==> reverse.php를 통해 유출

     

    따라서 마지막 php -f 명령을 통해 reverse.php를 실행시켜서 유출한 것으로 판단된다.

    시각을 입력해주면

    해결 -!