请求伪造漏洞:SSRF(服务器端请求伪造)、CSRF(跨站请求伪造)
一、SSRF漏洞概念:
攻击者构造形成由服务器端发起请求的一个安全漏洞,攻击目标是从外网无法访问的内部系统,可以对内外网或者本地进行端口扫描,某些情况下端口的Banner会回显出来(比如3306),使用file:///协议读取本地文件。
首先,我们要对目标网站的架构了解,脑子了要有一个架构图。比如 : A网站,是一个所有人都可以访问的外网网站,B网站是一个他们内部的OA网站,我们普通用户只可以访问a网站,不能访问b网站。但是我们可以同过a网站做中间人,访问b网站,从而达到攻击b网站需求
二、SSRF漏洞出现原因:
很多web都会提供从其他服务器上获取数据的功能,使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等,这个功能如果被恶意使用,可以利用存在去缺陷的web应用作为代理攻击远程和本地的服务器。当攻击者提供的是一个企业私网ip时,服务器可能会访问对应网址把结果返回。
如果应用程序对用户提供的URL和远端服务器返回的信息没有进行合适的验证和过滤,就可能存在服务器请求伪造的缺陷。攻击者利用SSRF可以实现的攻击主要为绕过网络限制攻击企业内网
SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的资源。
三、攻击方式
信息收集:可对内外,本地端口进行扫描,获取一些服务的banner信息
信息收集:对内网web应用进行指纹识别,通过访问默认文件实现
执行指令:攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts,sql等)
执行指令(溢出):攻击运行在内网或本地的应用程序(比如溢出)
信息收集:利用file协议读取本地文件等。
四、SSRF漏洞监测方法
PHP:检测是否有file_get_contens()、fsockopen()、curl_exec()这三个函数使用不当会造成SSRF漏洞
JSP:以下集中引用不当会造成SSRF,需要进行检测Request类,URL类的openStream,HttpClient类,URLConnection和HttpURLConnection类,
五、SSRF漏洞检测方法
(一)绕过方法(需要检测)
(二)添加端口号,短网址绕过,指向任意IP的域名xip.io;ip限制绕过;
10.0.0.1.xip.io resolves to 10.0.0.1
www.10.0.01.xip.io resolves to 10.0.0.1
mysite.10.0.0.1.xip.io resolves to 10.0.0.1
(三) 十进制转换,八进制转换,十六进制转换,不同进制组合转换;
对于这种过滤我们可以采用改编IP的写法的方式进行绕过,例如192.168.0.1这个IP地址我们可以改写成:
(1)、8进制格式:0300.0250.0.1 64*3.64*2+8*5.0.1
(2)、16进制格式:0xC0.0xA8.0.1
(3)、10进制整数格式:3232235521
(4)、16进制整数格式:0xC0A80001
还有一种特殊的省略模式,例如10.0.0.1这个IP可以写成10.1
(四)协议限制绕过,比如:在某些情况下,后端程序可能会对访问的URL进行解析,对解析出来的host地址进行过滤。这时候可能会出现对URL参数解析不当,导致可以绕过过滤。
http://[email protected]/
当后端程序通过不正确的正则表达式(比如将http之后到com为止的字符内容,也就是www.oldboyedu.com,认为是访问请求的host地址时)对上述URL的内容进行解析的时候,很有可能会认为访问URL的host为www.oldboyedu.com,而实际上这个URL所请求的内容都是192.168.0.1上的内容。
六、SSRF漏洞修复方法
过滤返回信息,验证远程服务器对请求的响应是比较容易的方法
如果web应用是获取某一种类的文件,那么把返回结果展示给用户之前先验证返回的信息是否符合标准。限制请求的端口为常用HTTP端口,比如80,443、8080、8090,黑名单内网IP,避免应用被用来获取内网数据,攻击内网。
禁用不需要的协议,仅仅允许http和https请求。
七、SSRF的防御方法(黑名单)
(1)过滤10.0.0.0/8 、172.16.0.0/12、192.168.0.0/16、localhost私有地址、IPv6地址
(2)过滤file:///、dict://、gopher://、ftp:// 危险schema
(3)对返回的内容进行识别
(4)内网服务开启鉴权(Memcached, Redis, Elasticsearch and MongoDB)
最佳防护:
(1)使用地址白名单
(2)对返回内容进行识别
(3)需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:首先禁用 CURLOPT_FOLLOWLOCATION;然后通过域名获取目标ip,并过滤内部ip;最后识别返回的内容是否与假定内容一致
标签:请求,SSRF,0.1,URL,漏洞,服务器,伪造 From: https://www.cnblogs.com/zwj611/p/17414378.html