深圳龙华汽车站附近有做网站建设的,甘肃网站建设推广服务,西安高校定制网站建设,apple 官网网站模板csrf(跨站请求伪造)的原理:
csrf全称是跨站请求伪造(cross-site request forgery)#xff0c;也被称为one-click attack 或者 session riding scrf攻击利用网站对于用户网页浏览器的信任#xff0c;劫持用户当前已登录的web应用程序#xff0c;去执行分用户本意的操作。 利…csrf(跨站请求伪造)的原理:
csrf全称是跨站请求伪造(cross-site request forgery)也被称为one-click attack 或者 session riding scrf攻击利用网站对于用户网页浏览器的信任劫持用户当前已登录的web应用程序去执行分用户本意的操作。 利用站点对已经完成的身份认证的信任
在目标没有断开连接的时候还存在登陆状态然后攻击者利用钓鱼连接引用目标去点击具有csrf攻击的链接从而在目标原本登陆的网站上面通过csrf中的攻击的代码执行某些非法程序 逻辑漏洞就是对方对于数据的请求没有进一步验证是否合法性。 跨站点请求:请求来源可以是非本站 请求是伪造的:请求发出不是用户的本意
利用csrf攻击的常见场景:
修改用户账号密码修改某个账号已经关联的email、手机号码、收货地址、网银(转账请求)、投票、媒体社交关注(非法金融推广)在用户非资源不知情的情况下提交了请求。
CSRF能够做的事情:以目标用户的名义发送邮件发消息盗取目标用户的账号购买物品虚拟货币转账。 CSRF攻击过程有2个重点: 1.目标用户已经登陆了网站能够执行网站的功能 2.目标用户访问了攻击者构造的url
csrf漏洞属于业务逻辑型漏洞漏洞的出现主要原因是在于服务器端 1.服务器对于用户提交觉得数据缺少了确认机制和二次认证 2.漏洞扫描程序无法识别此类漏洞
如何去确认一个web系统是否存在CSRF漏洞?
1.对目标网站增删改查的地方进行标记并观察逻辑判断请求是否是可以被伪造比如修改管理员账号并不需要验证旧密码导致请求容易被伪造比如对于敏感信息的修改并没有使用安全的token认证导致请求容易被伪造。 2.确认凭证有效期(这个问题会提高CSRF被利用的概率)虽然已经退出或者关闭了浏览器但是cookie仍然有效或者session并没有及时过期导致CSRF攻击变得简单。
CSRF攻击分类:
站外和站内两种 站外:外部提交数据问题(GET、POST) 站内:程序员滥用_REQUEST类变量造成的
csrf和xss的区别:
XSS是窃取你的Cookie得到用户的权限CSRF利用你的COOKIE但是并没有拿到你的COOKIEscrf借用用户的权限来完成攻击由于完成csrf攻击需要具备条件比较多所以很多时候csrf被视为安全级别较低的漏洞。
CSRF常见的3种方式:
1.图片攻击
img srchttp://xxxx.com/bank/transfer.php?nameid200balance1000width0 height02.超链接
a hrefhttp://xxxx.com/bank/transfer.php?amount1000tojianggangtagetblank点这里/a3.构建自动提交的表单构建自动提交表单(隐藏)用户访问发送post请求
form actionhttp://xxx.com/withdraw methodPOST
input typehiddennameaccount valuexiaoming /
input typehidden nameamount value1000 /
input typedidden nameto valuejianggang /
/form
scriptdocument.forms[0].submit();/scriptCSRF的防御:
1.检查HTTP Referer是否是同源/同域 TCP包头中存在来源地址如果IP地址一样则成为同源地址 2.限制session cookie 生命周期减少被攻击的概率 3.使用验证码 4.使用一次性token
CSRF漏洞检测
最简单最有效的方法就是抓取一个正常请求的数据包去掉referer字段后再重新提交如果该提交还有效那么基本可以确定存在CSRF的漏洞
if(empty($_SESSION[token]))
1、当用户使用用户名密码登陆的时候服务器随机下发token字段并且把这个字段保存在服务器的session中。
2、客户端吧这个token保存起来放到隐藏字段。
3、用户在登陆的状况下在之后访问的时候需要携带这个token字段。
4、服务器从session中拿出token值进行比较如果一致就是合法的
5、用户退出session销毁token失效。
token值可以拿到需要别的漏洞拿到token结合xss漏洞拿到token最安全的方法就是修改用户密码前让用户输入当前的密码再比如使用验证码。CSRF中的POST请求:
受害者需要登录账号密码
通过抓包来确定HTTP请求中的POST主题内容包含什么
攻击者通过构造恶意的站点将POST主题内容编写为恶意的站点中的表单然后诱骗受害者进行点击当用户点击后发出表单数据自然就POST到存在CSRF漏洞的网站用户的信息则被恶意修改。CSRF漏洞之token:
token验证原理:csrf主要问题是敏感操作时候链接容易被伪造每次其你去都会增加一个随机码(需要够随机不容易被伪造)后台每次对随机码进行验证页面接收从后台发送过来的token将其一并提交给后台验证每次刷新token都不一样就是起到了防止伪造。
ssrf(服务器端请求伪造)漏洞:
由攻击者构造形成的有服务器发起的安全漏洞 一般情况下SSRF攻击的目标是从外网无法访问的内部系统 (server-side requert forgery)是一种由攻击者构造形成由服务器端引起请求的一个安全漏洞一般情况下ssrf攻击的目标是从外网无法访问的内部系统ssrf形成的原因大都是由于服务器端提供了从其他服务器应用获取数据的功能并且没有对目标地址做过滤与限制比如从指定的URL地址获取网页文本内容加载指定地址的图片下载等等。 一般客户端直接访问不了内网资源的但是服务端是可以访问内网资源的要是服务端存在SSRF漏洞的话客户端就可以利用SSRF漏洞访问内网资源。 一般情况下SSRF的目标就是与外部隔离的内网资源。
SSRF实现攻击主要有5种方式
1.对外网服务器所在的内网本地进行端口扫描获取banner信息。 2.测试运行在内网或者本地的应用程序 3.对内网web应用记性指纹识别识别企业内部的资产信息 4.攻击内外网的web应用主要是使用http get请求就可以实现攻击(比如:struts2sqli) 5.利用file协议读取本地文件等。
常用的探测协议:
1.http:主要用来发送http协议获取超文本内容包括文字图片、视频、音频等常用的互联网资源 2.file:本地文件传输协议file协议主要是用于访问本地计算机文件就如同在windows资源管理器中打开文件一样。 3.dict:dict协议字典服务器协议dict基于查询响应的TCP协议它的目标是超越webster protocol并且允许客户端在使用的过程中访问更多字典dict服务器和客户机使用TCP端口2628;主要是用来探测内网端口协议 4.ftp:应用层的文件传输协议基于TCP协议的应用层协议用于在网络上传输文件 5.Gopher:是互联网上面使用的分布型文件收集获取网络协议gopher协议在http协议出现之前在internet上面常见的重用协议。但是现在很少用了
产生在哪些方面?(SSRF漏洞常见的出现位置)
1.分享通过URL地址分享网页内容 2.转码服务通过URL地址吧源地址网页内容调优使其适合及屏幕浏览 3.在线翻译通过URL地址翻译对应文本内容 4.图片加载与下载:通过URL地址加载或者下载图片 5.图片、文章收藏功能 6.未公开的api实现以及其他调用URL的功能 7.从url的关键字中寻找 share、wap、url、link、src、source、target 、u、3g、display、sourceURL、imageURL、domain
SSRF的防御方法:
1.统一错误信息避免用户根据错误信息来判断远程服务器的端口状态。 2.限制请求的端口为HTTP常用端口比如80,443,8080等 3.禁用不需要的协议仅仅允许http和https 4.根据请求需求可以将特定的域名加入白名单拒绝白名单之外的请求 5.后端代码对请求来源进行验证.
正常用户访问网站的流程:
1.输入A网站的URL 2.发送请求 3.A服务器接受请求(没有过滤)并且处理 4.返回用户响应 网站有个请求是www.yunanedu.com/xxx.php?imageURL 安全的网站接收到请求后检测请求的合法性。 产生漏洞的原因:服务器验证并没有对其请求获取图片的参数image作出严格的过滤以及限制导致A网站可以从其他的服务器获取数据 www.yunandui.com/xxx.php?imagewww.baidu.com/i.jpg 如果我们吧imagewww.baidu.com/i.jpg,换成服务器相连的内网服务器地址会产生什么效果呢如果存在该内网地址则会返回1xx,2xx之类的状态码不存在就会显示其他状态码。
SSRF漏洞就是通过篡改资源的请求发送给服务器但是服务器并没有检测到这个请求的合法性然后服务器以它的身份来访问其他的服务器资源。
SSRF常用的绕过方式:
1.更改IP地址的写法:将IP进行进制编码 2.利用解析URL所出现的问题:网址IP在某些情况下后端程序可能会对访问的URL进行解析对解析出来的host地址进行过滤这时候可能会出现对URL参数解析不当导致可以绕过过滤 3.利用302跳转 4.通过非HTTP协议通过等价的协议进行绕过 5.DNS 6.利用IPV6 7.利用IDN 8.短链接
更改IP地址的写法: 正则表达式
^10(\.([2][0-4]\d[2][5][0-5]|[01]?\d?\d)){3}$
^172\.([1][6-9]|[2]\d|3[01])(\.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){2}$
^192\.168(\.([2][0-4]\d[2][5][0-5]|[01]?\d?\d)){2}$对于这种过滤的方法我们采用改变IP的写法方式进行绕过例如192.168.0.1这个IP地址我们已经改成 1.8进制格式:0300.0250.0.1 2.十六进制:0xC0.0xA8 3.十进制整数格式:3232235521 4.十六进制整数格式:0xC0A80001 特殊省略模式例如10.0.0.1这个IP可以写成 10.1
利用解析URL所出现的问题 访问服务器服务器对访问的URL进行解析对解析出来的HOST地址进行过滤可能会出现URL参数解析不当的情况导致可以绕过过滤。 http://www.yunanedu.com192.168.0.1/ 分析: 服务器通过不正确的正则表达式认为是访问请求的主机地址而对这个URL的内容进行解析的时候会被认为www.yunanedu.com为HOST主机地址而实际这个URL所请求的内容都是192.168.0.1服务器上面的内容
SSRF常用后端实现:
SSRF攻击可能存在任何语言编写的应用通过PHP实现的代码来做样例分析代码的大部分来自真实的应用源码。 1.file_get_contents:(将整个文件读入到一个字符串中) 这段代码使用file_get_contents(0函数从用户指定的URL获取图片然后把它用一个随机文件名保存在硬盘上并展示给用户。 file_get_contents()调用外部物文件容易超时报错curl效率比file_get_contents()和fsockopen()高一些原因是curl会自动对DNS信息进行缓存。 2.fsockopen():(打开网络的socket链接)
?php
function GetFile($host,$port,$link)
{
$fp fsockopen($host, intval($port), $errno, $errstr, 30);
if (!$fp) {
echo $errstr (error number $errno) \n;
} else {
$out GET $link HTTP/1.1\r\n;
$out . Host: $host\r\n;
$out . Connection: Close\r\n\r\n;
$out . \r\n;
fwrite($fp, $out);
$contents;
while (!feof($fp)) {
$contents. fgets($fp, 1024);
}
fclose($fp);
return $contents;
}
}
?这段代码使用了fsockopen()函数实现了获取用户指定url的数据(文件或者html)函数是用来socker跟服务器建立TCP链接传输原始的数据。 fsockopen()是比较底层的调用属于网络系统sockert调用 3.curl_exec():(执行一定的curl会话)
?php
if (isset($_POST[url])){$link $_POST[url];$curlobj curl_init();curl_setopt($curlobj, CURLOPT_POST, 0);curl_setopt($curlobj,CURLOPT_URL,$link);curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);$resultcurl_exec($curlobj);curl_close($curlobj);$filename ./curled/.rand()..txt;file_put_contents($filename, $result); echo $result;}?curl经过包装支持HTTPS认证HTTP POST方法HTTP PUT方法FTP上传berberos认证HTTP上传代理服务器cookie用户名\密码下载文件断点续传上传文件断电速传http代理服务器管道(porxy tunneling)甚至它还支持IPV6
socks5代理服务器通过http代理服务器上传文件到ftp服务器功能很强大。
文件包含漏洞 php://filter/读取php源代码。
结语:
对CSRF和SSRF做了一些简单介绍以及绕过,希望对各位师傅有帮助,供各位师傅们一起交流学习!!