CTFHUB-技能树-Web-SSRF(上)
SSRF(服务端请求伪造)
形成原因:由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发送请求,并返回对该目标地址请求的数据
在PHP中:某些函数的不当使用会导致SSRF:如file_get_conntents()、fsockopen()、curl_exec()
file_get_conntents():把文件写入字符串,当url是内网文件时,会先把这个文件的内容读出来再写入,导致了文件读取
fsockopen():实现获取用户指定url的数据(文件或者html),这个函数会使用socket跟服务器建立tcp连接,传输原始数据
curl_exec:通过file、dict、gopher三个协议来进行渗透
危害:获取web应用可达服务器服务的banner信息,以及收集内网web应用的指纹识别,根据这些信息再进行进一步的渗透
攻击运行在内网的系统或应用程序,获取内网系统弱口令进行内网漫游,对有漏洞的内网web应用实施攻击获取webshell
利用由脆弱性的组件结合ftp://、file://、dict://等协议实施攻击
漏洞发生点:
通过url地址分享网页内容
文件处理、编码处理、转码等服务
在线翻译
通过url地址加载与下载图片
图片、文章收藏功能
未公开的api实现及其他调用url的功能
网站邮箱收取其他邮箱邮件功能
从url关键字寻找:share,wap,url,link,src,source,target,u,3g,display,sourceURL,imageURL,domain等
这一部分关于
内网访问
伪协议读取文件
端口扫描
内网访问
根据提示
构造:
得到flag
伪协议读取文件
提示
file伪协议上一篇讲过了用法,此题运用file协议读取
构造:
端口扫描
提示
这题运用了dict协议
dict协议运用:
curl:一种命令行工具,作用是发出网络请求,获取数据
curl -v ‘dict://ip:端口’:显示HTTP通信的整个过程,包括端口连接和HTTP request头信息
dict协议是一个字典服务器协议,通常用于让客户端使用过程中能够访问更多的字典源,在SSRF中如果可以使用此协议,就可以轻易获取目标服务器端口上运行的服务版本等信息(远程利用)
用bp的intruder模块进行测试
①
②
③start attack
扫描出8237端口,注意这里每个人测出来的端口会不同,最后构造payload访问得到flag