
CSRF漏洞解释,原理
CSRF(Cross-site request forgery)
跨站请求伪造,由客户端发起,是一种劫持受信任用户向服务器发送非预期请求的攻击方式,与XSS类似,但比XSS更难防范,常与XSS一块儿配合攻击

原理详解
攻击者盗用了你的身份信息,以你的名义发送恶意请求,对服务器来讲这个请求是你发起的,却完成了攻击者所指望的一个操做
XSS 利用站点内内的信任用户,盗取cookie
CSRF经过假装成受信任用户请求受信任的网站
利用目标用户的合法身份,以目标的名义执行某些非法参数
利用条件:已经登陆系统,用户访问URL 已存在的网站中让用户跳转
CSRF漏洞检测,案例,防护
防护方案
1.当用户发送重要的请求时输入验证码
2.涉及随机TOKEN ---数据包的惟一值
3.检测referer来源,请求时判断请求链接是否为当前管理员正在使用的页面(管理员在编辑文章,黑客发来恶意的修改密码连接,由于修改密码页面管理员并无在操做,因此攻击失败)
4.设置验证码
5.限制请求方式只能为post0
SSRF(服务器端请求伪造)
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造造成由服务端发起请求的一个安全漏洞。通常状况下,SSRF攻击的目标是从外网没法访问的内部系统。(正是由于
它是由服务端发起的,因此它可以请求到与它相连而与外网隔离的内部系统)
SSRF 造成的缘由大都是因为服务端提供了从其余服务器应用获取数据的功能且没有对目标地址作过滤与限制。好比从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
注释:除了http/https等方式能够形成ssrf,相似tcp connect 方式也能够探测内网一些ip 的端口是否开发服务,只不过危害比较小而已。
0x01 可能出现的地方
1.社交分享功能:获取超连接的标题等内容进行显示
2.转码服务:经过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3.在线翻译:给网址翻译对应网页的内容
4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;经过URL地址加载或下载图片
5.图片/文章收藏功能:主要其会取URL地址中title以及文本的内容做为显示以求一个好的用具体验
6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,因此若是能够捕获相应的信息,就能够进行ssrf测试
7.网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工做
8.数据库内置功能:数据库的好比mongodb的copyDatabase函数
9.邮件系统:好比接收邮件服务器地址
10.编码处理, 属性信息处理,文件处理:好比ffpmg,ImageMagick,docx,pdf,xml处理器等
11.未公开的api实现以及其余扩展调用URL的功能:能够利用google 语法加上这些关键字去寻找SSRF漏洞
一些的url中的关键字:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain……
12.从远程服务器请求资源(upload from url 如discuz!;import & expost rss feed 如web blog;使用了xml引擎对象的地方 如wordpress xmlrpc.php)
0x02 漏洞验证
1.排除法:浏览器f12查看源代码看是不是在本地进行了请求
好比:该资源地址类型为 http://www.xxx.com/a.php?image=(地址)的就可能存在SSRF漏洞
2.dnslog等工具进行测试,看是否被访问
--能够在盲打后台用例中将当前准备请求的uri 和参数编码成base64,这样盲打后台解码后就知道是哪台机器哪一个cgi触发的请求。
3.抓包分析发送的请求是否是由服务器的发送的,若是不是客户端发出的请求,则有多是,接着找存在HTTP服务的内网地址
--从漏洞平台中的历史漏洞寻找泄漏的存在web应用内网地址
--经过二级域名暴力猜解工具模糊猜想内网地址
4.直接返回的Banner、title、content等信息
5.留意bool型SSRF
0x03 利用方式
1.让服务端去访问相应的网址
2.让服务端去访问本身所处内网的一些指纹文件来判断是否存在相应的cms
3.可使用file、dict、gopher[11]、ftp协议进行请求访问相应的文件
4.攻击内网web应用(能够向内部任意主机的任意端口发送精心构造的数据包{payload})
5.攻击内网应用程序(利用跨协议通讯技术)
6.判断内网主机是否存活:方法是访问看是否有端口开放
7.DoS攻击(请求大文件,始终保持链接keep-alive always)
0x04 绕太小技巧
注:参考[8]会有更详细的绕过方式总结
1.http://baidu.com@www.baidu.com/与http://www.baidu.com/请求时是相同的
2.各类IP地址的进制转换
3.URL跳转绕过:http://www.hackersb.cn/redirect.php?url=http://192.168.0.1/
4.短网址绕过 http://t.cn/RwbLKDx
5.xip.io来绕过:http://xxx.192.168.0.1.xip.io/ == 192.168.0.1 (xxx 任意)
指向任意ip的域名:xip.io(37signals开发实现的定制DNS服务)
6.限制了子网段,能够加 :80 端口绕过。http://tieba.baidu.com/f/commit/share/openShareApi?url=http://10.42.7.78:80
7.探测内网域名,或者将本身的域名解析到内网ip
8.例如 http://10.153.138.81/ts.php , 修复时容易出现的获取host时以/分割来肯定host,
但这样能够用 http://abc@10.153.138.81/ 绕过
0x05 漏洞示例
1.Wordpress3.5.1如下版本 xmlrpc.php pingback的缺陷与ssrf
2.discuz!的ssrf (利用php的header函数来绕过,其实就是302跳转实现协议转换)
3.weblogic的ssrf
0x06 漏洞修复
1.禁止跳转
2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。若是web应用是去获取某一种类型的文件。那么在把返回结果展现给用户以前先验证返回的信息是否符合标准。
3.禁用不须要的协议,仅仅容许http和https请求。能够防止相似于file://, gopher://, ftp:// 等引发的问题
4.设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP)
5.限制请求的端口为http经常使用的端口,好比 80、44三、8080、8090
6.统一错误信息,避免用户能够根据错误信息来判断远端服务器的端口状态。
0x07 漏洞利用中牵涉的小技巧
crontab -l 显示当前计划任务
crontab -r 清除当前计划任务
端口转发工具 socat
在Apache配置文件中写入下面的内容,就能够将jpg文件当作PHP文件来执行
AddType application/x-httpd-php