## **一、插件介绍**
是一个支持文章、页面和评论投票顶踩的插件,你可以将顶踩放在文章、页面评论的任意位置,还可以放在网站首页上。如果你有一定代码修改能里的话,可以将本插件集成到主题里。
## **二、漏洞概述**
Like Dislike Counter 1.2.3及其他版本存在多个SQL注入漏洞,成功利用后可使攻击者执行未授权数据库操作。
## **三、漏洞描述**
Like Dislike Counter 插件SQL注入漏洞存在于**ajax_counter.php**文件中,主要原因是未对POST数据中的**post_id**进行有效过滤,致使非法数据被数据库正常解析执行。
## **四、漏洞分析**
1、**ajax_counter.php**文件中,POST数据中的**post_id**未做任何过滤的情况下被带入到了 get_post_ul_meta() 函数中
```
$post_id=$_POST['post_id'];
$up_type=$_POST['up_type'];
if($up_type=='c_like'||$up_type=='c_dislike')
{
$for_com='c_';
}
else
{
$for_com='';
}
if(!in_array($for_com.$post_id,$posts_present))
{
update_post_ul_meta($post_id,$up_type);
}
echo get_post_ul_meta($post_id,$up_type);
```
2、get_post_ul_meta()函数位于ldclite-function.php文件中,传入进get_post_ul_meta()函数中$post_id在未做任何处理的情况下与SQL语句拼接,且无单引号保护,由此产生了SQL注入
```
function get_post_ul_meta($post_id,$up_type)
{
global $wpdb;
$table_name = $wpdb->prefix."like_dislike_counters";
// 1.2.3的修复前语句
$sql="select ul_value from $table_name where post_id=$post_id and ul_key='$up_type' ;";
// 1.2.3的修复后语句
//$sql = $wpdb->prepare( "select ul_value from $table_name where post_id = %d and ul_key = %s",$post_id, $up_type );
$to_ret=$wpdb->get_var($sql);
if(empty($to_ret))
{
$to_ret=0;
}
return $to_ret;
}
```
3、现在想找到Like Dislike Counter 1.2.3 修复前的代码真的很难了,我翻了好久才找到
![](https://images.seebug.org/contribute/8d24e61e-c3b7-40bf-8a79-44cce06b93e5-27.png)
## **四、漏洞利用**
1、此处为盲注,为了更好的做对比我使用了时间延时
未延时前:
![](https://images.seebug.org/contribute/0d34baae-d200-4dae-9d48-6966902449cd-4.png)
延时后:
![](https://images.seebug.org/contribute/a6b99f9b-058d-4f4d-9a1d-272564b00de7-3.png)
数据库监听:
![](https://images.seebug.org/contribute/19e6237f-9919-415b-89e6-ea3442e13004-5.png)
2、使用Sqlmap即可出数据
暂无评论