SSRF
简介
SSRF(Server-Side Request Forgery:服务器端请求伪造)
其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制
导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
数据流:攻击者—–>服务器—->目标地址
前置申明
本博客所有内容均为作者的个人学习笔记记录,作者也是小白一枚,如果有什么地方写的不对或者对您带来影响欢迎底部留言或者点击右下角的图标与我联系吧
本博客的所有Security 大类下的文章只能作为
如果喜欢我的文章欢迎各位大佬点击右下角的订阅图标开启浏览器推送吧,这样你只要不清除浏览器缓存就能第一时间收到我的更新通知啦(如果你的网络如果能上Google就用Chrome浏览器订阅,如果不能推荐用微软的Edge浏览器,目前正在寻找解决办法,订阅成功后会有一条提示成功,如果未收到表示网络限制原因未订阅成功)
中华人民共和国网络安全法(2017年6月1日起施行) 第二十二条任何个人和组织不得从事入侵他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供从事入侵网络、干扰网络正常功能、窃取网络数据等危害网络安全活动的工具和制作方法;不得为他人实施危害网络安全的活动提供技术支持、广告、推广、支付结算等帮助。 第三十八条任何个人和组织不得窃取或者以其他非法方式获取公民个人信息,不得出售或者非法向他人提供公民个人信息 第六十三条违反本法规定,给他人造成损害的,依法承担民事责任 第六十四条违反本法规定,构成犯罪的,依法追究刑事责任 中华人民共和国刑法(285286) 第二百八十五条违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的处三年以下有期徒刑或者拘役 第二百八十六条违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役:后果特别严重的,处五年以上有期徒刑。违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚 中华人民共和国刑法修正案7(第九条) 在刑法第二百八十五条中增加两款作为第二款、第三款:“违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金:情节特别严重的,处三年以上七年以下有期徒刑,并处罚金提供专门用于侵入、非法控制计算机信息系统的程序、或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严依照前款的规定处罚。
参考资料
SSRF
漏洞形成原因
SSRF( Server- Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。利用的是服务端的请求伪造。SSRF 是利用存在缺陷的web应用作为代理攻击远程和本地的服务器由外网攻击者利用SSRF漏洞攻击内网 也就是说服务器端的验证并没有对其请求如获取图片的参数( Image=)做出严格的过滤以及限制,从而导致A网站可以从其他服务器上获取数据
利用点
- 访问服务端敏感文件,造成数据泄露 (例如windows下路径写法:?url=file://c:\windows\system32\drivers\etc\hosts)
- 端口扫描 (例:?url=dict://127.0.0.1:3306)
- 应用指纹识别(例如:?url=http://localhost/phpmyadmin/readme)
- 内网攻击WEB,获取Shell(例如:?url=xxx)
SSRF 挖掘方法
- 分享:通过URL地址分享网页内容
- 转码服务
- 在线翻译
- 图片加载与下载:通过URL地址加载或下载图片
- 图片、文章收藏功能
- 未公开的api实现以及其他调用URL的功能
- 从URL关键字中寻找
复现
SSRF(curl)
指向其它目标
1 | http://192.168.151.8/pkc/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pkc/vul/ssrf/ssrf_info/info1.php |
端口扫描
1 | http://192.168.151.8/pkc/vul/ssrf/ssrf_curl.php?url=http://192.168.151.8:3306 |
访问服务端敏感文件
1 | http://192.168.151.8/pkc/vul/ssrf/ssrf_curl.php?url=file://c:\\windows\\system32\\drivers\\etc\\hosts |
SSRF(file_get_content)
1 | #读取info2.php文件 |
总结
ssrf、文件包含、csrf对比
- ssrf和文件包含区别:SSRF—和远程文件包含的区别在于远程文件包含多是包含攻击者的主机文件,SSRF是内网主机的文件
- ssrf和csr区别:CSRF是跨站请求伪造攻击,由客户端发起 SSRF是服务器端请求伪造,由服务器发起
SSRF 防护
- 黑名单过滤: 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、localhost私有地址、iPv6地址
- 黑名单过滤: fle:///、dict://、 gopher://、ftp:∥ 危险schema
- 使用地址白名单
- 内网服务开启鉴权: Memcached,Reds, Elasticsearch and MongoDB
- 对回显内容进行识别,采取限制措施
- 需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:首先禁用 CURLOPT_FOLLOWLOCATION;然后通过域名获取目标ip,并过滤内部ip;最后识别返回的内容是否与假定内容一致