Varavarana kely ao amin'ny Flask na ny fomba hifehezana solosaina amin'ny tambajotra eo an-toerana

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:

  1. Mahaiza manokatra tranonkala
  2. Manana fidirana andalana baiko
  3. 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

Add a comment