Vulnstack(一)

0x00 Preface

网上有很多关于 Vulnstack(一) 的优质文章,本篇文章仅用于记录笔者自身的学习过程。因能力有限,过程中多多少少存在不完善的地方或是未解决的问题,日后有机会会补充上。

内网渗透基础总结:手把手教你如何进行内网渗透

0x01 环境准备

共有三台机器,Win7是对外的web机,Win2003和Win2008(DC)是内网机器。

  • VM1(Win7)添加一块网卡,分别设置为:VMnet1(仅主机模式)、VMnet8(NAT模式)

  • VM2(Win2003)网卡设置为:VMnet1(仅主机模式)

  • VM2(Win2008)网卡设置为:VMnet1(仅主机模式)

导入虚拟机后不要过多操作如移除打印机等,否则可能会出现一些问题。建议大家每次打开靶机时都先打开Win2008(DC)再打开Win7和Win2003,关闭靶机是先关闭Win7和Win2003再关闭Win2008(DC),尽量避免出现环境问题吧。

首先打开Win2008(DC),使用域成员账号 GOD\liukaifeng01 初始密码 hongrisec@2019 登录,提示密码已过期,更改密码为 hongrisec@2021。接着切换用户,使用域管理员账号 GOD\Administrator 重复上述操作。最后重启Win2008,域数据联网更新后密码将自动同步至Win7与Win2003(域成员账号密码均存储在DC中,域数据更新同步前仍使用本地缓存的密码进行认证)。打开Win7提示激活,直接取消即可:
Vulnstack(一)_第1张图片
找到并打开phpstudy.exe,启动服务(若启动失败,重启Win7即可):
Vulnstack(一)_第2张图片
Vulnstack(一)_第3张图片
打开Firefox访问localhost,已确认服务启动:
Vulnstack(一)_第4张图片
整理一下:

攻击机kali:192.168.202.130
域成员Win7:192.168.202.132&192.168.52.143
域控Win2008:192.168.52.138
域成员Win2003:192.168.52.141
DNS服务器:192.168.52.138

当然喽,这是我们站在上帝视角,便于我们确认环境无误的。正常来说,拿到Win7的IP,然后开始我们的渗透之旅。

0x02 信息收集

一、探测靶机IP

使用nmap对同一C段主机进行扫描:

nmap -sP 192.168.202.1/24

Vulnstack(一)_第5张图片
使用arp-scan对同网段主机进行扫描:

arp-scna -l

Vulnstack(一)_第6张图片
在靶机上执行ifconfig进行确认(实战中拿下靶机前无法实现这一步):
Vulnstack(一)_第7张图片
二、端口扫描

使用nmap对靶机进行全扫描(扫描前确保phpstudy的服务已成功启动):

nmap -Pn -A 192.168.202.129

Vulnstack(一)_第8张图片
使用御剑对靶机进行全扫描:
在这里插入图片描述
三、目录扫描

使用dirb对靶机进行目录扫描 :

dirb "http://192.168.202.132"

Vulnstack(一)_第9张图片
使用dirmap对靶机进行目录扫描:

python3 dirmap.py -i 192.168.202.132 -lcf

Vulnstack(一)_第10张图片
四、指纹识别

使用whatweb对靶机上的网站进行指纹识别:

whtaweb http://192.168.202.132

在这里插入图片描述
使用御剑对靶机上的网站进行指纹识别:
Vulnstack(一)_第11张图片
使用cmscan对靶机上的网站进行指纹识别:
Vulnstack(一)_第12张图片
指纹识别依托于目录爆破,没有扫描到关键的cms信息既可能是字典的问题,也可能是靶机上根本就没有部署这样的网站。

0x03 漏洞探测

访问http://192.168.202.132/phpifno.php:
Vulnstack(一)_第13张图片
phpinfo.php中存在许多关键信息,不过要具体漏洞具体分析。

访问http://192.168.202.132/phpmyadmin:
Vulnstack(一)_第14张图片
此处可能存在session包含和弱口令,如果成功登录不仅可以可以在数据库中翻阅用户敏感信息,还可以尝试日志包含或直接向文件中写shell。

访问http://192.168.202.132/beifen.rar,解压缩后得到yxcms文件夹:
Vulnstack(一)_第15张图片

YXcms是一款基于PHP+MySql开发的网站管理系统,采用轻量级MVC设计模式。

在\protected\config.php中找到phpmyadmin的用户名和密码:
Vulnstack(一)_第16张图片
尝试访问http://192.168.202.132/yxcms:

访问成功,并在公告信息处找到后台路径及用户名和密码,若成功登陆则可尝试写shell。

0x04 漏洞利用

一、phpmyadmin

登录phpmyadmin,查看用户权限:

show grants for root@localhost;

Vulnstack(一)_第17张图片
查看secure_file_priv:

show variables like "secure";

Vulnstack(一)_第18张图片
查看general_log和general_log_file:

show variables like "%general%";

Vulnstack(一)_第19张图片
打开日志并修改日志路径:

set global general_log="on"; #开启日志
set global general_log_file="C:/phpStudy/WWW/a.php" #修改日志路径

需要注意的是,secure_file_priv的值无法通过上述方法进行修改:
Vulnstack(一)_第20张图片
MySQL 文件读写

写shell后一键连接:

select "";

Vulnstack(一)_第21张图片
Vulnstack(一)_第22张图片
二、yxcms

登录后台尝试写shell:
Vulnstack(一)_第23张图片
编辑index_index.php(path:/yxcms/index.php),写shell后一键连接:
Vulnstack(一)_第24张图片
Vulnstack(一)_第25张图片

0x05 权限提升

