这篇总结还是比较偏理论了,都比较基础,但是的话,不管笔试还是面试hr都会有可能问道,比如SSRF和CSRF中英文全称,我小厂笔试遇到了。
等我总结完常见top10的理论,后面会通过实战挖洞的经历,不管挖到没挖到都会进行思路的复盘
什么是ssrf?
SSRF(Server-Side Request Forgery:服务器端请求伪造)
其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制
导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
数据流:攻击者----->服务器---->目标地址
通俗点讲就是攻击者通过已沦陷的服务器作为跳板来对目标发起攻击
SSRF有哪些危害?
扫内网
向内部任意主机的任意端口发送精心构造的Payload
DOS攻击(请求大文件,始终保持连接Keep-Alive Always)
攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如struts2,sqli等)
利用file协议读取本地文件等
怎样防范ssrf?
1、过滤返回的信息
2、自定义端口的错误页面,避免被区分
3、限制端口请求
4、限制协议等
5、URL白名单访问资源
修复方案:
• 限制协议为HTTP、HTTPS
• 不用限制302重定向
• 设置URL白名单或者限制内网IP
讲讲ssrf绕过呢?
@符号绕过:
http://www.xxx.com@www.kxsy.work/
IP地址转换:
对内网请求的IP地址进行各进制的编码例如:120.26.86.156
二进制 = 1111000000110100101011010011100
十六进制 = 0x781A569C
十进制 = 2014992028
转换短网址:
https://www.985.so/
例:http://www.kxsy.work/ = http://u6.gg/ks69x
特殊符号替换绕过:
例:
http://www.kxsy.work/ = http://www。kxsy。work/
localhost或者0.0.0.0
xip.io绕过:会将解析到子域
http://10.0.0.1.xip.io = 10.0.0.1
www.10.0.0.1.xip.io= 10.0.0.1
http://mysite.10.0.0.1.xip.io = 10.0.0.1
foo.http://bar.10.0.0.1.xip.io = 10.0.0.1
10.0.0.1.xip.name resolves to 10.0.0.1
www.10.0.0.2.xip.name resolves to 10.0.0.2
foo.10.0.0.3.xip.name resolves to 10.0.0.3
bar.baz.10.0.0.4.xip.name resolves to 10.0.0.4
其他协议绕过 :
配合File、GOPHER协议等协议的对目标进行信息探测
PHP中导致ssrf的危险函数有哪些?
file_get_contents()
fsockopen()
curl_exec()