<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Python Cache Poisoning on seraldinho.pages.dev</title><link>https://seraldinho.pages.dev/tags/python-cache-poisoning/</link><description>Recent content in Python Cache Poisoning on seraldinho.pages.dev</description><generator>Hugo -- gohugo.io</generator><language>es</language><managingEditor>nseral@proton.me (Nicolás Seral)</managingEditor><webMaster>nseral@proton.me (Nicolás Seral)</webMaster><copyright>© 2026 Nicolás Seral</copyright><lastBuildDate>Wed, 18 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://seraldinho.pages.dev/tags/python-cache-poisoning/index.xml" rel="self" type="application/rss+xml"/><item><title>HackTheBox - Browsed</title><link>https://seraldinho.pages.dev/writeups/browsed/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><author>nseral@proton.me (Nicolás Seral)</author><guid>https://seraldinho.pages.dev/writeups/browsed/</guid><description>OS: Linux | Dificultad: Medium | Conceptos: Chrome Extensions, Bash Injection, Python Cache Poisoning</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://seraldinho.pages.dev/writeups/browsed/featured.png"/></item><item><title>Python Cache Poisoning</title><link>https://seraldinho.pages.dev/notas/tecnicas/python-cache-poisoning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>nseral@proton.me (Nicolás Seral)</author><guid>https://seraldinho.pages.dev/notas/tecnicas/python-cache-poisoning/</guid><description>&lt;p&gt;El &lt;strong&gt;python cache poisoning&lt;/strong&gt; es una vulnerabilidad (o técnica, según se mire) que permite escalar privilegios aprovechando la confianza de Python en archivos bytecode (&lt;code&gt;.pyc&lt;/code&gt;) precompilados de scripts que ejecuta (normalmente con privilegios elevados).&lt;/p&gt;
&lt;p&gt;Cuando Python ejecuta un script o importa una librería, hace lo siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si &lt;strong&gt;no existe&lt;/strong&gt; una versión precompilada, compila el código fuente a bytecode, que normalmente se almacena en &lt;code&gt;__pycache__/NOMBRELIB.cpython-VERSION.pyc&lt;/code&gt; o (menos común) bajo un prefijo &lt;code&gt;PYTHONPYCACHEPREFIX&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Si &lt;strong&gt;existe&lt;/strong&gt; una versión precompilada, comprueba la cabecera (Magic Number que depende de la versión de Python, flags, metadatos como &lt;code&gt;timestamp&lt;/code&gt;, &lt;code&gt;size&lt;/code&gt; o &lt;code&gt;hash&lt;/code&gt;), y, si al compararla con el &lt;code&gt;.py&lt;/code&gt; original está bien, la ejecuta confiando en el &lt;code&gt;.pyc&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="danger"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"&gt;
&lt;path fill="currentColor" d="M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-2.8-5.6-5.6-11.2-9.8-16.8l-50.6 58.8s-81.4-103.6-87.1-110.6C133.1 243.8 112 273.2 112 306.8C112 375.4 162.6 416 225.7 416z"/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Nota: Escalada de privilegios
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;&lt;em&gt;Si un proceso con más privilegios ejecuta un .py o importa un módulo cuyo .pyc ha sido manipulado por un usuario menos privilegiado (y pasa la comprobación de cabecera), el payload corre con esos privilegios elevados.&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>