(4) 第四步:分析全局变量
固然下面这段代码对于我们仁攀类来说可以随便马虎看懂,然则对于SAST对象来说分析起来可就异常复杂了。它须要经由过程多个函数调用来分析全局数组$loginizer的数据流,只有如许它才能够检测到lz_getip()函数传递给loginizer_can_login()函数(为对SQL语句中的拼接内容进行数据过滤)的用户输入信息。个中的SQL语句是经由过程自定义的SQL函数lz_selectquery()实现的,固然WordPress可以经由过程模仿magic_quotes来防止注入,然则来自HTTP头中的恶意用户输入数据并不会受此影响。
modules/Emails/DetailView.php
- function loginizer_wp_authenticate($user, $username, $password) {
- global $loginizer, $lz_error, $lz_cannot_login, $lz_user_pass;
- if(loginizer_can_login()) {
- return $user;
- }
- }
- function loginizer_can_login() {
- global $wpdb, $loginizer, $lz_error;
- $result = lz_selectquery("SELECT * FROM ".$wpdb->prefix."loginizer_logs
- WHERE ip = '".$loginizer['current_ip']."';");
- }
因为RIPS的分析算法重要针对的是PHP说话,是以它对WordPress的分析会比较到位,是以它可以或许辨认出WordPress复杂的数据流,并成功检测出插件中的SQL注入马脚。
2. Ultimate Form Builder Lite 1.3.6-SQL注入马脚(CVE-2017-15919)
Ultimate Form Builder插件今朝的安装量已经跨越了5万,它许可我们应用拖拽的情势来创建接洽表单。在本年十月份,研究人员在该插件中发明并申报了一个严重的SQL注入马脚,而该马脚将许可进击者接收目标WordPress网站。
接下来,我们会分析代码中存在的问题,以及SAST对象若何才能检测到这个安然马脚。
起首,插件要履行的所有SQL语句都须要被分析,固然WordPress数据库驱动跟插件代码无关,但它所应用的办法(例如get_rwo())是可以被RIPS引擎识其余(搜刮潜在的SQL注入马脚)。
modules/Emails/DetailView.php
在这里,引擎可以分析SQL语句以辨认注情面况。一般来说,这种处所的安然马脚是很难被发明的。如不雅它攫取的是form_id=’$form_id’而不是form_id=$form_id,那么这条语句就没有安然问题了,因为WordPress可以对用户的输入进行甄别。是以,只有那些高低文情况敏感的SAST对象才能够感知到这种隐蔽的安然问题。
(2) 第二步:跟踪用户输入数据流
这一步相对来说比较简答,你可以大年夜鄙人面的代码中看到,如不雅对象无法分析到$form_id的潜在隐患,那么受污染的数据将有可能扩散到其他功能函数中。
modules/Emails/DetailView.php
- class UFBL_Lib {
- public static function do_form_process() {
- $form_data = array();
- foreach ( $_POST['form_data'] as $val ) {
- if ( strpos( $val['name'], '[]' ) !== false ) {
- $form_data_name = str_WordStr( '[]', '', $val['name'] );
- if ( !isset( $form_data[$form_data_name] ) ) {
- $form_data[$form_data_name] = array();
- }
- $form_data[$form_data_name][] = $val['value'];
- } else {
推荐阅读
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散今朝为止,仅在一个网站上发明这种挖矿脚本 今朝安然研究人员发明一种隐蔽在网站中的新型挖矿脚本。这个脚本应用一个渺小窗口隐蔽在>>>详细阅读
地址:http://www.17bianji.com/lsqh/39543.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示