介绍
目标: 10.10.10.171 (Linux) 难度: 简单 Kali: 10.10.14.6
OpenAdmin 是一台标记为简单的靶机,实际上也确实偏向于简单,考验的主要还是渗透的基本能力——信息收集、细心。
信息枚举
nmap
首先请出神器 nmap 来一波,我习惯于先扫全端口再详细扫开放端口:
nmap -n -T4 -Pn --min-parallelism 10 -p- 10.10.10.171 -oN ports &&
nmap -sV -sC -T4 -Pn -p $(cat ports|grep /tcp|cut -d/ -f1|xargs |tr ' ' ',') 10.10.10.171 -oN nmap.txt
# Nmap 7.80 scan initiated Wed Apr 29 16:40:31 2020 as: nmap -sV -sC -T4 -Pn -p 22,80 -oN nmap.txt 10.10.10.171
Nmap scan report for 10.10.10.171
Host is up (0.27s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 4b:98:df:85:d1:7e:f0:3d:da:48:cd:bc:92:00:b7:54 (RSA)
| 256 dc:eb:3d:c9:44:d1:18:b1:22:b4:cf:bd:6c:7a:54 (ECDSA)
|_ 256 dc:ad:ca:3c:11:31:5b:6f:e6:a4:89:34:7c:9b:e5:50 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Apr 29 16:40:47 2020 -- 1 IP address (1 host up) scanned in 16.33 seconds
扫描发现就开了 2 个端口,22、80 。
直接打开 80 端口的网页看看:
gobuster
没什么有意思的内容,那就用 gobuster 爆破一波目录(没有这个工具的话,kali 可以直接安装 apt -y install gobuster):
gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.10.171/ -l -t 30 --timeout 30s -x php -o gobuster.txt
发现一个 music 目录,打开看看:
点击登录试试,跳转到一个奇怪的页面,搜索了下发现是一个 OpenNetAdmin 系统,在这里点题了 <_< ,可以直接看到版本号 v18.1.1:
获取立足点
根据上面搜集到的信息,很明显了,直接 searchsploit :
searchsploit opennetadmin
因为目标是 Linux 系统,就直接用 sh 脚本了:
searchsploit -m php/webapps/47691.sh
查看代码发现是直接用 curl 请求,参数是 url:
发现一个坑,这个脚本不是 Linux 格式的,换行符错误,要修正才能用,我干脆重新拷贝粘贴一个新脚本:
附上 url 直接运行脚本:
bash exp.sh http://10.10.10.171/ona/
得到 www-data 执行命令权限。
权限提升
现在这还不是一个完整的 shell 会有诸多不便 ,我习惯获取一个全交互 shell;
这里又有一个坑,因为脚本是直接用的 curl ,所以某些含有特殊字符的命令无法执行,导致反弹命令无法运行;
解决方法是将反弹命令写成脚本下载到靶机再执行,绕过复杂命令;
注: 如何将简单的 Shell 转换成为完全交互式的 TTY
这样就获取了一个全交互式 shell 跟用 ssh 登录拥有几乎同样的功能了,重要的是可以用 vi 和可以执行交互式命令。
最近发现一个新的权限提升检测脚本,挺好用:
https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite
在靶机里下载执行:
有两个本机端口值得注意:
还有用户信息:
到了考验眼力和耐心的时侯了:
发现了数据库密码,然而数据库里没什么好东西,只有 OpenNetAdmin 系统的默认用户名和密码:
https://hashes.com/zh/decrypt/hash
试试直接用数据库密码( n1nj4W4rri0R! )登录上面发现的几个用户看看:
啊哈,jimmy 就是这个密码,所以密码不重复很重要~~~!!!
但是这个用户下并没有 user.txt ,那大概率在另一个用户下,继续脚本枚举:
又到了考验眼力的时侯了,看看这里有什么,刚刚 www-data 用户看不到的:
看我发现了什么!!!这个页面可以获取到 joanna 用户的密钥,那么这个页面在哪儿呢,看看 apache 配置:
还记得前面提醒注意的本地端口吗,果然是有用的,我们直接访问看看:
呃~~哈哈,这个页面写得不够严谨,本来 index.php 里写了鉴权的,我猜用 curl 直接绕过了:
嘤嘤嘤,我不管,反正我拿到密钥了 <_< !
注意密钥的权限一定要改成 600 不然不能正常使用:
竟然还要密码,只好爆破一波了,用 ssh2john.py 转成 hash 再用 john 跑一下字典:
密码到手:**==bloodninjas (id_rsa.joanna)==**
继续登录,用户的标志到手:
接下来向 root 进攻!继续枚举:
噢!!不愧是简单靶机,root 真是简单直接:
nano 怎么利用?不用急,要善于借助工具:https://gtfobins.github.io/
至此 root.txt 到手,提交得分咯!!我要升级!!!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于