XWiki提供了保障安全的一些功能而某些功能还存在安全隐患。
Admin用户的默认密码为admin。请确保您更改密码。
您还可以删除Admin用户,但首先你需要确保它不是任何页面的author,因为它可能会产生的问题 (一些标准页面需要它的author有足够的权限).
XWiki提供了一个超级管理员帐户。它是特殊的,因为:
因为超级管理员帐户是如此强大,所以不建议长期启动这个账号
默认情况下,该帐户被禁用。要启用它,你必须编辑<xwiki-dir>/WEB-INF/xwiki.cfg,取消对#xwiki.superadminpassword=system的注释,并设置了正确的密码。要禁用它,只要注释此行即可。记住修改xwiki.cfg之后需要重新启动servlet容器。
某些情况下,超级管理员帐户是可以被启动,举例来说,如果当你忘记您的管理员用户密码、搞乱了一些权限,或者不小心删除了管理员用户。
默认情况下XWiki(和大多数web项目一样)用户登录后会在Cookie里保存信息。这些可以是被攻击者利用。
当用户登录时,cookies在他的机器上保存用户名,密码和一个“nothing up my sleeve”散列值。cookies是被加密的,使得没有人对它访问能看到用户名/密码。加密是根据用位于xwiki.cfg(位于WEB-INF下面)配置文件的2个配置参数。 编辑xwiki.cfg文件,修改Cookie身份验证和加密密钥的默认值,因为这些预定义的值可以被攻击者利用来破译用户名和密码,这一点很重要。为了防止这种情况,请更改以下2配置参数:
在未来的版本中,我们希望在安装xwiki时产生随机以及和主机相关的密钥对
即使密码不能从cookie提取,但是cookie还是可能被窃取(XSS攻击) 通过设置xwiki.cfg参数xwiki.authentication.useip为true可以被用来阻止窃取cookie,因为设置为只有相同的IP地址的才能获取。
默认情况下,XWiki Enterprise的版本会显示在每一页的页脚。这本身不是有害的,但对于攻击者,可以通过此信息获得相应版本的已知的漏洞
您可以使用Administration Application(后台管理应用程序)来修改页脚显示版本的字符串。点击Presentaton图标,在更改版本字段中修改。
如果你想确保版本信息不会泄露在任何地方,你可以通过WEB-INF/version.properties替换version内容:version=your version string here
完美的安全性通常被认为是不可能的。通过简单的静态HTML,我们实现可以近乎完美的安全性,但这些都不是非常有用的。本文讨论了不同的威胁模型,以及如何对付每一个。这些攻击是由访问类型分组。比较危险的攻击请从头开始看,最常见的攻击危险性较低(和更容易执行)的请直接看底部。
在操作系统中这种攻击的特征很大程度上超出了本文档的范围,因为这是操作系统的责任防止用户提升权限。
不是一个非常常见的攻击方法。
这种攻击的特征是攻击者利用Java执行任意代码,可能使用Java级别的安全漏洞来执行本地代码(Native Code)从而获得在Java虚拟机进程的用户级访问。
这种攻击发生在一些不安全脚本,利用数据库抛出报错信息。
错误:
#set(x = xwiki.searchDocuments("where doc.fullName = '
如果用户输入: ' or doc.hidden = 1 or doc.fullName = ' 你的代码将执行Hibernate查询: where doc.fullName = '' or doc.hidden = 1 or doc.fullName = ''.
上面例子可能不会导致一个可怕的后果,但攻击者一定可以拼接出更为危险的注入。 幸运的是Hibernate本身防止最严重的注入如:
Embarrassing Mistake'); DROP TABLE xwikidoc;--
这是因为hibernate一次不允许多个命令,不允许--注释语法
正确:
## We are passing a ? in the query and then passing the parameter as a list (Velocity notation for list is [element, element] )#set(x = xwiki.searchDocuments("where doc.fullName = ?", [
使用named parameter方式进行参数绑定。以名为userContent参数,传递到数据库。上述注入将无法正常工作。
欲了解更多信息,请查看XWiki API。
跨站脚本攻击或者XSS是所有攻击方法里危害最小的,但是也是最常见的。 XSS可以导致网站挂马或者盗取用户cookie。XSS也可以利用Web浏览器和插件,如PDF或ActiveX。这类漏洞往往安装恶意软件。
Persistent injection(存储型XSS)的特征在于内容保存在系统中,当用户不知情下加载,在浏览器执行如JavaScript。这是比较危险的种类,因为它坐落在一个页面等待受害者。
可能/已知问题
缓解方法
Reflective injection(反射型XSS)特征是通过诱使用户点击特制链接,该链接会导致页面生成JavaScript。
缓解方法
管理员可以使用一些插件,如noscript,能检测反射注入攻击,当检测到XSS攻击时提醒用户不要点击可疑链接。
错误:
<input type=text value="$request.get('name')" />
正确:
<input type=text value="
跨站请求伪造是一个外部网站制作一个恶意链接或表单指向你的系统中的一些操作比如保存文章,当一个登录过你的系统的用户点击后会导致进行这个操作,既保存了文章。
目前还没有实现以防止表单提交外部网站系统。请参阅有关实现secret tokens的邮件列表的讨论。
管理员可以使用一些插件,如noscript ,能防止攻击的网站自动提交表单到你的系统。