Hey Habr!
D’fhéach mé le déanaí ar leagan íoslódála den sruth ríomhchlárúcháin “Conas d’fheidhmchlár gréasáin féin a chruthú i Flask.” Agus chinn mé mo chuid eolais a chomhdhlúthú i dtionscadal éigin. Ar feadh i bhfad ní raibh a fhios agam cad a scríobh mé agus tháinig an smaoineamh chugam: “Cén fáth nach ndéanfá mion-doras sa Fhleasc?”
Tháinig na chéad roghanna maidir le feidhmiú agus cumais an chúldorais láithreach i mo cheann. Ach chinn mé liosta de na cumais backdoor a dhéanamh láithreach:
- A fhios conas a láithreáin ghréasáin a oscailt
- Bíodh rochtain líne ordaithe agat
- A bheith in ann cláir, grianghraif, físeáin a oscailt
Mar sin, tá an chéad phointe thar a bheith éasca a chur i bhfeidhm ag baint úsáide as an modúl brabhsálaí gréasáin. Chinn mé an dara pointe a chur i bhfeidhm ag baint úsáide as an modúl OS. Agus tá an tríú ceann tríd an modúl OS freisin, ach úsáidfidh mé “naisc” (níos mó faoi sin níos déanaí).
Freastalaí a scríobh
Mar sin, * drumroll * cód an fhreastalaí go léir:
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')
Tá an cód ar fad dumpáilte agam cheana féin, tá sé in am an bunúsach a mhíniú.
Ritheann an cód go léir ar an ríomhaire áitiúil ar phort 5000. Chun idirghníomhú leis an bhfreastalaí, ní mór dúinn iarratas JSON POST a sheoladh.
Struchtúr iarratais JSON:
{‘command’: ‘comecommand’, ‘data’: ‘somedata’}
Bhuel, déanann sé ciall gurb é 'ordú' an t-ordú ba mhaith linn a fhorghníomhú. Agus is iad 'sonraí' na hargóintí ordaithe.
Is féidir leat iarratais JSON a scríobh agus a sheoladh chun idirghníomhú leis an bhfreastalaí de láimh (cuideoidh iarratais leat). Nó is féidir leat cliant consól a scríobh.
Cliant a scríobh
Cód:
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
Mínithe:
Ar an gcéad dul síos, allmhairítear an modúl iarratais (chun idirghníomhú leis an bhfreastalaí). Seo thíos cur síos ar na feidhmeanna tosaithe agus tástála. Agus ansin an timthriall ina dtarlaíonn an draíocht. Ar léigh tú an cód? Mar sin tuigeann tú brí na draíochta a tharlaíonn sa timthriall. Cuir isteach an t-ordú - déantar é a fhorghníomhú. Shell – orduithe don líne ordaithe (tá an loighic as scála).
Tástáil - seiceáil an bhfuil an freastalaí ag rith (backdoor)
Nasc – úsáid “aicearra”
Openweb - suíomh Gréasáin a oscailt
Scoir - scoir an cliant
Socraigh - ag socrú IP do ríomhaire ar an líonra áitiúil
Agus anois níos mó faoi nasc.
Tá comhad link.txt in aice leis an bhfreastalaí. Tá naisc ann (cosán iomlán) le comhaid (físeáin, grianghraif, cláir).
Tá an struchtúr mar seo:
полный_путь>описание
полный_путь>описание
Iomlán na
Tá freastalaí backdoor againn chun ríomhaire a rialú ar líonra áitiúil (laistigh de líonra wi-fi). Go teicniúil, is féidir linn an cliant a reáchtáil ó aon fheiste a bhfuil ateangaire python aige.
PS Chuir mé an t-ordú socraithe leis ionas má shanntar IP difriúil do ríomhaire ar an líonra áitiúil, is féidir é a athrú go díreach sa chliant.
Foinse: will.com