WordPress CSRF漏洞利用草案状态

Dav*_*d.J 9 php security wordpress csrf csrf-protection

在创建新的帖子草稿时,如何最好地保护WP免受CSRF攻击?

如果我添加新帖子并保存为草稿,我可以使用Burp Suite拦截请求.

使用Burp Suite中的参与工具,我可以更改帖子标题的值并将URL粘贴回浏览器,浏览器会创建一个带有更改的帖子标题的草稿.

我怎样才能抵御这个?

干杯

t.m*_*dam 6

WordPress已经通过使用随机数提供了CSRF保护机制.创建新帖子时,会创建一个新的唯一nonce.此随机数是必需的,必须与其余的POST数据一起提交,以便将帖子保存为草稿或发布.如果nonce不存在或无效,则拒绝该请求.(使用Wordpress v4.9.8测试)

在您的测试中,您可以修改草稿,因为您使用Burp提交了正确的nonce,但在CSRF攻击中,此值将是未知的.Burp是一个拦截代理,因此您实际上对自己的HTTP流量执行了MITM攻击.如果你担心MITM攻击,你应该使用HTTPS.当然,攻击者仍然可以拦截您的网络流量,但所有数据都会被加密.

所以,我不会说这是一个CSRF漏洞,而是一个MITM漏洞.您可以通过更新WordPress版本,插件和更新来保护您的WordPress安装免受大多数公共攻击,还可以在https://wordpress.org/plugins/tags/security/中找到许多与安全相关的插件.

我认为在WordPress上进行安全测试的最佳工具是WPScan.它有一个庞大的漏洞数据库,它可以检测可能的漏洞并枚举用户,版本和插件.WPScan主要是一个侦察工具,但我们可以测试报告的漏洞利用的是与Metasploit的或Wpxf,一个鲜为人知但功能强大的工具,专业WordPress的开发.请注意,这些工具只能检测和利用公共漏洞.如果您想发现新的漏洞,那么您可以使用Burp或类似的扫描仪并研究WordPress源代码.

如果我误解了这个问题,并且你有一个没有nonce的表单(假设你正在编写一个插件),你可以添加一个nonce,wp_nonce_field然后在接收表单的脚本中验证它wp_verify_nonce.但是,如果您的WordPress安装不使用带有表单的随机数,则不应尝试手动添加随机数,而应更新为较新版本.

  • WordPress nonces 不会立即过期,而是通过两个生命周期阶段推进,并绑定到单个表单操作。任何被拦截的随机数都可以用来完成对其绑定到的同一个表单操作的多次调用,前提是它的生命周期步骤没有同时解决。这意味着,如果没有明确地使它们过期,拦截器可以不受阻碍地获得至少一次对同一表单操作的调用,并且如果生成随机数的源没有使它们过期(大量插件不这样做),则可以多次调用同一表单操作't,即使它们是最新的)。 (2认同)