Enumeration
nmap
还是扫描系统对外开放的端口情况,对外开放了22,139,445,还有9999端口,显示是http服务,使用了nginx 1.10.3
┌──(kali㉿kali)-[~/HTB/Frolic]
└─$ nmap -sC -sV -oA nmap -Pn 10.10.10.111
Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-31 02:49 EDT
Nmap scan report for 10.10.10.111
Host is up (0.23s latency).
Not shown: 996 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 877b912a0f11b6571ecb9f77cf35e221 (RSA)
| 256 b79b06ddc25e284478411e677d1eb762 (ECDSA)
|_ 256 21cf166d82a430c3c69cd738bab502b0 (ED25519)
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)
9999/tcp open http nginx 1.10.3 (Ubuntu)
|_http-server-header: nginx/1.10.3 (Ubuntu)
|_http-title: Welcome to nginx!
Service Info: Host: FROLIC; OS: Linux; CPE: cpe:/o:linux:linux_kernelHost script results:
| smb2-security-mode:
| 311:
|_ Message signing enabled but not required
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_clock-skew: mean: -1h49m59s, deviation: 3h10m30s, median: 0s
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
| Computer name: frolic
| NetBIOS computer name: FROLIC\x00
| Domain name: \x00
| FQDN: frolic
|_ System time: 2023-03-31T12:20:38+05:30
| smb2-time:
| date: 2023-03-31T06:50:38
|_ start_date: N/A
|_nbstat: NetBIOS name: FROLIC, NetBIOS user: <unknown>, NetBIOS MAC: 000000000000 (Xerox)Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 73.12 seconds
TCP/139,445
因为开放了这两个端口,运行着samba服务,所以使用相关扫描工具探测一下是否存在问题
使用smbclient扫描ip,结果也差不多,暂时放下去看看web
Exploitation
TCP/9999
打开是默认的欢迎账号,但是在下方提示了系统还有一个1880端口,先记下来一会看看
看来还是得回到登录界面,但是提示还有两次机会,所以不太可能是暴力破解,查看页面源代码,在lohin.js中又发现一组用户名密码
admin:superduperlooperpassword_lol,使用该口令成功登陆系统,发现了一串很奇怪的编码,这一定是下一步的突破口
最后发现其实那一串字符是一个路径,尝试拼接url访问该路径,发现又是一大堆代码
在cyberchef中判断原文用了base64编码,解码后发现他是一个zip文件
得到这些消息后,将经过base64转换的编码保存到code.zip中
尝试使用fcrackzip来暴力破解,很快就得到了密码,然后解压文件得到了一个index.php
在经过十六进制和base64的转换,得到了一组brainfuck编码
再将其放到刚才的网站中,会得到一个字符串idkwhatispass
I don't know what is pass,这玩意肯定是密码,但是没有什么地方能登陆了,刚才还发现了一个1880端口,尝试访问该端口
访问前需要在/etc/hosts中写入ip到域名的映射,该端口是一个Node-RED的登录界面
但是使用admin/idkwhatispass登录并未成功,看了一些别人写的过程,发现是刚才扫描目录出现了问题,没有使用递归扫描,也就没有扫描出dev之后的内容,访问..dev/backup/返回了一个/playsms,跟在dev/backup之后报错404,而直接跟在http://10.10.10.111:9999/之后会进入playsms的登录页面
playsms
使用用户名和密码登录,成功登录,看到playsms的版本为1.4.5
Privilege Escalation
使用LinEnum.sh扫描系统,发现一个suid文件/home/ayush/.binary/rop
使用gdb工具,配置好peda,利用pattern create来生成非重复字符串
运行gdb -q rop然后将这一串字符串作为输入来运行程序
使用 ldd 指令获取基本 libc 地址
可以使用readelf工具来查看共享库libc.so.6的符号表,并过滤出system@和exit@的行,可以看到名为system的符号偏移地址为0003ada0,名为exit的符号偏移地址为0002e9d0,15ba0b是/bin/sh在libc.so.6文件中的偏移地址,以16进制表示
gdb-peda$ p 0xb7e19000 + 0x0003ada0
$4 = 0xb7e53da0 # systemgdb-peda$ p 0xb7e19000 + 0x15ba0b
$5 = 0xb7f74a0b # /bin/shgdb-peda$ p 0xb7e19000 + 0x0002e9d0
$6 = 0xb7e479d0 # exit
[JUNK] + SYSTEM(ret地址覆盖)+ EXIT(下一个返回地址)+“/bin/sh”(args),其中52个JUNK字符导致程序崩溃溢出
执行下面的指令即可