最近一直都在学习有关代码的课程,之前报了前端开发课程也一直落下了没时间学习,不过作为安全人员,不断的学习才能攻破强有力的壁垒,于是,在学习开发的同时,也在学习代码审计,以下就是在学习之初的安全漏洞复现,写的不好还请各位大佬们见谅。piwigo是一个简单的类似于QQ空间的相册管理程序,在2.7.1版本(版本较老)中存在SQL注入漏洞:
1、漏洞入口文件在include \functions_rate.inc.php中:

2、通过入口文件中可观察到,在以下代码处:
if (!isset($rate) or !$conf['rate'] or !in_array($rate, $conf['rate_items'])) { //漏洞点出现在in_array函数
return false;
}
3、在config_default.inc.php文件中对文件在指定的数组里面做了匹配;

其中in_array函数格式如:in_array(search,array,type),在$conf['rate_items']数组中搜索$rate,如果找到返回true,否则返回false;函数还有第三个参数,如果设置为true,则表示检查搜索的数据与数组的值的类型是否相同;
4、在picture.php中通过switch case语句匹配了$rate变量

5、漏洞利用
构造参数: sqlmap -u "http://localhost:8088/picture.php?/1/category/1&action=rate" --data "rate=1" --dbs --batch
注:这里由于环境问题,没搭建起来,注入点是在rate评论区,因此没有截图(敬请谅解哈)。
总结,通过以上代码可以看出,其主要发生漏洞的位置就在于in_array这个函数里面。其修复的方案如下:1)通过传入第三个参数进行严格校验;2)通过正则表达式对SQL语句进行过滤;