#知识点: 逻辑漏洞
1、CSRF-原理&危害&探针&利用等
2、SSRF-原理&危害&探针&利用等
3、CSRF&SSRF-黑盒下漏洞探针点
#详细点:
CSRF 全称:Cross-site request forgery,即,跨站请求伪造,也被称为 “One
Click Attack” 或 “Session Riding”,通常缩写为 CSRF 或者 XSRF,是一种对网
站的恶意利用。举个生活中的例子:就是某个人点了个奇怪的链接,自己什么也没输,但
自己的 qq 号或其他的号就被盗了。即该攻击可以在受害者不知情的情况下以受害者名义
伪造请求,执行恶意操作,具有很大的危害性。
CSRF 的攻击过程两个条件:
1、目标用户已经登录了网站,能够执行网站的功能。
2、目标用户访问了攻击者构造的 URL。
CSRF 安全问题黑盒怎么判断:
- 看验证来源不-修复 ——同源策略
Referer:检测同源,但不是绝对的安全,此头部可以被抓取修改的
2.看凭据有无 token--修复
Token:一种标识,每操作一次,都会进行更改
3、看关键操作有无验证-修复
-CSRF 安全问题白盒怎么审计:
同黑盒思路一样,代码中分析上述三看
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形
成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问
的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离
的内部系统)SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功
能且没有对目标地址做过滤与限制。比如从指定 URL 地址获取网页文本内容,加载指定
地址的图片,下载等等。
-SSRF 黑盒可能出现的地方:
这些是都会向服务器去请求我们所发送的信息,若配置不当,我们输入了访问它自身的地址,则会回显出它自身的情况
1.社交分享功能:获取超链接的标题等内容进行显示
2.转码服务:通过 URL 地址把原地址的网页内容调优使其适合手机屏幕浏览
3.在线翻译:给网址翻译对应网页的内容
4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过 URL 地址加载或下
载图片
5.图片/文章收藏功能:主要其会取 URL 地址中 title 以及文本的内容作为显示以求一
个好的用具体验
6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的
信息,就可以进行 ssrf 测试
- 网站采集,网站抓取的地方:一些网站会针对你输入的 url 进行一些信息采集工作
- 数据库内置功能:数据库的比如mongodb的copyDatabase函数
9邮件系统:比如接收邮件服务器地址
10.编码处理,属性信息处理,文件处理:比如ffpmg,ImageMagick, docx, pdf, xml处理器等
11.未公开的api实现以及其他扩展调用URL的功能:可以利用google 语法(inurl:)加上这些关键字去寻找SSRF漏洞一些的url中的关键字: share. wap、 url、 link. src、 source. target. U、3g、 display、sourceURI、imageURL. domain..
12从远程服务器请求资源(upload from url如discuz! ; import & expost rss feed如weDblog;使用了xml引擎对象的地方如wordpress xmlrpc.php)
-SSRF白盒可能出现的地方:
1、功能点抓包指向代码块审计
2、功能点函数定位代码块审计
-SSRF常见安全修复防御方案:
1.禁用跳转
2、禁用不需要的协议
3、固定或限制资源地址
4、错误信局统一信息处理
#系列内容点:
1、 CSRF&SSRF&原理&利用&协议等
2、 CSRF&SSRF&黑盒&审计&修复等
代码审计-CSRF-SCMSFH 无验证
Ø 代码审计-CSRF-ZBLOG 同源策略
Ø 代码审计-SSRF-Yzmcms 功能&函数
CSRF代码审计的思路:
- 直接复现有没有:
没有-》代码-》缺陷过滤(绕过)-》有
没有-》代码-》完整过滤-》没有漏洞
漏洞本身不在于代码上,更多的在于逻辑上
#代码审计-CSRF-SCMSFH 无验证
抓包,通过数据包分析,设置伪造页面。通过上传外网,让user进行访问
成功
代码分析:
首先通过数据包分析查找php文件
发现代码中,没有进行验证
#代码审计-CSRF-ZBLOG 同源策略
发现不成功,则有防护了
代码审计:
判断出检测点:referer
通过对比 $referer值
尝试绕过
抓取伪造的网页,进行referer参数修改
来源检测:
- 直接伪造:
需要在代码数据包文件固定来源
- 自主抓包修改参数;
- 写入脚本,强制固定参数;
做一个xx.php的文件用来测试referer
<?php
$xx=$_SERVER['HTTP_REFERER'];
echo $xx;
?>
用python去构造固定referer
import requestsurl='http://127.0.0.1/xx.php'headers={'Referer': 'http://127.0.0.1/'
}data=requests.get(url,headers=headers)
print(data.text)
2.尝试在网站寻找可上传地方,上传数据包文件,取得当前同域名的地址
如:向网站中上传html文件(伪造网站),此时在访问此伪造网站时,来源是其本地
#代码审计-SSRF-Yzmcms 功能&函数
采集功能:访问指定的地址
Ssrf.html
读到了本地的文件,说明可以利用一些协议去访问本地的信息
代码审计:
通过抓包分析关键文件
找到对应配置参数
关键函数
SSRF:
关键函数和特定功能
白盒:
功能点-采集 审计
采集添加-测试-抓包-代码-远程请求资源操作(函数)
函数-功能 审计
file_get_contents
Fopen