课程前言
白帽子黑客攻防系列课程第二季现已上线。
本课程仅做学习交流之用,切勿用于任何不法用途!
白帽子黑客攻防系列课程将会深入浅出讲解计算机网络基础、渗透靶场搭建、Kali Linux、系统漏洞、渗透工具(Nmap、Sqlmap、AWVS等)等的原理及实战内容。
第二季主要讲解DVWA黑客攻防演练等,配合讲解网络基础知识及Linux基础知识等。
知其然并知其所以然,相信通过学习,各位朋友对白帽子黑客攻防会有非常深刻理解。
梦想还是要有的,万一实现了呢!
网易云课堂地址:https://study.163.com/course/courseMain.htm?courseId=1209505841&share=2&shareId=480000001946405
本篇博文为CSRF要点笔记,主要介绍黑客攻防中的CSRF技术。
CSRF概述
CSRF(Cross-site request forgery跨站请求伪造,也被称为“oneclick attack”或者session riding),通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。
WebA是存在CSRF漏洞的网站,WebB是攻击者构建的恶意网站.UserC是WebA网站的合法用户。 首先用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A; 其次在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A, 再然后用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B; 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;浏览器在接收到这些攻击性代码后;根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
初级原理及实操
修改密码后看地址栏
http://192.168.199.217/dvwa/vulnerabilities/csrf/?password_new=a&password_conf=a&Change=Change# http://192.168.199.217/dvwa/vulnerabilities/csrf/?password_new=ab&password_conf=ab&Change=Change#
中级原理及实操
view source
stripos() 函数
查找 "php" 在字符串中第一次出现的位置(不区分大小写)
<?php echo stripos("You love php, I love php too!","PHP"); ?>
stripos( $_SERVER[ 'HTTP_REFERER' ] ,$_SERVER[ 'SERVER_NAME' ]) !== false )
查看$_SERVER[ 'HTTP_REFERER' ] 、$_SERVER[ 'SERVER_NAME' ]
思路:伪造HTTP_REFERER
如今网络上十分流行论坛自动发帖机,自动顶贴机等,给众多论坛网站带来了大量的垃圾信息,许多网站只是简单地采用了判断HTTP_REFERER的值来进行过滤机器发帖,可是网页的HTTP_REFERER来路信息是可以被伪造的。任何事物都是双面刃,只要你善于利用就有其存在价值。 虚拟机xp2(192.168.199.226)下:192.168.199.217.php
高级原理及实操
view source
加入了Anti-CSRF token机制,用户每次访问改密页面时,服务器会返回一个随机的token,向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。
涉及跨域问题,而现在的浏览器是不允许跨域请求的。两者的域名不同,域名B下的所有页面都不允许主动获取域名A下的页面内容,除非域名A下的页面主动发送信息给域名B的页面,所以我们的攻击脚本是不可能取到改密界面中的user_token。
由于跨域是不能实现的,所以我们要将攻击代码注入到目标服务器中,才有可能完成攻击。所以单纯从CSRF未能突破High级别。
神仙级原理
view source
利用PDO技术防御SQL注入,至于防护CSRF,则要求用户输入原始密码(简单粗暴),攻击者在不知道原始密码的情况下,无论如何都无法进行CSRF攻击。
总结
请求中放入攻击者不能伪造的信息。