论坛首页 Web安全讨论区 阅读主题

[原创]dwva靶场-- csrf

80 浏览 0 回复
#1 楼主 2026-06-01 21:09:07
csrf攻击的核心是:攻击者诱导已登录用户在不知情的情况下,向目标网站发送一个恶意请求,利用用户当前cookie执行非预期的操作(如修改密码、转账等)。当目标网站仅依赖 cookie验证身份,而未对请求的来源或内容做额外校验时,即存在csrf漏洞。 无额外验证修改密码后发现通过get传参2ebK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5J5y4#2)9J5k6e0m8Q4x3X3f1H3i4K6u0W2x3g2)9J5c8Y4k6#2L8r3&6W2M7X3q4T1K9h3I4A6N6r3W2W2M7#2)9J5c8X3y4K6M7X3k6Q4x3V1k6Q4x3@1k6H3j5i4y4K6N6$3!0J5k6q4)9#2k6X3&6W2N6#2)9K6c8o6p5I4x3e0p5I4x3g2)9J5y4X3q4E0M7q4)9K6b7Y4m8S2M7%4y4%4L8%4u0V1i4K6g2X3j5$3!0F1k6W2)9K6c8o6p5I4x3e0p5I4x3g2)9J5y4X3q4E0M7q4)9K6b7V1y4Z5j5h3&6Y4k6g2)9K6c8p5y4Z5j5h3&6Y4k6g2)9J5x3H3`.`.打开同一浏览器下的新标签页,访问702K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5J5y4#2)9J5k6e0m8Q4x3X3f1H3i4K6u0W2x3g2)9J5c8Y4k6#2L8r3&6W2M7X3q4T1K9h3I4A6N6r3W2W2M7#2)9J5c8X3y4K6M7X3k6Q4x3V1k6Q4x3@1k6H3j5i4y4K6N6$3!0J5k6q4)9#2k6X3&6W2N6#2)9K6c8o6t1J5x3U0t1J5x3W2)9J5y4X3q4E0M7q4)9K6b7Y4m8S2M7%4y4%4L8%4u0V1i4K6g2X3j5$3!0F1k6W2)9K6c8o6t1J5x3U0t1J5x3W2)9J5y4X3q4E0M7q4)9K6b7V1y4Z5j5h3&6Y4k6g2)9K6c8p5y4Z5j5h3&6Y4k6g2)9J5x3H3`.`.密码已经被修改为222222 如果有referer做校验,如 要求请求的 Referer 头必须包含服务器主机名,也就是包含127.0.0.1就行了,其他的协议类型啊,端口,路径一概不管但一般情况下我们很难对referer头进行修改,常见做法为将恶意html文件上传到dvwa服务器(如通过文件上传漏洞),然后让受害者访问该页面。 生成恶意文件1.html<a href="115K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5J5y4#2)9J5k6e0m8Q4x3X3f1H3i4K6u0W2x3g2)9J5c8Y4k6#2L8r3&6W2M7X3q4T1K9h3I4A6N6r3W2W2M7#2)9J5c8X3y4K6M7X3k6Q4x3V1k6Q4x3@1k6H3j5i4y4K6N6$3!0J5k6q4)9#2k6X3&6W2N6#2)9K6c8o6p5J5x3K6b7#2y4W2)9J5y4X3q4E0M7q4)9K6b7Y4m8S2M7%4y4%4L8%4u0V1i4K6g2X3j5$3!0F1k6R3`.`. =123456&Change=Change#">click</a>将1.html放到/var/www/html/vulnerabilities/csrf下打开同一浏览器下的新标签页,访问580K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5J5y4#2)9J5k6e0m8Q4x3X3f1H3i4K6u0W2x3g2)9J5c8Y4k6#2L8r3&6W2M7X3q4T1K9h3I4A6N6r3W2W2M7#2)9J5c8X3y4K6M7X3k6Q4x3V1j5`.1.html 点击后密码成功被修改为123456 如果加了token验证,如 如果存在xss漏洞,攻击者可以利用xss读取页面中的 token,然后构造请求(但 xss本身已是更严重的漏洞)假设我们利用其他漏洞拿到了token,构造恶意文件2.html(在1.html加上token值)<a  href="17aK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5J5y4#2)9J5k6e0m8Q4x3X3f1H3i4K6u0W2x3g2)9J5c8Y4k6#2L8r3&6W2M7X3q4T1K9h3I4A6N6r3W2W2M7#2)9J5c8X3y4K6M7X3k6Q4x3V1k6Q4x3@1k6H3j5i4y4K6N6$3!0J5k6q4)9#2k6X3&6W2N6#2)9K6c8s2m8S2M7%4y4Q4x3U0k6S2L8i4m8Q4x3@1u0H3j5i4y4K6N6$3!0J5k6q4)9#2k6X3y4G2L8X3k6Q4x3@1b7`.pass&Change=Change&user_token=b37dc5f9ee0365122d3b06b0cadc5bbd">click</a>打开同一浏览器下的新标签页,访问dcdK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5J5y4#2)9J5k6e0m8Q4x3X3f1H3i4K6u0W2x3g2)9J5c8Y4k6#2L8r3&6W2M7X3q4T1K9h3I4A6N6r3W2W2M7#2)9J5c8X3y4K6M7X3k6Q4x3V1j5`.2.html点击后密码成功被修改为pass impossible代码核心防护机制分析:验证当前密码(杀手锏)$pass_curr = $_GET[ 'password_current' ];// ... 处理密码 ...$data = $db->prepare( 'SELECT password FROM users WHERE user = (:user) AND password = (:password) LIMIT 1;' );// ...if( ( $pass_new == $pass_conf ) && ( $data->rowCount() == 1 ) )代码强制要求用户在修改密码前,必须输入正确的旧密码。服务器会将输入的旧密码进行 md5加密,并与数据库中的记录比对。为什么这能防住csrf?csrf的本质:攻击者利用受害者的登录状态(cookie),在受害者不知情的情况下发送请求。攻击者的困境:攻击者可以伪造修改密码的请求(比如把密码改成 hacked),但攻击者不知道受害者的旧密码是多少。结果:如果攻击者不填旧密码,或者填错,$data->rowCount() 就会是 0,导致验证失败,密码修改被拒绝。  


[培训]《冰与火的战歌:Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-290685.htm

暂无回复,快来抢沙发吧!

请登录后参与讨论

立即登录 注册账号