访问国外的网站服务器无法访问,做网站联系我们在那个板块里面,做好网站优化的方法有哪些?,南山附近公司做网站建设多少钱注意区分CSRF和SSRF#xff1a;
CSRF#xff1a;跨站请求伪造攻击#xff0c;由客户端发起#xff1b;
SSRF#xff1a;是服务器端请求伪造#xff0c;由服务器发起。
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能#xff0c;但又没有对目标…注意区分CSRF和SSRF
CSRF跨站请求伪造攻击由客户端发起
SSRF是服务器端请求伪造由服务器发起。
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能但又没有对目标地址做严格过滤与限制导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。
数据流攻击者-----服务器----目标地址
PHP中下面函数的使用不当可能会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
关于第一题curl包含了用于程序开发的libcurllibcurl支持http、https、ftp、gopher、telnet、dict、file和ldap协议。 点击之后正常情况是会出来一首诗我这里可能搭建的靶场存在点问题
影响不大可以看到它请求了一个参数url 那么我们尝试请求其他服务比如MySQL所在端口3306
构造payload
/vul/ssrf/ssrf_curl.php?urlhttp://127.0.0.1:3306 可以探测出3306端口是处于开放状态并且获取到了MySQL的版本号相关信息。
接下来我们使用file协议进行文件读取
file://协议需要填写绝对路径很多时候只能读取txt文件后面直接跟绝对路径。
构造payload
针对Linux系统
/vul/ssrf/ssrf_curl.php?urlfile:///etc/passwd
回显成功 接下来我们看第二个file_get_contents函数
file_get_contents() 函数用于将文件的内容读入到一个字符串中和file() 一样不同的是 file_get_contents() 把文件读入到一个字符串。
这个函数就很熟悉了因为在CTF的PHP代码中很常见看到这个函数就该想到文件包含利用php伪协议。
使用php://filter用于读取源码
比如我们尝试读取这道题目 ssrf_fgc.php 的内容 构造payload
/vul/ssrf/ssrf_fgc.php?filephp://filter/readconvert.base64-encode/resourcessrf_fgc.php
回显base64编码 解码即可得到php文件的源代码内容 想第一题那样读取etc下的passwd
用file协议同样可以读取成功
构造payload
/vul/ssrf/ssrf_fgc.php?filephp://filter/readconvert.base64-encode/resource/etc/passwd
发现也是可行的 同理解base64即可得到相关内容 CTF的赛题中有时候会对编码进行限制过滤可以换用其他编码格式比如
/vul/ssrf/ssrf_fgc.php?filephp://filter//convert.iconv.SJIS*.UCS-4*/resource/etc/passwd 尝试使用伪协议php://input执行php代码但是没有成功。