码迷,mamicode.com
首页 > 其他好文 > 详细

代码审计-Beescms_V4.0

时间:2019-06-26 00:56:03      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:绕过   item   内容   替换   功能   post   代码审计   str   code   

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

 

 上面是网上原文的payload,不过我在源码中没有发现有显示位,也就是没有把select查询出来的内容取出来,所以这里不是union联合注入的情况。

 

 

 

 

今天困了 明一早起来写完 

 

代码审计-Beescms_V4.0

标签:绕过   item   内容   替换   功能   post   代码审计   str   code   

原文地址:https://www.cnblogs.com/-qing-/p/11087333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!