SSRF-服务端请求伪造
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
网站访问步骤
用户在地址栏输入网址>>>向目标网站发送请求>>>目标网站接受请求并在服务器端验证请求是否合法,然后返回用户所需要的页面>>>用户接收页面并在浏览器中显示。此处的请求默认为www.xxx.com/a.php?image=(地址)
形成原因
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
产生SSRF漏洞的环节在于 “目标网站接受请求后在服务器端验证请求是否合法” 服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,导致可以从其他服务器的获取一定量的数据
通俗的将就是攻击者要求服务器访问URL
SSRF能做什么?
1、扫描内部网络{FingerPrint}
2、向内部任意主机的任意端口发送精心构造的数据包{Payload}
3、DOS(请求大文件,始终保持连接Keep-Alive Always)
4、暴力穷举(users/dirs/files)
实战靶场
提示信息告诉我们,该URL访问的是一个xmlrpc服务,但该服务只接受post请求,通过百度知道这是一个CMS,去网上查了一下这个CMS默认开启XMLRPC。
XML-RPC是一个远程过程调用(远端程序呼叫)(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送机制。
这个XMLRPC中存在一个叫做Pingback协议(Pingback,通知网志系统文章被引用情况的一种手段),POC如下:
<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<string>http://127.0.0.1:88</string>
</params>
</methodCall>
把这段poc加到下面,修改为post传参
我们对端口进行**
发现88端口长度与其他端口不一样,然后提示给出88端口是内网12388的映射端口。于是访问12388端口。
上一篇: Oracle注入-报错注入
下一篇: sql注入-盲注