用户
搜索
  • TA的每日心情
    慵懒
    2018-10-16 17:43
  • 签到天数: 113 天

    连续签到: 2 天

    [LV.6]常住居民II

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    12

    主题

    220

    帖子

    1139

    魔法币
    收听
    0
    粉丝
    2
    注册时间
    2015-11-20

    i春秋签约作者

    发表于 2018-11-8 22:41:59 997466
    本帖最后由 小猪 于 2018-11-11 17:55 编辑

    0x00 看我是如何利用骚姿势偷偷的在后台一顿乱爬

    程序下载地址:https://pan.baidu.com/s/1KFWo0mUHmV-QWwZJjiV46Q
    版本:V5.1.18030300
    简介:看我怎么利用嘿嘿嘿技术在里面乱走

    0x01 程序安装到复现

    1.第一步安装系统

    2.第二步安装结束选择前台

    3.第四步到注册页面

    4.然后我们去产品页

    5.购买一个产品

    6.这时候要输入收货地址,我们填入一个xss地址


    游客,如果您要查看本帖隐藏内容请回复

    游客,如果您要查看本帖隐藏内容请回复

    5.那么在后台我们就可以看到这个订单

    6.然后我们点击订单详情,F12查看下

    7.最后我们去管理员那边查看下,是否添加管理员

    这样就完美的去弄了一个管理员账户,token对我来说都没有用。
    [color=#b22222]##0x02 代码审计[/color]

    漏洞所在文件:[color=#008000]\espcms_web\Order.php(生成订单)[/color]

    漏洞文件代码:(只贴上相关代码)

    ![color=#0000ff][/color]

    第187行,[color=#008000]global $espcms_web_templates, $espcms_command;[/color],[color=#008000]global[/color]代表全局变量获取,也可以说设置。

    第188行,[color=#008000]$member_app_config = ESPCMS_Core::get_app_config('member', false);[/color],这里一看大概意思是获取配置。我们追下这个函数。

    路径:[color=#008000]\espcms_public\ESPCMS_Core.php[/color]

    ![color=#0000ff][/color]

    第128行,[color=#008000]global $espcms_db_cache;[/color],,[color=#008000]global[/color]代表全局变量获取,也可以说设置。

    第129行,[color=#008000]if (!$app_code)[/color],判断外部传入的是否为空。

    第132行,[color=#008000]$db_table = ESPCMS_DB_PREFIX . 'apply';[/color],定义数据库表名。

    第133行,[color=#008000]$db_where = " WHERE applycode = '$app_code'";[/color],定义查询条件语句。

    第134行,[color=#008000]$talbe_field_array = espcms_field_out($db_table);[/color],大致意思是查询这个表是否存在。

    第135行,[color=#008000]$cache_key = ESPCMS_CACHE_DBREAD_NAME . $db_table . '_' . $app_code;[/color],这里定义一个key值到缓存查看。

    第136行,[color=#008000]$read = $espcms_db_cache->cacheCheck($cache_key, false);[/color],查看数据缓存是否存在。

    第137行,[color=#008000]if (!$read)[/color],判断是否存在。

    第138行,[color=#008000]$read = espcms_db_read($db_table, $db_where, $talbe_field_array);[/color],读取数据。

    第139行,[color=#008000]$espcms_db_cache->cacheSave($cache_key, $read);[/color],修改数据。

    第141行,[color=#008000]if ($isunser)[/color],判断外部传入是否是[color=#008000]false[/color]。

    第142行,[color=#008000]$read['appconfig'] = unserialize($read['appconfig']);[/color],反序列化配置。

    第144行,[color=#008000]return !$return_key ? $read : $read[$return_key];[/color],返回结果。

    我们回到第一张图片。

    第189行,[color=#008000]if (!is_token($_POST['tokenname'], $_POST['tokenkey']))[/color],判断token是否正确。

    第190行,[color=#008000]ESPCMS_Dialog::Message_Page('repeat_inut', OrderLink::get_order_link('list'));[/color],这里代表提示层并跳转到指定页面。

    第192行,[color=#008000]if ($member_app_config['isetup'] && $member_app_config['isopen'])[/color],判断[color=#008000]config[/color]中的[color=#008000]isetup[/color]值是否存在并且判断[color=#008000]isopen[/color]值是否存在。

    第193行,[color=#008000]if (static::$order_con['ORDER_ISMEMBER'])[/color],判断是否有订单功能。

    第194行,[color=#008000]ESPCMS_MemberAuthority::authorityWebVerify(false, $member_app_config['appconfig'], OrderLink::get_order_link('list'));[/color]代表WEB授权。

    第196行,[color=#008000]$member_cookie_info = ESPCMS_MemberAuthority::getMemberInfo();[/color],获取用户身份信息。

    第197行,[color=#008000]$member_read = ESPCMS_MemberDB::get_member_view($member_cookie_info['userid']);[/color],获取用户个人详细信息。

    第199-218行,这里都是接收[color=#008000]POST[/color]参数。

    第219行,[color=#008000]if (!espcms_ismoney($_POST['productmoney']) || !espcms_isemail($_POST['email']))[/color],判断[color=#008000]productmoney[/color]是的是浮点数或者正数,或者判断[color=#008000]email[/color]是否是邮件格式。

    第220行,[color=#008000]ESPCMS_Dialog::Message_Page('input_err', OrderLink::get_order_link('list'));[/color],这里代表提示层并跳转到指定页面。

    第222行,[color=#008000]unset($_POST['opid'], $_POST['paytime'], $_POST['updatetime'], $_POST['shippingtime'], $_POST['shippingsn'], $_POST['paysn'], $_POST['country'], $_POST['treatnote']);[/color],[color=#008000]unset[/color]代表删除变量。

    第223行,[color=#008000]$shippingmoney = ESPCMS_OrderDB::get_express_view($_POST['osid'], 'price');[/color],获取订单金额。

    第224行,[color=#008000]$_POST['shippingmoney'] = $shippingmoney && espcms_ismoney($shippingmoney) ? $shippingmoney : 0;[/color],判断是否存在,并且判断是否是浮点数或者正数。

    第226行,[color=#008000]$coupon_app_config = ESPCMS_Core::get_app_config('coupon', false);[/color],获取配置信息。

    第227行,[color=#008000]if (static::$order_con['ORDER_ISMEMBER'] && $member_app_config['isetup'] && $member_app_config['isopen'] && $coupon_app_config['isetup'] && $coupon_app_config['isopen'] && $_POST['ocdsn'])[/color],判断订单并且判断[color=#008000]config[/color]中的[color=#008000]isetup[/color]值是否存在并且判断[color=#008000]isopen[/color]值是否存在。

    第228行,[color=#008000]$discount = ESPCMS_CouponDB::CheckCoupon($_POST['userid'], $_POST['products_id'], $_POST['products_tid'], $_POST['ocdsn'], $_POST['productmoney'])[/color],这里去查询折扣卷。

    第229行,[color=#008000]$_POST['discount'] = espcms_ismoney($discount) ? $discount : 0;[/color],判断是不是浮点数或者正数。

    第230行,[color=#008000]$coupon_isuser = $discount > 0 ? true : false;[/color],判断折扣段是否大于0,如果大于0那么就返回true,否在返回false。

    第235行,[color=#008000]$orderamount = $_POST['shippingmoney'] + $_POST['productmoney'];[/color],两个值相加得到得到订单金额。

    第236行,[color=#008000]$_POST['invoicefeemoney'] = $_POST['isinvoice'] && static::$order_con['ORDER_INVOICE_FEE'] && espcms_ismatches(static::$order_con['ORDER_INVOICE_FEE']) ? (static::$order_con['ORDER_INVOICE_FEE'] / 100) * $orderamount : 0;[/color],这里代表发票费用。

    第237-241行,这里都是接收[color=#008000]POST[/color]参数。

    第242行,[color=#008000]$db_table = ESPCMS_DB_PREFIX . "order";[/color],定义表名。

    第243行,[color=#008000]$talbe_field_array = espcms_field_out($db_table, true);[/color],判断当前表是否存在。

    第244行,[color=#008000]$postvalue = espcms_post($_POST, $talbe_field_array, true);[/color],这里第一个参数接收外部[color=#008000]POST[/color],第二个参数是243行返回出来的字段。

    第245行,[color=#008000]if (!$postvalue || !is_array($postvalue))[/color],判断244行是否存在,并且判断是否是数组。

    第246行,[color=#008000]ESPCMS_Dialog::Message_Page('dba_read_err', OrderLink::get_order_link('list'));[/color],这里代表提示层并跳转到指定页面。

    第248行,[color=#008000]$install_id = espcms_db_install_save($db_table, $postvalue);[/color],这里就是插入数据库。

    第249行,[color=#008000]if (!$install_id)[/color],如果创建失败则跳转到提示层并且跳转到指定页面。

    第253行,[color=#008000]ESPCMS_CouponDB::update_coupon_list_isuser($install_id, $_POST['userid'], false, $_POST['ocdsn']);[/color],这里代表修改折扣卷。

    那么身下基本就是支付流程了,也没有什么好分析的了。


    评分

    参与人数 1魔法币 +5 收起 理由
    zzconfig + 5

    查看全部评分

    发表于 2018-11-9 09:52:38
    bigin 发表于 2018-11-9 09:31
    这特么不是XSS+CSRF吗,怎么就成了爬虫

    他后台无敌多表单验证  普通xss玩不转的  而且里面有一点比较恶心就是  他会记录IP
    使用道具 举报 回复
    发表于 2018-11-9 10:15:09
    初来乍到01 发表于 2018-11-9 10:11
    说的那么高大上,进来一看是xss跟csrf的完美结合

    你可以自己搭建下试下,自己写下csrf来日后台  普通的日不过后台的
    使用道具 举报 回复
    小猪 发表于 2018-11-9 10:15
    你可以自己搭建下试下,自己写下csrf来日后台  普通的日不过后台的

    好的,有空试一下
    使用道具 举报 回复
                         
    1
    使用道具 举报 回复
    发表于 2018-11-9 09:24:06
    VGodkey 发表于 2018-11-9 00:10
    网盘传错啦,,网盘的是phpok

    已经修复
    使用道具 举报 回复
    说的那么高大上,进来一看是xss跟csrf的完美结合
    使用道具 举报 回复
    看我是如何利用骚姿势偷偷的在后台一顿乱爬
    使用道具 举报 回复
    看我是如何利用骚姿势偷偷的在后台一顿乱爬
    使用道具 举报 回复
    好好学习天天向上
    http://www.cnblogs.com/fox-yu/
    使用道具 举报 回复
    学习小洲老师嘿嘿技术
    使用道具 举报 回复
    大佬大佬真骚
    喜荣华正好,恨无常又到
    使用道具 举报 回复
    发表于 2018-11-8 23:36:59
    吃瓜观众,,
    使用道具 举报 回复
    发表于 2018-11-8 23:37:16
    666666666666666666
    使用道具 举报 回复
    发表于 2018-11-9 00:10:01
    网盘传错啦,,网盘的是phpok
    使用道具 举报 回复
    发表于 2018-11-9 02:05:14
    66666666666666666666
    使用道具 举报 回复
    发表于 2018-11-9 08:55:24
    6666666看一看
    使用道具 举报 回复
    发表于 2018-11-9 09:31:03
    这特么不是XSS+CSRF吗,怎么就成了爬虫
    使用道具 举报 回复
    发表于 2018-11-9 09:42:22
    666666666666
    本屌技术渣,Q1322856336,欢迎各位表哥们指点交流~
    使用道具 举报 回复
    发表于 2018-11-9 09:52:10
    稳的,看看隐藏内容
    使用道具 举报 回复
    发表于 2018-11-9 09:55:47
    少时诵诗书
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册