본문 바로가기

Forensic/wargame & ctf

[ctf-d] 이벤트 예약 웹사이트를 운영하고... #A #B #C

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

 

 

리눅스 로그 덤프

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

웹페이지 소스코드를 유출한 시간을 구하라고 해서 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

https://cha4ser.tistory.com/entry/CTF-DDisk-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%98%88%EC%95%BD-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A5%BC-%EC%9A%B4%EC%98%81%ED%95%98%EA%B3%A0ABC

 

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를 실행시켜서 유출한 것으로 판단된다.

시각을 입력해주면

해결 -!


문제가 #B도 있고 #C도 있었다 ..!

 

보통 쉘을 획득할 때는 두 가지 방법을 사용한다.

1) 바인드 쉘

: 서버에서 포트가 열려 있고, 클라이언트가 서버로 접속하여 쉘을 얻는 방식

- 일반적으로 가장 많이 사용되는 방식

 

2) 리버스 쉘

: 클라이언트가 서버를 열고, 서버에서 클라이언트로 접속하는 방식

- 방화벽때문에 사용함. 방화벽은 주로 외부에서 내부로 들어오는 것은 막지만, 내부에서 외부로 나가는 것은 막지 않기 때문.

 

참고

https://hg2lee.tistory.com/86

 

위에서 발견한대로 PID는 5245같다. (#B)

 

#C 문제에서 리버스쉘에 대한 공격자 주소를 물어봤으므로, network 폴더의 lsof 파일을 살펴봤다.

 

val/www/upload/editor/image와 관련한 프로세스 ID는 5244, 5245인 것 같다.

 

5244는 쉘 명령어 옵션을 주는 것으로 보이고 (부모 프로세스)

실제 php 명령을 실행하는 프로세스는 5245인 것으로 보이는데, (자식 프로세스)

표시한 라인에서 TCP로 목적지 144.206.162.21로 접속하는 것을 확인할 수 있다.

 

리버스 쉘에 대한 공격자 주소 IP는 144.206.162.21로 생각된다.

 

(사실 잘 모르겠 ...)

 

 

'Forensic > wargame & ctf' 카테고리의 다른 글

[ctf-d] basisSixtyFour / e_e  (0) 2022.05.24
[Suninatas] 14  (0) 2022.05.18
[ctf-d] black-hole / Find Key(butterfly)  (0) 2022.05.10
[Suninatas] 26, 28  (0) 2022.05.02
[Suninatas] 18, 19  (0) 2022.03.29