ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Asim Hussain
@jawache
codecraft.tv
microsoft.com
How to hack a node app? @  GDG DevFest Ukraine 2017
it can
happen to
you @jawache
#1
@jawachePhoto by?Kristina Flour?on?Unsplash
@jawachePhoto by?Veri Ivanova?on?Unsplash
How to hack a node app? @  GDG DevFest Ukraine 2017
@jawacheMr Robot
How to hack a node app? @  GDG DevFest Ukraine 2017
@jawache
@jawachePhoto by?Nolan Issac?on?Unsplash
On Premise
Hardware
OS
App
IaaS
Hardware
OS
App
PaaS
Hardware
OS
App
@jawache
Google App Engine
Heroku
Amazon Beanstalk
Azure App Services
How to hack a node app? @  GDG DevFest Ukraine 2017
@jawache
@jawacheIt's Always Sunny In Philadelphia
#2
@jawache
'SELECT * FROM COMPANIES WHERE name =' + name;
@jawache
SELECT * FROM COMPANIES WHERE name =;
DROP TABLE "COMPANIES";
--LTD
@jawache
@jawache
@jawache
@jawachePhoto by?Braydon Anderson?on?Unsplash
@jawache
@jawache
#3
@orange_8361
git push
http://example.com
@jawache
git push
http://localhost
@jawache
git push
http://0
@jawache
git push
http://0:9200/_shutdown
@jawache
def send_email(request):
try:
recipients = request.GET['to'].split(',')
url = request.GET['url']
proto, server, path, query, frag = urlsplit(url)
if query: path += '?' + query
conn = HTTPConnection(server)
conn.request('GET',path)
resp = conn.getresponse()
...
@jawache
http://0:8000/composer/send_email?
to=orange@nogg&
url=http://127.0.0.1:12345/foo
@jawache
def send_email(request):
try:
recipients = request.GET['to'].split(',')
url = request.GET['url']
proto, server, path, query, frag = urlsplit(url)
if query: path += '?' + query
conn = HTTPConnection(server)
conn.request('GET',path)
resp = conn.getresponse()
...
@jawache
rn
@jawache
%0D%0A
@jawache
http://127.0.0.1:12345/%0D%0Ahello%0D%0AFoo:
@jawache
GET /%0D%0Ahello%0D%0AFoo:
HTTP/1.1
Host: 127.0.0.1:12345
Accept-Encoding: identity
@jawache
GET /
hello
Foo: HTTP/1.1
Host: 127.0.0.1:12345
Accept-Encoding: identity
@jawache
...:11211/%0D%0Aset%20key%200%20900%204%20data%0D%0A
@jawache
GET /
set key 0 900 4 data
HTTP/1.1
Host: 127.0.0.1:11211
Accept-Encoding: identity
@jawache
GET /
set key 0 900 4 data
HTTP/1.1
Host: 127.0.0.1:11211
Accept-Encoding: identity
@jawache
code
code
@jawache
code
code
@jawache
DeprecatedInstanceVariableProxy
@jawache
@jawache
How to hack a node app? @  GDG DevFest Ukraine 2017
@jawachePhoto by?Kelly Sikkema?on?Unsplash
#4
@jawache
@jawache
@jawache
How to hack a node app? @  GDG DevFest Ukraine 2017
@jawache
cross-env vs. crossenv
@jawache
@jawachePhoto by?Jairo Alzate?on?Unsplash
@scope/package-name
@jawache
Stop pretending
Don't assume
Small vulnerability
Don't trust anyone
PaaS
Sanitise
Fix
@jawache
https://www.pluralsight.com/courses/nodejs-security-
express-angular-get-started/
@jawache
Asim Hussain
@jawache
codecraft.tv
microsoft.com
Azure App Services
https://aka.ms/azure-app-service-docs
Google App Engine
https://cloud.google.com/appengine/
Heroku
https://heroku.com
Amazon Beanstack
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html
PaaS Platforms
Metasploit
https://www.metasploit.com/
DropTables Company
https://beta.companieshouse.gov.uk/company/10542519
SQLMap
http://sqlmap.org/
How I Chained 4 vulnerabilities on GitHub Enterprise - Orange Tsai
http://blog.orange.tw/2017/07/how-i-chained-4-vulnerabilities-on.html
Malicious packages in npm. Here¡¯s what to do - Ivan Akulov
https://iamakulov.com/notes/npm-malicious-packages/
Oscar Bolmsten on Twitter
https://twitter.com/o_cee/status/892306836199800836
npm module sqlstring
https://www.npmjs.com/package/sqlstring
Exploit DB
https://www.exploit-db.com/
Brian Clarke Security Course on Pluralsight
https://www.pluralsight.com/courses/nodejs-security-express-angular-get-started/

More Related Content

How to hack a node app? @ GDG DevFest Ukraine 2017