使用CS建立监听后生成可执行木马:
Vulnstack(一)_第26张图片
使用shell上传:
Vulnstack(一)_第27张图片
shell中执行:
在这里插入图片描述
成功上线:
在这里插入图片描述
进行漏洞提权:
Vulnstack(一)_第28张图片
Vulnstack(一)_第29张图片
成功获取system权限:
Vulnstack(一)_第30张图片

0x06 远程登录

获取凭证:
Vulnstack(一)_第31张图片
查看3389端口是否开启:

netstat -ano|findstr "3389"

Vulnstack(一)_第32张图片
开启3389端口:

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

在这里插入图片描述
补充一下,关闭3389端口&开启3389端口的另一种方法:

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 11111111 /f
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

Vulnstack(一)_第33张图片
远程连接:
Vulnstack(一)_第34张图片
远程连接失败,本地ping一下试试:
Vulnstack(一)_第35张图片
无法ping通,猜测受到防火墙阻拦,关闭防火墙:

net stop mpssvc

Vulnstack(一)_第36张图片
成功关闭后仍无法ping通,远程连接失败:
Vulnstack(一)_第37张图片
使用CS可以轻松连接,但延迟会很高:
Vulnstack(一)_第38张图片

0x07 权限维持

将C:/phpStudy/WWW/artifact.exe添加为注册表启动项:

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v evil /t REG_SZ /d "C:\phpStudy\WWW\artifact.exe" /f

在这里插入图片描述
关闭Win7并重启CS:
Vulnstack(一)_第39张图片
重启Win7,未能成功上线,权限维持失败。经检验,在shell中执行的命令未能生效,而在本地执行该命令就能成功创建:
Vulnstack(一)_第40张图片
Vulnstack(一)_第41张图片
具体原因暂且不详,也可以尝试一下其他方法如写入Startup目录,或者直接使用CS插件。

0x08 横向移动

一、内网穿透

正常来说,我们是无法访问通过Win7的内网IP访问服务的:
在这里插入图片描述
因此想要漫游内网,就必须要进行内网穿透。这里我们以Win7为跳板,给它挂上代理:
Vulnstack(一)_第42张图片
然后随便选择一个未被占用的端口,这里我选的是9050:
在这里插入图片描述
然后使用proxychain为kali挂上代理:

vim /etc/proxychains4.conf

Vulnstack(一)_第43张图片
使用代理,成功通过Win7内网IP访问服务:

proxychains4 curl http://192.168.52.143

Vulnstack(一)_第44张图片
需要注意的是,不要用ping进行验证,因为proxychains只会代理TCP连接,而ping使用的是ICMP。

这里延申一下,起初我以为通过CS实现的代理仅是简单的正向连接,但实际情况却与之不符。如果使用的是正向连接,那么9050端口就应该是在跳板机(Win7)上打开的,但经查实9050端口却是在kali上打开的:
Vulnstack(一)_第45张图片
Vulnstack(一)_第46张图片
这也就是为什么我们前面使用proxychains设置代理时使用的是127.0.0.1 9050,而不是Win7的192.168.202.132 9050。

故我猜测,通过CS内置功能([beacon] → Pivoting → SOCKS Server)实现的SOCKS v4代理,实质上是通过反弹SOCKS v4服务器实现的:kali开启9050监听和xxx监听(将9050端口的流量转发至xxx端口)然后Win7反弹SOCKS v4服务器到kali的xxx端口。

这样以来就符合实际情况了,kali上所有经过9050的端口的流量都将被转发至xxx端口,xxx端口再将流量转发至Win7,最后再通过Win7访问其他内网机器。由于这里CS服务端和客户端都是在kali上运行的,因此kali既充当攻击机,又充当公网VPS。

举一反三,假设CS的服务端是在Unbuntu上运行的,kali仍作为攻击机运行CS客户端,那么proxychains应该怎么设置呢?没猜错的话应该设置成Unbuntu的IP吧。

如何从零构建对内网穿透的理解

二、信息收集

查看域信息:

net view

在这里插入图片描述
共发现三台主机。注意这里不要使用提权后的system用户去执行命令,否则不会显示Win7的STU1,此外还会导致后面的一些命令无法执行。

查看DNS服务器:

ipconfig/all

Vulnstack(一)_第47张图片
查看当前登录域与用户信息:

net config workstation

Vulnstack(一)_第48张图片
这条命令查询到的信息非常全,包含上条命令查询到的DNS服务器。

前面的命令在CS中都以shell开头,指明执行的是cmd命令。下面我们通过CS内置的功能进行信息收集(前面已经完成了内网穿透,使用kali上的nmap等工具也行,这里不再进行演示)。

探测域内存活主机:
Vulnstack(一)_第49张图片
在这里插入图片描述
不对啊,这45.xx.xx.xx是几个意思?应该是环境问题,确保三台靶机都是开启状态再执行一次:
在这里插入图片描述
Vulnstack(一)_第50张图片
感觉还是有问题的,不知道是什么原因导致的,暂且不管了。

端口扫描:
Vulnstack(一)_第51张图片
Vulnstack(一)_第52张图片
这次的IP应该是正确的了,端口扫描发现三台主机均开启了139端口:
Vulnstack(一)_第53张图片
445/139端口怎么利用不用多说了吧,不了解的自行百度。

三、漏洞利用

首先我们开启一个SMB监听:
在这里插入图片描述
Vulnstack(一)_第54张图片
然后利用CS内置的jump模块进行传递:
Vulnstack(一)_第55张图片
Vulnstack(一)_第56张图片
Vulnstack(一)_第57张图片

0x09 Summary

整体来说比较简单,过一段时间会再用msf走一遍这个靶场,到时候再做补充。

你可能感兴趣的:(靶机,靶机)