Make your own Admin Panel Finder [Python]

Python ကိုသံုးျပီးေတာ့ Admin Panel Find တဲ႕ script ေလးေရးၾကည့္မယ္။ ဒီမွာေျပာျပထားတာက script ရဲ႕ အလုပ္လုပ္ပံုေလးကိုပဲအဓိကေျပာထားတာျဖစ္ပါတယ္။ Modify လုပ္ခ်င္ရင္ေတာ့ User Input ေတြဘာေတြေတာင္းလိုက္ေပါ့။ ျပီးရင္ ကိုယ့္နာမည္ေလးနဲ႕ print ထုတ္ျပီး ဘယ္သူဘယ္၀ါရဲ႕ tool ဘာဘာညာညာေပါ့ ဟီး 😀 အဲဒါေတြေတာ့မေျပာေတာ့ဘူး။

Essential Web Technology

(Image from google)

Web Technology မွာေတာ့ Request Header နဲ႕ Response Header ကိုနားလည္ထားရမယ္။ ေတာ္ေတာ္မ်ားမ်ားက သိျပီးသားျဖစ္ပါလိမ့္မယ္။ မသိေသးတဲ့သူေတြေတာ့ နဲနဲရွင္းျပလိုက္တယ္။ ဒီလိုဗ် Web Technology က ဘာနဲ႕တူလဲဆိုရင္ တင္ဒါတင္တာမ်ိဳးနဲ႕တူတယ္ဗ်။ ကိုယ္ရဲ႕ တင္ဒါေပၚမူတည္ျပီးဟုိက ေခၚတယ္မေခၚဘူးဆံုးျဖတ္သကဲ့သို႕ Web Server ကလဲ က်ေနာ္တို႕ Client ဘက္က ပို႕လိုက္တဲ့ Request Header ေပၚမူတည္ျပီး Response ျပန္တာမ်ိဳးဗ်။ Injection ဘာညာဆိုတာလဲ ဒီတိုင္းပါပဲ ။ Header မွာ ကူလီကူမာလုပ္ျပီး ပို႕ႏိုင္တဲ့လူက အခြင့္ေရးပိုမ်ားတာေပါ့။ ဒါက အလြယ္ဥပမာေပးတာပါ။

Response Status Code ( Status Code from Mozilla )

အဲဒီလို request ေပၚမူတည္ျပီး ျပန္လာတဲ့ response မွာမွ HTTP status code ဆိုတာေလးေတြရွိေသးတယ္။ ဒီလို status code ေလးေတြကိုသံုးျပီးက်ေနာ္တို႕ admin panel finder ေလးကိုေရးၾကည့္မွာပါ။ ေရးမယ့္ language ကေတာ့ python ပါ ဘာေၾကာင့္ဆို လြယ္လို႕ပါ။ သူ႕မွာ Web Request ပို႕ေပးႏိုင္တဲ့ requests ဆိုတဲ့ module ရွိလို႕ပဲျဖစ္ပါတယ္။

Sucessful Status Code

200 OK
The request has succeeded. The meaning of a success varies depending on the HTTP method:
GET: The resource has been fetched and is transmitted in the message body.
HEAD: The entity headers are in the message body.
POST: The resource describing the result of the action is transmitted in the message body.
TRACE: The message body contains the request message as received by the server

200 တစ္ခုတည္းရွိတာေတာ့မဟုတ္ပါဘူး။ Link ကေခါင္းစဥ္ေဘးမွာထည့္ေပးထားပါတယ္။ ခုေတာ့ 200 ok နဲ႕ပဲရွင္းျပမွာပါ။ 200 Ok ဆိုတာ ဘာျပသနာမွမရွိဘူး။ ေသခ်ာတာတစ္ခုကေတာ့ အဲ့ဒီ Web Page ကရွိတယ္ဆိုတာေတာ့ ေသခ်ာတယ္။ က်ေနာ္တို႕ရဲ႕ အဓိကလိုအပ္ခ်က္ကလဲ အဲဒါပဲ 😀

Client Error Response Status Code

404 Not Found
Server can not find requested resource. This response code probably is most famous one due to its frequency to occur in web.

ဒါကေတာ့ က်ေနာ္တို႕ request လုပ္လိုက္တဲ့ resource ကမရွိဘူးလို႕ေျပာတာ။ ရွာမေတြ႕ဘူးေပါ့။ ဒီ status code ေလး ၂ ခုကိုသံုးျပီး စဥ္းစားမယ္။

Condition

ဒီလိုမ်ိဳး 200 Ok ရယ္ 404 Not found ရယ္ ၂ ခုရွိတဲ့ထဲမွာမ 200 Ok နဲ႕ညီေနရင္လား ?  သို႕မဟုတ္ 404 နဲ႕ ညီမေနရင္လားဆိုတာ ကိုယ့္ကိုၾကိုက္သလို condition စစ္ၾကည့္ေပါ့။

Concept

