zoukankan      html  css  js  c++  java
  • python文件上传工具实现

    0x00

    之前验收waf模块webshell效果,组网pc--waf--webserver,收集网络上的webshell样本,进行上传测试。由于数量较多8000+个样本,

    只好写了个工具进行验收。

    webshell下载地址https://github.com/tennc/webshell.git

    0x01

    客户端实现

    使用python的requests_toolbelt 库进文件上传,这里有个坑,不能用requests库,requests上传文件只post一个数据包,在文件较大情况下,上传文件不全。

    # -*- coding: utf-8 -*-
    #@Time      :2018/7/14 9:39
    #@Author    :cui0x01
    #@file      :webshell_send.py
    
    
    from requests_toolbelt import MultipartEncoder
    import requests
    import time
    import os
    import sys
    import getopt
    
    global logdate
    logdate = time.strftime('%Y%m%d%H%M%S',time.localtime())
    def w_log(data):
        '''
    
        :return:
        '''
        if not os.path.exists('log'):
            os.mkdir('log')
        log_name=os.path.join('log',logdate)
        with open(log_name,'a+') as f:
            f.write(data)
    
    def send_url(url,folder):
        '''
    
        :return:
        '''
        abs_path = os.path.abspath(os.path.dirname(__file__))
        folder_path=os.path.join(abs_path,folder)
        try:
            file_list= os.listdir(folder_path)
        except BaseException as re:
            print('''
            %s is not exist, please check your folder.
            '''%folder)
            os._exit(0)
        for filename in file_list:
            #print(filename)
            #print(url)
            m = MultipartEncoder(
                fields={'uploaded': (filename, open(os.path.join(folder_path,filename), 'rb'), 'text/plain')}
            )
            '''
            Content-Disposition: form-data; name="uploaded"; filename="aa.php"
            这里的files里uploaded   就是multipart协议name字段里面的uploaded
            服务端也是根据isset( $_FILES[ 'uploaded' ],multipart协议name字段里面的uploaded接收文件。
            如果修改,要保持一致。
            '''
            #print(len(files))
            time.sleep(1)
            #file=os.path.join(folder_path,filename)
            #new_url=url+filename
            try:
                r = requests.post(url, data=m,headers={'Content-Type': m.content_type})
            except BaseException as re:
                print('waf reject: filename %s'%filename)
                data='waf reject: filename %s 
    '%filename
                w_log(data)
    
            else:
                print("waf allow: filename: %s"%filename)
                data="waf allow: filename: %s 
    "%filename
                w_log(data)
    
    
    
    if __name__ == "__main__":
    
        try:
            opts,args=getopt.getopt(sys.argv[1:],'u:f:')
            u=opts[0][1]
            f=opts[1][1]
            #print(u,f)
        except Exception as e:
            print('''
            ******************************************************************
            ex:python3 xx.py -u http://33.33.35.20/upload/upload.php -f white
            -u: target url                                                   
            -f: local folder                                                 
            ******************************************************************
            ''')
            os._exit(0)
        send_url(u,f)
    

     0x02

    服务端实现

    用php接收,环境xp+phpstudy

    <?php
    
    if( isset( $_FILES[ 'uploaded' ] ) ) {
    	
    	$target_path  = "uploads/".basename( $_FILES[ 'uploaded' ][ 'name' ] );
    
        if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
    
            echo '<pre>Your image was not uploaded.</pre>';
        }
        else {
    
            echo "<pre>{$target_path} succesfully uploaded!</pre>";
        }
    }
    
    ?> 
    

     0x03

    效果演示

    服务端

    客户端

    抓包查看

    文件上传成功

    下载地址:https://github.com/cui0x01/python_daily/tree/master/upload_fuzz_tool

  • 相关阅读:
    June 26th 2017 Week 26th Monday
    June 25th 2017 Week 26th Sunday
    June 24th 2017 Week 25th Saturday
    June 23rd 2017 Week 25th Friday
    June 22nd 2017 Week 25th Thursday
    2018最佳网页设计:就是要你灵感爆棚!!!
    图片素材类Web原型制作分享-Pexels
    想要打动HR的心,UX设计师求职信究竟应该怎么写?
    【UXPA大赛企业专访】Mockplus:“设计替代开发”将成为现实
    2018年最好的医疗网站设计及配色赏析
  • 原文地址:https://www.cnblogs.com/cui0x01/p/9462365.html
Copyright © 2011-2022 走看看