freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

viper:一款中国人写的红队服务器——记一次内网穿透练习
2022-03-09 18:43:55
所属地 香港

1. viper

1646730398_62271c9e81fb61ff1a4e3.png!small?1646730397447

Viper 是中国人自主编写的一款红队服务器,提供图形化的操作界面,让用户使用浏览器即可进行内网渗透,发布在语雀官方地址提供了很全面的官方文档,包括四大部分,分别是使用手册、模块文档、博客文章、开发手册,其中使用手册中对其介绍如下:

提供图形化的操作界面,用户使用浏览器即可进行内网渗透集成杀软绕过,内网隧道,文件管理,命令行等基础功能

内置70+个模块,覆盖初始访问/持久化/权限提升/防御绕过/凭证访问/信息收集/横向移动等大类

可视化的内网网络拓扑展示

msfconsole命令行,支持颜色显示,Tab提示

多用户协同

Viper 的安装可以参考使用手册的首次安装,使用f8x工具支持在全新的linux环境一键安装viper,接下来话不多说,来试试看

2. 搭建实验环境

申请一台云服务器 搭建一台viper服务器(属于攻击者)- 外网服务器

申请两台云服务器作为网站的服务器来使用(属于被攻击者),分别称为边界网站服务器,内网服务器 - 优刻云服务器

配置防火墙,禁止外网访问内网服务器的所有端口

在边界网站服务器上搭建有 struts2 漏洞的网站,在内网服务器搭建一个自己写的网站

2.1 外网服务器搭建

1.在云平台新建一台外网服务器

1646731425_622720a1cf56262a955e1.png!small?1646731424271

2.在服务器搭建 viper

用MobaXterm远程连接,选ssh,root,默认22端口

根据首次安装的命令一行一行执行

docker ps:列出所有在运行的容器信息(检验docker安装成功)

1646731219_62271fd3e546303e52489.png!small?1646731218247

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地址

1646731673_62272199672fbb4efdca4.png!small?1646731671931

载荷就是木马,meterpreter_reverse_tcp,回弹木马一定有reverse这个单词,其中tcp协议的最稳定

1646731564_6227212cbbabade29346e.png!small?1646731563168

3. 添加防火墙规则

只开放22端口和60000端口,22端口用于SSH连接,60000端口用于回弹访问和内网服务器访问

1646731632_62272170eb565e1a0bdf1.png!small?1646731631386


2.2 边界Web服务器和内网服务器搭建

1. 添加防火墙规则

1646732160_62272380d7f1482979831.png!small?1646732159351

内网服务器:1-65535的端口,拒绝访问

1646732193_622723a121f92bc819ae6.png!small?1646732191569

边界服务器:开放3389(远程桌面) 8080 80端口

1646732203_622723ab5ac7a358fe432.png!small?1646732201769

2. 新建两台云服务器

windows的2008年64位主机

1646732261_622723e55fba4e4a113f3.png!small?1646732259777

3.mstsc 远程尝试连接

1646732317_6227241dcc9deb9e3b006.png!small?1646732316150

点显示选项,改用户名

1646732327_622724277ca20df0c1d2d.png!small?1646732325895

两台服务器都能远程连接

1646732343_62272437db8fac0c8e371.png!small?1646732342210

若把内网服务器的外网防火墙改变为之前新建的内网防火墙(关联产品操作-更换外网防火墙)

1646732353_62272441de7295cbce107.png!small?1646732352253

1646732360_622724488141f43962438.png!small?1646732358836

更改防火墙后无法远程连接

只能在边界服务器里可以用内网服务器的内网地址进行远程连接

1646732370_62272452c40e8ecd1f051.png!small?1646732369113

远程套娃连接

4. 上传需要的文件

内网服务器搭建——内网服务器(上传时,得先开放3389远程连接端口)

1646732468_622724b4e88ccd63008dc.png!small?1646732467307

外网服务器环境——边界Web服务器

1646732512_622724e09a4638ecededc.png!small?1646732510944

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 包,复制

1646732615_62272547eb25b473f4041.png!small?1646732614373

  • 粘贴到 tomcat的webapps 下,为了便于后续访问,改名为struts2

1646732639_6227255f8cfe6514b1cc4.png!small?1646732637901

启动 tomcat(启动tomcat会自动部署一个web的网站应用,struts的war包会自动部署)

1646732669_6227257db05100f2c574c.png!small?1646732668052

4. 新增防火墙规则,放开边界web服务器的8080端口

1646732743_622725c78d749a844ecc0.png!small?1646732741969

新增后如下

1646732698_6227259a6eb372cf13dd2.png!small?1646732697829

改变边界Web服务器的防火墙规则

5. tomcat 默认端口为8080,访问边界Web服务器的8080端口

1646732768_622725e031470f0fcab4b.png!small?1646732766878

然后访问 http://106.75.107.15:8080/struts2

(struts框架的网站:struts1是 .do结尾,struts2是 .action结尾)谷歌搜索filetype:.action

1646732778_622725ea45fa5da80cd60.png!small?1646732776609

4.2 内网服务器 - php的站

1646732891_6227265b3a43490307948.png!small?1646732889548

下载xamp

把防火墙改为之前的内网防火墙

3. 攻击者服务器(自己的虚拟机)