ဒီေတာ့ က်ေနာ္တို႕ ခုနားလည္ထားလိုက္တာ တကယ္လို႕ admin panel လို႕ယူဆရတဲ့ admin-login.php ဆိုတာက ရွိခဲ့ရင္ 200 OK မရွိရင္ေတာ့ 404 Not found ျဖစ္ေနမွာဆိုတာကို က်ေနာ္တို႕ အၾကမ္းဖ်င္းနားလည္ထားလိုက္ျပီ။

Python Requests Module ( Official Documentation )

Get Method နဲ႕ Request တစ္ေစာင္လႊတ္မယ္ဆိုရင္

r=requests.get('https://google.com')

r ဆိုတဲ့ variable ထဲထည့္ထားလိုက္တာပါ။ status code ကိုသိခ်င္ရင္က်ေတာ့ r.status_code ကိုသံုးႏိုင္တယ္။ ဒီလိုဆို ဒါမ်ိဳးေရးၾကည့္မယ္။

r=requests.get('https://google.com')
print r.status_code

google.com ကရွိတယ္ဆိုေတာ့ 200 Ok ျပမွာေပါ့။ ဟုတ္ျပီ။ က်ေနာ္တို႕ က dictionary based တိုက္စစ္ခ်င္တာ ျဖစ္တယ္။ ဒါေၾကာင့္ list ေလးတစ္ခုေတာ့လိုလိမ့္မယ္။ array ထဲထည့္ထားလိုက္မယ္ wordlist ေတြကို ၊ ဒီေတာ့

list=['robots.txt','admin','login']

ဒီလိုမ်ိဳး wordlist ေလးတစ္ခုလုပ္ျပီးတဲ့အခါမွာ ဒီ list နဲ႕ google.com ကို request ပို႕မွာျဖစ္တဲ့အတြက္ က်ေတာ္တို႕ ၂ ခုတြဲျပီး request ပို႕ေပးမယ္။

site='https://www.google.com/'
list=['robots.txt','admin','login']

r=requests.get(site+list[i])

List မွာက array ထဲကေန တစ္ခန္းခ်င္းစီတိုက္စစ္ခ်င္တာျဖစ္တယ္။ ျပီးေတာ့ array ထဲရွိသေလာက္ပဲဆိုေတာ့။ for loop ေလးနဲ႕ array ရဲ႕ length ထက္ မၾကီးခင္ထိ တိုက္စစ္လိုက္မယ္ဆိုရင္

site='https://www.google.com/'
list=['robots.txt','admin','login']

for i in range(len(list)):
	r=requests.get(site+list[i])

Ok ဒီလိုဆို list ထဲက dictionary နဲ႕တိုက္စစ္တဲ့ ကိစၥကေတာ့ အဆင္ေျပသြားျပီ။ အဲဒီမွာ ေစာေစာကေျပာခဲ့တဲ့ condition ေလးတစ္ခုနဲ႕ ေနာက္ဆံုး result ကိုထုတ္လိုက္မယ္။ တကယ္လို႕မ်ား status code က 200 OK နဲ႕ ညီေနတယ္ဆိုရင္ output ျပမယ္။ တျခားဟာေတြကိုေတာ့မျပေတာ့ဘူး။ အာရံုေနာက္လို႕ၾကည့္ရတာ 😛

site='https://www.google.com/'
list=['robots.txt','admin','login']

for i in range(len(list)):
	r=requests.get(site+list[i])
	if(r.status_code==200):
		print list[i]+'>'
		print r.status_code
		print '\n'

ဒါေလးပါပဲ။ သေဘာတရားကေတာ့ အေရးၾကီးတာေလးတစ္ခုေျပာဖို႕က်န္ခဲ့တယ္ python requests module ကို ယူသံုးထားေတာ့ import လုပ္ေပးဖို႕လဲမေမ့နဲ႕ဦးေနာ္။

import requests

site='https://www.google.com/'
list=['robots.txt','admin','login']

for i in range(len(list)):
	r=requests.get(site+list[i])
	if(r.status_code==200):
		print list[i]+'>'
		print r.status_code
		print '\n'

POC Screenshot

Thanks for Reading xD

ဘာရယ္မဟုတ္ဘူး ေရးဖူးတယ္ရွိေအာင္ေရးလို႕ရေအာင္ က်ေနာ္ေတြးမိတာေလးေရးလိုက္တာပါ။ သူမ်ားေရးထားတာေတြ ၾကည့္ျပီးရွုပ္ယွက္ခပ္ေနမယ့္အတူတူ ကိုယ့္ကိုေတြးျပီး googling လုပ္လိုက္တာ တစ္ခါတေလ ပိုျမန္တယ္ 😀 Super Basic ေနာ္ python မဟုတ္ပဲ တျခား ကိုယ္ရတဲ့ language နဲ႕ကိုယ္ေရးလို႕ရပါတယ္။ အဓိက concept ေလးမိေစခ်င္တာပါ

1 Comment

Comments are closed.