给个关注?宝儿!
给个关注?宝儿!
给个关注?宝儿!
复习一下ssrf的原理及危害,并且以weblog的ssrf漏洞为案例
漏洞原理
SSRF(Server-side Request Forge, 服务端请求伪造)
通常用于控制web进而探测内网服务以及攻击内网脆弱应用
即当作跳板机,可作为ssrfsocks代理
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
通俗的说,比如这样一个url:,如果我们将换为与该服务器相连的内网服务器地址会产生什么效果呢?比如127.0.0.1、10.0.0.1、192.168.1.1等等,如果存在该内网地址就会返回1xx 2xx 之类的状态码,不存在就会返回其他的状态码,所以:如果应用程序对用户提供的URL和远端服务器返回的信息没有进行合适的验证和过滤,就可能存在这种服务端请求伪造的缺陷。
漏洞产生
由于服务端提供了从其他服务器应用获取数据的功能且没有对地址和协议等做过滤和限制。
漏洞信息:
CVE-2014-4210,
版本:10.0.2,10.3.6,12.1.1,12.1.2.0.0
复现过程
访问 http://218.244.139.43:7001/uddiexplorer/ 无需登录即可查看uddiexplorer应用。
SSRF漏洞存在于http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp
我们在brupsuite下测试该漏洞。访问一个可以访问的IP:PORT,如http://127.0.0.1:7001
抓包:观察发现operator参数,传递了一个URL,服务器回去访问这个url,可以思考它是否可以去访问内网主机,是否有SSRF漏洞
测试在访问不用的URL和端口时,返回的结果是否相同:
访问url和7001端口:返回一个404 状态码
访问一个不存在的端口:
根据报错的不同,可以进行内网探测,首先需要知道他的内网网段、
docker内网网段为172.18.0.xxx
简单脚本(Python2)(以知道网段为前提)
import thread
import time
import re
import requests
def