1. viper
Viper 是中国人自主编写的一款红队服务器,提供图形化的操作界面,让用户使用浏览器即可进行内网渗透,发布在语雀官方地址提供了很全面的官方文档,包括四大部分,分别是使用手册、模块文档、博客文章、开发手册,其中使用手册中对其介绍如下:
提供图形化的操作界面,用户使用浏览器即可进行内网渗透集成杀软绕过,内网隧道,文件管理,命令行等基础功能
内置70+个模块,覆盖初始访问/持久化/权限提升/防御绕过/凭证访问/信息收集/横向移动等大类
可视化的内网网络拓扑展示
msfconsole命令行,支持颜色显示,Tab提示
多用户协同
Viper 的安装可以参考使用手册的首次安装,使用f8x工具支持在全新的linux环境一键安装viper,接下来话不多说,来试试看
2. 搭建实验环境
申请一台云服务器 搭建一台viper服务器(属于攻击者)- 外网服务器
申请两台云服务器作为网站的服务器来使用(属于被攻击者),分别称为边界网站服务器,内网服务器 - 优刻云服务器
配置防火墙,禁止外网访问内网服务器的所有端口
在边界网站服务器上搭建有 struts2 漏洞的网站,在内网服务器搭建一个自己写的网站
2.1 外网服务器搭建
1.在云平台新建一台外网服务器
2.在服务器搭建 viper
用MobaXterm远程连接,选ssh,root,默认22端口
根据首次安装的命令一行一行执行
docker ps:列出所有在运行的容器信息(检验docker安装成功)
chmod +x /usr/bin/docker-compose:为/usr/bin/docker-compose这个文件添加执行权限
内存小于 2G的那些命令不执行
export VIPER_PASSWORD=AqZd@123456(用户名root,一会登录viper的密码)
cat /root/VIPER/docker-compose.yml :查看密码是否写入
访问 https://yourip:60000登录,把yourip换成服务器的ip地址
载荷就是木马,meterpreter_reverse_tcp,回弹木马一定有reverse这个单词,其中tcp协议的最稳定
3. 添加防火墙规则
只开放22端口和60000端口,22端口用于SSH连接,60000端口用于回弹访问和内网服务器访问
2.2 边界Web服务器和内网服务器搭建
1. 添加防火墙规则
内网服务器:1-65535的端口,拒绝访问
边界服务器:开放3389(远程桌面) 8080 80端口
2. 新建两台云服务器
windows的2008年64位主机
3.mstsc 远程尝试连接
点显示选项,改用户名
两台服务器都能远程连接
若把内网服务器的外网防火墙改变为之前新建的内网防火墙(关联产品操作-更换外网防火墙)
更改防火墙后无法远程连接
只能在边界服务器里可以用内网服务器的内网地址进行远程连接
远程套娃连接
4. 上传需要的文件
内网服务器搭建——内网服务器(上传时,得先开放3389远程连接端口)
外网服务器环境——边界Web服务器
4.1 边界服务器 - 有struts框架漏洞的站
1. Java 运行环境
点击 jdk.exe,下载 Java
根据word文档配置 Java 环境变量
2. 解压 apache-tomcat-7.0.109-windows-x86 压缩包,并为了简洁明了改名为 tomcat
3. 解压 struts-2.0.9-apps
只需要一个 war 包,复制
粘贴到 tomcat的webapps 下,为了便于后续访问,改名为struts2
启动 tomcat(启动tomcat会自动部署一个web的网站应用,struts的war包会自动部署)
4. 新增防火墙规则,放开边界web服务器的8080端口
新增后如下
改变边界Web服务器的防火墙规则
5. tomcat 默认端口为8080,访问边界Web服务器的8080端口
然后访问 http://106.75.107.15:8080/struts2
(struts框架的网站:struts1是 .do结尾,struts2是 .action结尾)谷歌搜索filetype:.action
4.2 内网服务器 - php的站
下载xamp
把防火墙改为之前的内网防火墙
3. 攻击者服务器(自己的虚拟机)
1. struts2 工具检测 边界服务器 并上传冰蝎马
把 http://106.75.107.15:8080/struts2/example/HelloWorld.action(边界服务器) 用 struts2 工具扫描
发现漏洞后不用操作,直接执行whoami,发现获得了(边界服务器)administrator权限
(返回的数据量有限,只能返回一行,但可以传木马解决)
上传冰蝎马,把冰蝎的马:shell.jsp 打开,复制
粘贴到上传框,改名为404.jsp,上传
上传成功后,访问一下http://106.75.107.15:8080/struts2/404.jsp,不报错则存在此文件
2. 用冰蝎连接,上传viper马到 边界服务器
冰蝎连接边界Web服务器
在外网服务器 viper 生成监听载荷(木马)
生成的马是java 的 tcp 回弹类型
自动迁移到进程explorer.exe(此进程是windows特有的开机则运行的桌面进程)
生成后,打开所在文件夹,改名ma.war
冰蝎给边界Web服务器上传生成的 viper 马——ma.war
网站8080端口的根目录是 C:/tomcat/webapps/
3. 访问ma,viper(外网服务器)成功连接 边界服务器
访问 http://106.75.107.15:8080/ma 之后,viper 成功连接主机
右键,可以进行操作(15秒是读秒,每60秒连接一次)
4. 给viper(外网服务器)上 边界服务器 中 添加内网路由
把外网服务器当做路由器,把内网服务器所在段添加进路由表
命令行终端:ipconfig,查看到一个接口的内网ip
添加内网路由:自动新增,可以再手动新增 10.9.141.0 的段(解析结果失败没事,刷新就有了)
5. viper(外网服务器:149.28.57.80)新增代理(打隧道)
使发送给外网服务器的请求,能转发到边界服务器和内网服务器
点击内网代理中的新增代理
开放外网服务器的9090端口
6. 攻击者服务器给 viper 做代理
Proxifier - 配置文件 - 代理服务器 - 添加
填入外网服务器的ip地址,上文中新增代理的端口和协议
点击检查
检查会通过 viper代理服务器 去上网,去访问百度
全部点确定
Proxifier - 配置文件 - 代理规则
连接本机127.0.0.1的是直连,其他访问默认走代理(现在可以在攻击者服务器,用内网服务器的内网ip去连远程桌面,关闭代理则连接不到)
7. 弱口令扫描内网服务器
目标是内网服务器的内网ip,正常应该是 10.9.141.1-10.9.141.254 一个段去跑,不止测SMB,挨着个的去跑(SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通)
导入密码:
扫描成功,得到用户名、密码
此时在走代理,所以Proxifier会有流量包
4. 攻击过程总结
利用 struts2 攻击边界web服务器
写入冰蝎木马
viper - 监听载荷 - 生成载荷
选择反弹的Java载荷
设定lport:6666
载荷类型:war
重命名war为 ma.war
冰蝎把ma.war上传到tomcat\webapp\目录下
刷新冰蝎的目录如果生成了ma这个目录
访问:http://ip:8080/ma 地址,会发现viper这面木马上线
在viper上线的主机上右键点选内网路由
添加路由,建议使用自动生成路由
内网代理 - 新增代理 - 设定代理端口
Proxifier 中设定代理地址和端口号(ip写viper的ip,端口写上一步设定的端口号)
使用攻击工具访问探测和攻击内网服务器