1646732945_62272691931b6e03daaab.png!small?1646732944023

1. struts2 工具检测 边界服务器 并上传冰蝎马

把 http://106.75.107.15:8080/struts2/example/HelloWorld.action(边界服务器) 用 struts2 工具扫描

1646732986_622726baac510785c4d21.png!small

发现漏洞后不用操作,直接执行whoami,发现获得了(边界服务器)administrator权限

(返回的数据量有限,只能返回一行,但可以传木马解决)

1646733012_622726d4b86dce5111b5c.png!small?1646733011076

上传冰蝎马,把冰蝎的马:shell.jsp 打开,复制

1646733026_622726e2e71b9b3e4079c.png!small?1646733025276

粘贴到上传框,改名为404.jsp,上传

1646733039_622726efaea8ea13409c1.png!small?1646733038090

上传成功后,访问一下http://106.75.107.15:8080/struts2/404.jsp,不报错则存在此文件

1646822136_622882f85b16c67d9d9a5.png!small?1646822135830

2. 用冰蝎连接,上传viper马到 边界服务器

冰蝎连接边界Web服务器

1646822149_62288305746f581c01f7c.png!small?1646822148960

1646822184_62288328804760c3549c6.png!small?1646822184100

在外网服务器 viper 生成监听载荷(木马)

1646822193_62288331b1ceb8aee0795.png!small?1646822193219

生成的马是java 的 tcp 回弹类型

1646822206_6228833e2091cc146919b.png!small?1646822205557

自动迁移到进程explorer.exe(此进程是windows特有的开机则运行的桌面进程)

生成后,打开所在文件夹,改名ma.war

冰蝎给边界Web服务器上传生成的 viper 马——ma.war

网站8080端口的根目录是 C:/tomcat/webapps/

1646822219_6228834b2e94283d6aa23.png!small?1646822218713

3. 访问ma,viper(外网服务器)成功连接 边界服务器

1646822229_622883557fd08c404165f.png!small?1646822228983

访问 http://106.75.107.15:8080/ma 之后,viper 成功连接主机

右键,可以进行操作(15秒是读秒,每60秒连接一次)

1646822235_6228835bd69c62e736db0.png!small?1646822235518

4. 给viper(外网服务器)上 边界服务器 中 添加内网路由

把外网服务器当做路由器,把内网服务器所在段添加进路由表

命令行终端:ipconfig,查看到一个接口的内网ip

1646822245_622883658d307b541d306.png!small?1646822245036

添加内网路由:自动新增,可以再手动新增 10.9.141.0 的段(解析结果失败没事,刷新就有了)

1646822251_6228836b501df32e64760.png!small?1646822250807

5. viper(外网服务器:149.28.57.80)新增代理(打隧道)

使发送给外网服务器的请求,能转发到边界服务器和内网服务器

点击内网代理中的新增代理

1646822257_62288371ca01e78c3238e.png!small?1646822257297

开放外网服务器的9090端口

1646822263_6228837797274d198c809.png!small?1646822263080

6. 攻击者服务器给 viper 做代理

Proxifier - 配置文件 - 代理服务器 - 添加

1646822283_6228838ba8d70f563be8d.png!small?1646822283157

填入外网服务器的ip地址,上文中新增代理的端口和协议

点击检查

1646822295_622883979e2afd3d5a17b.png!small?1646822295083

检查会通过 viper代理服务器 去上网,去访问百度

1646822307_622883a3a7787a5294f23.png!small?1646822307156

全部点确定

Proxifier - 配置文件 - 代理规则

1646822318_622883aed247f51c7e2fe.png!small?1646822318303

连接本机127.0.0.1的是直连,其他访问默认走代理(现在可以在攻击者服务器,用内网服务器的内网ip去连远程桌面,关闭代理则连接不到)

1646822325_622883b54b37b0ea7cb21.png!small?1646822324757

7. 弱口令扫描内网服务器

目标是内网服务器的内网ip,正常应该是 10.9.141.1-10.9.141.254 一个段去跑,不止测SMB,挨着个的去跑(SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通

1646822335_622883bf83920fdf74698.png!small?1646822335080

导入密码:

1646822340_622883c4dae36b97fbde7.png!small?1646822340508

扫描成功,得到用户名、密码

此时在走代理,所以Proxifier会有流量包

1646822401_622884016606aa4804586.png!small?1646822401039

4. 攻击过程总结

  1. 利用 struts2 攻击边界web服务器

  2. 写入冰蝎木马

  3. viper - 监听载荷 - 生成载荷

  4. 选择反弹的Java载荷

  5. 设定lport:6666

  6. 载荷类型:war

  7. 重命名war为 ma.war

  8. 冰蝎把ma.war上传到tomcat\webapp\目录下

  9. 刷新冰蝎的目录如果生成了ma这个目录

  10. 访问:http://ip:8080/ma 地址,会发现viper这面木马上线

  11. 在viper上线的主机上右键点选内网路由

  12. 添加路由,建议使用自动生成路由

  13. 内网代理 - 新增代理 - 设定代理端口

  14. Proxifier 中设定代理地址和端口号(ip写viper的ip,端口写上一步设定的端口号)

  15. 使用攻击工具访问探测和攻击内网服务器

# 渗透测试 # web安全 # 内网渗透 # 红队实战; # 红队工具
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录