我应该使用RIPS工具来测试我的主题和插件吗?

时间:2017-02-14 作者:prosti

我听说了OWASP, 在那里,我找到了PHP脚本扫描器的参考,名为RIPS.

我应该每天使用它来测试我的WordPress插件和主题吗

1 个回复
SO网友:prosti

是的,是的,RIPS 是一个很好的工具,可以同时做到这两个方面。

您可以使用它来检查WordPress主题和插件或任何其他WordPress主题和插件的质量。

RIPS是一种静态代码分析工具,用于自动检测PHP应用程序中的漏洞。通过对所有源代码文件进行标记和解析,RIPS能够将PHP源代码转换为程序模型,并检测程序流期间可能受到用户输入(受恶意用户影响)污染的敏感接收器(潜在易受攻击的函数)。除了发现的漏洞的结构化输出之外,RIPS还提供了一个集成的代码审计框架,用于进一步的手动分析。

下面是它的工作原理。

文件操作

这种用法并不明智,RIPS将检测可能的流

$h = fopen( $_GET[\'file\'],  \'w\' );  
fwrite( $h,  $_GET[\'data\'] );  
您不能信任来自请求的数据。

文件泄漏

当您编写这样的代码时,RIPS会指出这是错误的样式:

echo file_get_contents( \'files/\' . $_GET[\'file\'] );  
您不能信任来自请求的数据。类似于include:

include( \'includes/\' . $_GET[\'file\'] );

Cross-Site Scripting

RIPS了解您的WordPress主题或插件可能具有的XSS流,并会就此向您发出警告。

echo ( \'Hello \' . $_GET[\'name\'] );  
当有人创建这样的请求时:

/url?name=<script>alert(1)</script>
您需要对请求数据进行编码,因为在这种情况下,如果请求数据是原始的,您就不能信任它。

Response splitting

header( \'Location: \' . $_GET[\'url\'] );
因为PHP允许您使用header() 您无法信任该请求,因为有人可能会添加Set-Cookie: 或内部类似。RIPS会帮你检查这个。

Fixed sessions

如OWASP中所述,可以通过以下方式强制会话setcookie()

setcookie( \'PHPSESSID\', $_GET[\'sessid\'] );
就像在这里

/url?sessid=1f3870be274f6c49b3e31a0c6728957f\' 
好消息是RIPS可以理解这一点,并会更新您的信息。

Code injection

eval( \'\\$color = \\\' . $_GET[\'color\'] . \'\\\';\' );
您不应该信任请求数据。

\'poc\' => \'/index.php?color=\\\';phpinfo();//\',
或者对它的一个修改叫做reflection injection

call_user_func( $_GET[\'func\'] );
就像在这里:

/url?func=phpinfo\'
类似于exec()

 exec( \'./crypto -mode \' . $_GET[\'mode\'] );
RIPS会让您知道这些可能的问题。

SQL injection

任何听说过WordPress安全的人都听说过SQL注入概念。

mysql_query( \'SELECT * FROM users WHERE id = \' . $_GET[\'id\'] );
如果我们添加

/url?id=1 OR 1=1-- -\',
撕裂会让你觉得自己像这里的老安全极客。

有更多的安全检查RIPS 我在这里没有提到你能做什么。Download 然后开始检查WordPress主题和插件。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。