공격자가 웹페이지 소스코드를 유출한 시간을 구하라고 한다.
압축을 풀면 위와 같은 폴더들을 확인할 수 있다.
웹페이지 소스코드를 유출한 시간을 구하라고 해서 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
3) btmp
: 실패한 로그인 정보를 담고 있는 로그파일
명령어) lastb
4) last log
: 마지막으로 성공한 로그인 정보를 담고 있는 로그파일
명령어) lastlog
admin01, dev, ahnlab 이 로그인했던 것으로 보인다.
chmod 777 ..? 읽기 쓰기 실행 위험하다고 생각
/var/www/upload/editor/image 가 유출된 파일인가..?
일단 아는 게 이거밖에 없으니 /var/www/upload/editor/image 중심으로 파보려고 한다 ㅎ . ㅎ
웹로그 파일에서 냅다 /var/www/upload/editor/image 검색하고 플래그 넣어봤지만, 당연하게도 실패 ^_______^
그리고 group, w, passwd, shadow 이런 파일들은 별로 필요가 없을 것 같다고 생각했다. 그냥 느킴임.
이게 뭔지 모르겠다...
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 명령어를 실행한 것으로 보인다.
마찬가지로 /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
[Linux] lsof 명령어 사용법
lsof는 list open files의 약자로 시스템에서 열려있는 파일에 대한 정보를 출력해주는 명령어다. (대략 '엘에스오브'라고 발음하는 것 같다) 리눅스와 유닉스는 일반 파일과 디렉토리, 소켓, 파이프,
dev.plusblog.co.kr
정리하면, /var/www/upload/editor/image 가 유출된 것 같고,
크기가 73728
디바이스 번호가
실행한 명령어 php
PID 5245
사용자 www-data
reverse.php 실행?
다시 보면, 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를 실행시켜서 유출한 것으로 판단된다.
시각을 입력해주면
해결 -!
문제가 #B도 있고 #C도 있었다 ..!
보통 쉘을 획득할 때는 두 가지 방법을 사용한다.
1) 바인드 쉘
: 서버에서 포트가 열려 있고, 클라이언트가 서버로 접속하여 쉘을 얻는 방식
- 일반적으로 가장 많이 사용되는 방식
2) 리버스 쉘
: 클라이언트가 서버를 열고, 서버에서 클라이언트로 접속하는 방식
- 방화벽때문에 사용함. 방화벽은 주로 외부에서 내부로 들어오는 것은 막지만, 내부에서 외부로 나가는 것은 막지 않기 때문.
참고
위에서 발견한대로 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 |