docker安装以及VPN加速
ssrf curl简单使用
web-ssrfme复现获取flag
docker安装以及VPN加速
首先安装docker可以参考以下链接:
https://blog.csdn.net/magic_ll/article/details/139985543
镜像站加速配置daemon.json我试了发现不适用,docker run会在Pulling fs layer卡住,访问github.com发现问题:windows开vpn能访问,但是虚拟机不能访问,于是指定vpn的端口让虚拟机吃到VPN加速
同时我还在/etc/systemd/system/文件夹下创建了docker.service.d/文件夹
并vim http-proxy.conf指定加速端口,反正两个之中有一个生效了。
记得输入指令重启docker
systemctl daemon-reload
systemctl restart docker
github搜pikachu,可以找到拉镜像的指令
docker run -d -p 8765:80 8023/pikachu-expect:latest
#可以不拉pikachu镜像,这里是演示,该镜像有1个多G大小
拉完docker后会自动运行,查看docker进程并重启启动其端口
docker ps -al
vscode远程ssh连接ubuntu需要额外安装docker和docker explorer模块才能访问docker镜像内的文件
点击小鲸鱼然后找到正在运行的docker ps进程,右键选attach vscode
其中ssh连接时发生了报错,没有的可以跳过,翻译后显示主机密钥更改,猜测是因为VMware虚拟机恢复快照导致公钥对不上
找到.ssh文件夹下的known_hosts文件,将其内部的密钥清空即可
ssrf curl简单使用
windows访问ubuntu的8765端口可以跳转到pikachu平台,记得安装时要配置数据库密码,下拉至ssrf模块可以看到curl,使用dict可以查看哪个端口被启用服务,如图是3306端口
使用file//+path(路径)可以访问具体文件,如图passwd文件被成功显示
gopherus可以写入不同的get shell,如图写入了redis的phpshell,路径默认,payload为<?php phpinfo();
将生成的代码URL解码可得:
解码内容简单解释:
flush all在redis内用于清空整个redis服务器数据,用来防止其对生成shell的代码造成影响
另一个生成文件ReverseShell则是任务计划Shell
web-ssrfme复现获取flag
首先在网上下载web-ssrfme.zip,然后放到虚拟机内,unzip解压,然后CD到含有docker-compose.yml文件夹目录下输入指令进行拖拽docker镜像
docker-compose up -d
#我使用的校园网访问清华镜像站被拒绝访问导致拉镜像总是报错,可能是被加入黑名单了,用手机数据共享热点成功搞定
docker进程没有端口记得restart一下
访问8091端口后跳转到代码页面,使用dict找端口,发现代码中过滤了file,dict,127.0.0.1等等,不过gopherus没有被过滤
查看代码发现有一个传参info显示phpinfo()的
在phpinfo()页面找到了不同于127.0.0.1的ip和端口
访问后发现能访问,127.0.0.1的过滤就可以绕过了
使用burpsuite抓取请求报文发送到暴力破解模块,在80端口左右add符号
payload选择1-10000,暴力破解172.18.0.3中1-10000端口有哪些是开启服务的
最后发现172.18.0.3只开放了80端口
尝试访问172.18.0.3同一网段的其他ip主机端口,发现172.18.0.1的80开着阿帕奇
访问172.18.0.2的80端口,显示Go away,扫描该IP端口
最后扫到80端口和6379端口
#因为我使用的burpsuite是免费版的,没有办法多进程同时进行,所以爆破速度很慢。
gopherus编码get shell代码
将代码执行
发现找不到shell.php
猜测路径不是默认路径/var/www/html,可能是其目录下的子文件夹,github搜fuzzdict,下载payload字典
load字典
最后暴力破解出upload文件夹
访问80端口的upload文件夹,发现是forbidden而不是not found
将路径修改为/var/www/html/upload
执行代码后访问文件发现not found
可能是URL编码问题,将代码URL编码 #记得修改IP为172.18.0.2
前往docker镜像内查看,发现成功写入shell.php文件
访问shell发现not found没了,但是没执行 ‘id’
docker下直接编写shell.php试试
<?php system('id');
发现可以执行,证明是<?php system(‘id’);代码编写的问题
该web-ssrfme要求找到flag文件,它在根目录/下
编写shell.php代码为
<?php system('cat /flag') ?>
编译代码并执行后,访问shell.php成功显示flag