Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Drupal Security Audit
Index
- Wie zijn wij
- Doel van de workshop
- Opzetten werkomgeving
- Workshop
Wie zijn wij?
Maurits Lawende
Marc Kwee
Doel van de Workshop
● Awareness
● Meestvoorkomende issues
Opzetten werkomgeving
Opzetten werkomgeving
- VirtualBox installeren
- USB Stick “ova” file kopieren
1 2
3 4
5 Linux PW
- root/root
Drupal:
localhost:10080/443
- admin / admin
Checklist
Checklist
- Voorkant / achterkant
- Commandos vanuit VirtualBox
- Prioriteit
Wat gaan we vandaag doen:
- SSL
- HTTP Headers & Cookies
- XSS
- SQLi
- CSRF
- Login
- Information disclosure
- Hosting en...
SSL
Doel van SSL
- Met wie praat ik? ( Integriteit )
- Veilig praten, encryptie ( Confidentialiteit )
A1. HTTPS bij formulieren
- Formulieren met gevoelige informatie over https:
- Denk aan: login, beheer webformulieren met ...
A1. Post action moet httpS zijn
A2. TLS
- TLS & SSL
- TLS is de nieuwe SSL maar worden in de volksmond beide SSL genoemd. SSL 3.0
is sinds juni 2015 echte...
A2. TLS
- echo -n | openssl s_client -connect localhost:443 -ssl3
- 139745678513816:error:140A90C4:SSL routines:SSL_CTX_ne...
A3. Ciphers
- Een Cipher is de encryptie methode voor TLS requests
- Zorg dat deze methode ‘sterk’ is.
- >= 128 bit
- Geen...
A3. Ciphers
- echo -n | openssl s_client -cipher LOW:MEDIUM:EXP:eNULL -connect
localhost:443
(...)
Verify return code: 18 ...
A4. Geldig Certificaat voor andere diensten
- Behalve de website zorg er ook voor dat andere diensten met een geldig certi...
A5. Strict-Transport-Security
- Header: Strict-Transport-Security, min max-age=3153600
- Alle huidige en toekomstige (sub)...
A5. Strict-Transport-Security
Alice
www.website.nl
A5. Strict-Transport-Security
Alice
www.website.nl
http://www.website.nl
A5. Strict-Transport-Security
Alice
www.website.nl
Eve
A5. Strict-Transport-Security
Alice
www.website.nl
Eve
https://www.website.nl
A5. Strict-Transport-Security
Alice
www.website.nl
Eve
https://www.website.nl
http://www.website.nlReplace https -> http
A5. Strict-Transport-Security
- curl -k -s -D - https://localhost -o /dev/null
- Strict-Transport-Security: max-age=315360...
HTTP headers & cookies
B1. X-Frame-Options: deny
- Waarom? Om clickjacking tegen te gaan. Het is door het zetten van de header niet
meer mogelijk...
B2. X-Content-Type-Options: nosniff
- Waarom? De header sluit ‘mime-type’sniffing uit.
B2. X-Content-Type-Options: nosniff
https://www.website.nl
Eve
leukefoto.png
B2. X-Content-Type-Options: nosniff
B2. X-Content-Type-Options: nosniff
https://www.website.nl
Alice
https://www.website.nl/eve/leukefoto.png
B2. X-Content-Type-Options: nosniff
https://www.website.nl
Alice
https://www.website.nl/eve/leukefoto.png
Eve
Script uitge...
B2. X-Content-Type-Options: nosniff
- Hoe te checken?
- Commands:
curl -k -s -D - https://localhost -o /dev/null
B3. Content-Type juiste charset
- Verschillende Charsets kunnen verschillend worden geïnterpreteerd.
- Content-type: text/...
B4. Software namen / versienummers
- Specifieke versies van software kunnen exploits hebben. Een scraper kan dus
makkelijk...
B5. Versie nummers in metatags
- Waarom? Een bepaalde versie van software kan een exploit bevatten en deze is
makkelijk te...
B6. CHANGELOG.TXT
Controleer aanwezigheid van txt-files
find . | grep .txt
B7. Outline in robots.txt
- Waarom? Het geeft mogelijke paden weer die bruikbaar kunnen zijn voor
exploits.
- Voorbeeld:
B7. Outline in robots.txt
- Waarom? Het geeft mogelijke paden weer die bruikbaar kunnen zijn voor
exploits.
- Paden weglat...
B8. HttpOnly & Secure Flag op Sessie cookies
- Waarom Secure Flag?
B8. Secure Flag
https://www.website.nl
http://www.website.nl
Alice
B8. Secure Flag
https://www.website.nl
http://www.website.nl
Alice
Login
B8. Secure Flag
https://www.website.nl
http://www.website.nl
Alice
Cookie
B8. Secure Flag
https://www.website.nl
http://www.website.nl
Alice
Cookie
Eve
Een http link!
B8. Secure Flag
https://www.website.nl
http://www.website.nl
Alice
Cookie
Eve
B8. Secure Flag
https://www.website.nl
http://www.website.nl
Alice
Cookie
Eve
B8. HttpOnly & Secure Flag op Sessie cookies
Secure flag check in Chrome Developer tools.
B8. HttpOnly & Secure Flag op Sessie cookies
- HttpOnly zorgt ervoor dat Javascript niks met de cookie kan
- Hoe te checke...
B9. HttpOnly-flag op andere cookies
- Behalve sessie cookies zijn er ook andere cookies met gevoelige informatie. Zorg
dat...
B10. Cache-Control: private
- Waarom? Gevoelig informatie wil je niet in de cache opslaan. (Denk aan Browser
cache en Prox...
- TRACE is een http method die gebruikt wordt voor debugging. Het stuurt het
request precies terug zoals hij deze ontvangt...
telnet localhost 80
TRACE / HTTP/1.0
Host: localhost
Cookie: foo=bar
Connection: Close
openssl s_client -connect localhost...
XSS
XSS
- XSS is het injecteren van (java)script op een website.
- Vrijwillige XSS
C1. Formulier XSS
- Kan ik javascript invullen in formulieren?
- Hoe te testen?
C1. XSS
- <script>alert(‘XSS’);</script>
- <IMG SRC=JaVaScRiPt:alert('XSS')>
- '';!--"<XSS>=&{()}
Controleer source op aan...
C2. Pad vatbaar voor XSS ( GET parameters )
- Is het pad of zijn get parameters vatbaar voor voor XSS?
- http:www.website....
SQLi
D1. Formulier velden & GET parameters
Invoer: “1 or 1=1”. Controleer output op afwijkingen.
$res = db_query(“SELECT * FROM...
D2. Drupalgeddon
python drupalgeddon.py -t http://localhost -u trudy -p intruder
insert into users (status, uid, name, pas...
CSRF
CSRF
- CSRF Token zijn voor het zekerstellen dat bepaalde acties zijn uitgevoerd door
een bepaalde gebruiker vanaf het cor...
E1. Security Tokens op formulieren
- Elk formulier binnen Drupal heeft een CSRF token wanneer ingelogt
- Voorbeeld:
E2. Security Tokens op links
- Links die schade kunnen doen moeten ook gecontroleerd worden
- Voorbeeld:
- https://website...
Login
F1. Blokkade na foute logins
- Waarom? Om bruteforce attacks te stoppen.
- Drupal zelf heeft de flood module.
F2. Logging aanwezig van blokkades
- Deze bruteforce attacks kunnen geanalyseerd worden en verdere stappen kunnen
ondernom...
Information Disclosure
G1. Uploads van webformulieren openbaar
- www.mijngemeente.nl/sites/default/files/webforms/passpoort.pdf
- Maak “private f...
G2. Private Filepath
- Zet de private Filepath buiten de webroot.
- Private files kunnen dan nooit direct uit de webserver...
G3. Responsible disclosure
- Maak het mogelijk om veiligheidslekken veilig te melden.
- De juiste informatie komt bij de j...
Hosting en DNS
H1. Via ander domein te benaderen
H1. Via ander domein te benaderen
http://www.website.nl
Eve
user/password
Host: evil.nl
H1. Via ander domein te benaderen
http://www.website.nl
Alice
Mail
evil.nl/user/reset?token=asd...
H1. Via ander domein te benaderen
http://www.website.nl
Alice
Mail
evil.nl/user/reset?token=asd...
http://www.evil.nl/user...
H1. Via ander domein te benaderen
http://www.website.nl
Eve
user/reset?token=....
Alice
H1. Via ander domein te benaderen
curl -H 'Host: evil.host' -v localhost
Oplossing:
Trusted host setting (D8) of custom co...
H2. .php in files folder uitvoerbaar
- Maak PHP file: <?php phpinfo(); ?> in /var/www/html/sites/default/files
- Upload vi...
H3. SMTP Relay op adressen uit DNS A & SPF
- Brievenbus naar brievenbus
- Legitieme mailserver gebruiken als afzender voor...
H3. SMTP Relay op adressen uit DNS A & SPF
/root/startmailhog.sh
telnet localhost 25
EHLO mail.localhost
MAIL FROM:<info@l...
H4. FTP? Zo ja SSH?
- Controleer poort 21 en 990 (ftps-implicit)
H5. Welke poorten staan open?
- nmap localhost (1000 meestgebruikte poorten)
- nmap -p 1-10000 localhost
PORT STATE SERVIC...
H6. Slowloris
- Maximum aantal connecties bereiken door requests lang open te houden
http: telnet localhost 80
https: open...
H7. SPF
- Wie mag mail sturen namens domein?
dig +short drupaljam.nl TXT
"v=spf1 include:_spf.google.com ~all"
"v=spf1 red...
H7. SPF
$ dig +short gemeente.nl TXT
"_spfpolicy.gemeente.nl"
$ dig +short _spfpolicy.gemeente.nl TXT
"v=spf1 ip4:... incl...
H8. Apache onder eigen User
devel/php of losse php-file: echo shell_exec(‘whoami’);
Verwacht een user als “www-data”, maar...
H9. Open basedir op files directory ****
controleer /sites/default/files in de browser
Code analysis
I1. Security Updates
Drupal updates via update module.
Andere frameworks via eigen tools, bijv. NodeJS modules via nsp.
I2. Andere software op server? Up to date?
- Control panel (plesk:8443, cpanel:2083, webmin:10000)
- /phpmyadmin
- Overige...
I3. Coder - unescaped Variables in templates etc
Via coder / CodeSniffer
Drupal Specifiek
K1. Tekstopmaak instellingen
- Wie heeft Full HTML rechten?
- Zijn overige input filters correct ingesteld?
K2. Rollen & Rechten
controleren op “manage people” en “masquerade”
drush -y en security_review
admin/reports/security-rev...
K3. Testaccounts aanwezig
- “Test”, “redacteur” etc.
- Veilige wachtwoorden in gebruik?
K4. User 1
Password must meet at least 3 out of the following 4 complexity rules
at least 1 uppercase character (A-Z)
at l...
K5. PHP Filter
● Block visibility
● Views header / footer
● Custom blocks
● Node body
$/> init 0
Upcoming SlideShare
Loading in …5
×

Security audit van een Drupal site

1,424 views

Published on

DrupalJam 2017 workshop over Drupal security

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Security audit van een Drupal site

  1. 1. Drupal Security Audit
  2. 2. Index - Wie zijn wij - Doel van de workshop - Opzetten werkomgeving - Workshop
  3. 3. Wie zijn wij?
  4. 4. Maurits Lawende
  5. 5. Marc Kwee
  6. 6. Doel van de Workshop ● Awareness ● Meestvoorkomende issues
  7. 7. Opzetten werkomgeving
  8. 8. Opzetten werkomgeving - VirtualBox installeren - USB Stick “ova” file kopieren
  9. 9. 1 2 3 4
  10. 10. 5 Linux PW - root/root Drupal: localhost:10080/443 - admin / admin
  11. 11. Checklist
  12. 12. Checklist - Voorkant / achterkant - Commandos vanuit VirtualBox - Prioriteit
  13. 13. Wat gaan we vandaag doen: - SSL - HTTP Headers & Cookies - XSS - SQLi - CSRF - Login - Information disclosure - Hosting en DNS
  14. 14. SSL
  15. 15. Doel van SSL - Met wie praat ik? ( Integriteit ) - Veilig praten, encryptie ( Confidentialiteit )
  16. 16. A1. HTTPS bij formulieren - Formulieren met gevoelige informatie over https: - Denk aan: login, beheer webformulieren met persoonlijke data - Hoe te checken?
  17. 17. A1. Post action moet httpS zijn
  18. 18. A2. TLS - TLS & SSL - TLS is de nieuwe SSL maar worden in de volksmond beide SSL genoemd. SSL 3.0 is sinds juni 2015 echter deprecated en NIET veilig. - Hoe te checken?
  19. 19. A2. TLS - echo -n | openssl s_client -connect localhost:443 -ssl3 - 139745678513816:error:140A90C4:SSL routines:SSL_CTX_new:null ssl method passed:ssl_lib.c:1878: - Verify return code: 18 (self signed certificate) DONE
  20. 20. A3. Ciphers - Een Cipher is de encryptie methode voor TLS requests - Zorg dat deze methode ‘sterk’ is. - >= 128 bit - Geen bekende kwetsbaarheden - Hoe check ik dat?
  21. 21. A3. Ciphers - echo -n | openssl s_client -cipher LOW:MEDIUM:EXP:eNULL -connect localhost:443 (...) Verify return code: 18 (self signed certificate) --- DONE /root/sslciphers.sh localhost
  22. 22. A4. Geldig Certificaat voor andere diensten - Behalve de website zorg er ook voor dat andere diensten met een geldig certificaat draaien.
  23. 23. A5. Strict-Transport-Security - Header: Strict-Transport-Security, min max-age=3153600 - Alle huidige en toekomstige (sub)domeinen verlopen over HTTPS maximaal 1 jaar. Dit blokkeert toegang tot pagina's of subdomeinen die alleen over HTTP kunnen worden weergegeven
  24. 24. A5. Strict-Transport-Security Alice www.website.nl
  25. 25. A5. Strict-Transport-Security Alice www.website.nl http://www.website.nl
  26. 26. A5. Strict-Transport-Security Alice www.website.nl Eve
  27. 27. A5. Strict-Transport-Security Alice www.website.nl Eve https://www.website.nl
  28. 28. A5. Strict-Transport-Security Alice www.website.nl Eve https://www.website.nl http://www.website.nlReplace https -> http
  29. 29. A5. Strict-Transport-Security - curl -k -s -D - https://localhost -o /dev/null - Strict-Transport-Security: max-age=31536000;
  30. 30. HTTP headers & cookies
  31. 31. B1. X-Frame-Options: deny - Waarom? Om clickjacking tegen te gaan. Het is door het zetten van de header niet meer mogelijk om de site middels een <iframe>, <frame> of <object> op een andere site toe te voegen. - Hoe te checken? - Commands: curl -k -s -D - https://localhost -o /dev/null
  32. 32. B2. X-Content-Type-Options: nosniff - Waarom? De header sluit ‘mime-type’sniffing uit.
  33. 33. B2. X-Content-Type-Options: nosniff https://www.website.nl Eve leukefoto.png
  34. 34. B2. X-Content-Type-Options: nosniff
  35. 35. B2. X-Content-Type-Options: nosniff https://www.website.nl Alice https://www.website.nl/eve/leukefoto.png
  36. 36. B2. X-Content-Type-Options: nosniff https://www.website.nl Alice https://www.website.nl/eve/leukefoto.png Eve Script uitgevoerd bij Alice
  37. 37. B2. X-Content-Type-Options: nosniff - Hoe te checken? - Commands: curl -k -s -D - https://localhost -o /dev/null
  38. 38. B3. Content-Type juiste charset - Verschillende Charsets kunnen verschillend worden geïnterpreteerd. - Content-type: text/html; charset=utf-8 . Benoem daarom de charset in een header. curl -k https://localhost | grep -e 'meta.*charset' <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> In utf-7: +ADw-script +ADw-evil();+ADw-/script+ADw-
  39. 39. B4. Software namen / versienummers - Specifieke versies van software kunnen exploits hebben. Een scraper kan dus makkelijke bekijken welke servers kwetsbaar zijn en een aanval uitvoeren - Hoe te checken? HTTP headers: curl -k -s -D - https://localhost -o /dev/null Meta-tags: curl -k https://localhost | grep -B99 "</head>"
  40. 40. B5. Versie nummers in metatags - Waarom? Een bepaalde versie van software kan een exploit bevatten en deze is makkelijk te signaleren. Bijvoorbeeld: - <meta name="generator" content="Drupal 7 (http://drupal.org)" />
  41. 41. B6. CHANGELOG.TXT Controleer aanwezigheid van txt-files find . | grep .txt
  42. 42. B7. Outline in robots.txt - Waarom? Het geeft mogelijke paden weer die bruikbaar kunnen zijn voor exploits. - Voorbeeld:
  43. 43. B7. Outline in robots.txt - Waarom? Het geeft mogelijke paden weer die bruikbaar kunnen zijn voor exploits. - Paden weglaten waarop anonieme bezoekers een 403 krijgen (zoals /admin)
  44. 44. B8. HttpOnly & Secure Flag op Sessie cookies - Waarom Secure Flag?
  45. 45. B8. Secure Flag https://www.website.nl http://www.website.nl Alice
  46. 46. B8. Secure Flag https://www.website.nl http://www.website.nl Alice Login
  47. 47. B8. Secure Flag https://www.website.nl http://www.website.nl Alice Cookie
  48. 48. B8. Secure Flag https://www.website.nl http://www.website.nl Alice Cookie Eve Een http link!
  49. 49. B8. Secure Flag https://www.website.nl http://www.website.nl Alice Cookie Eve
  50. 50. B8. Secure Flag https://www.website.nl http://www.website.nl Alice Cookie Eve
  51. 51. B8. HttpOnly & Secure Flag op Sessie cookies Secure flag check in Chrome Developer tools.
  52. 52. B8. HttpOnly & Secure Flag op Sessie cookies - HttpOnly zorgt ervoor dat Javascript niks met de cookie kan - Hoe te checken? - Controleren in Chrome voor HttpOnly: Chrome: developer tools > Application > Storage > Cookies Browser Javascript Console: document.cookie; Of in developer tools bij response van POST /user: Set-Cookie: SESSb6589...-...; Max-Age=2000000; path=/; HttpOnly
  53. 53. B9. HttpOnly-flag op andere cookies - Behalve sessie cookies zijn er ook andere cookies met gevoelige informatie. Zorg dat daar ook de HttpOnly flag op staat zodat javascript daar niet bij kan. - Hoe te checken?
  54. 54. B10. Cache-Control: private - Waarom? Gevoelig informatie wil je niet in de cache opslaan. (Denk aan Browser cache en Proxy cache / CDN) - Check de headers Controleren in developer tools met authenticated requests
  55. 55. - TRACE is een http method die gebruikt wordt voor debugging. Het stuurt het request precies terug zoals hij deze ontvangt. - De HttpOnly flag zorgt ervoor dat JS niet bij de cookie kan. Maar bij een xmlrequest met een de trace method kan je de cookie achterhalen gezien hij letterlijk het request weer terugstuurt. - Hoe te checken of Trace aan staat? B11. TRACE
  56. 56. telnet localhost 80 TRACE / HTTP/1.0 Host: localhost Cookie: foo=bar Connection: Close openssl s_client -connect localhost:443 B11. TRACE
  57. 57. XSS
  58. 58. XSS - XSS is het injecteren van (java)script op een website. - Vrijwillige XSS
  59. 59. C1. Formulier XSS - Kan ik javascript invullen in formulieren? - Hoe te testen?
  60. 60. C1. XSS - <script>alert(‘XSS’);</script> - <IMG SRC=JaVaScRiPt:alert('XSS')> - '';!--"<XSS>=&{()} Controleer source op aanwezigheid <XSS
  61. 61. C2. Pad vatbaar voor XSS ( GET parameters ) - Is het pad of zijn get parameters vatbaar voor voor XSS? - http:www.website.nl/search/site/<script>evil();</script> - → Bitly.com/leukelink - Alice -> klikt op de Bitly.com/leukelink
  62. 62. SQLi
  63. 63. D1. Formulier velden & GET parameters Invoer: “1 or 1=1”. Controleer output op afwijkingen. $res = db_query(“SELECT * FROM user WHERE id = $_GET[id]”); while ($item = db_fetch_row($res)) { .. } // SELECT * FROM user WHERE id = 1 or 1=1
  64. 64. D2. Drupalgeddon python drupalgeddon.py -t http://localhost -u trudy -p intruder insert into users (status, uid, name, pass) SELECT 1, MAX(uid)+1, 'trudy', '$S$DkIkdKLIvRK0iVHm99X7B/M8QC17E1Tp/kMOd1Ie8V/PgWjtAZld' FROM users insert into users_roles (uid, rid) VALUES ((SELECT uid FROM users WHERE name = 'admin'), 3)
  65. 65. CSRF
  66. 66. CSRF - CSRF Token zijn voor het zekerstellen dat bepaalde acties zijn uitgevoerd door een bepaalde gebruiker vanaf het correcte formulier of link. De token is uniek voor die gebruiker en sessie.
  67. 67. E1. Security Tokens op formulieren - Elk formulier binnen Drupal heeft een CSRF token wanneer ingelogt - Voorbeeld:
  68. 68. E2. Security Tokens op links - Links die schade kunnen doen moeten ook gecontroleerd worden - Voorbeeld: - https://website.nl/admin/structure/block/manage/website/disable?token=nJ4PobF7 gcwZLQ5X7jkhnyts7q-R_I-WmMKtVmZvTas
  69. 69. Login
  70. 70. F1. Blokkade na foute logins - Waarom? Om bruteforce attacks te stoppen. - Drupal zelf heeft de flood module.
  71. 71. F2. Logging aanwezig van blokkades - Deze bruteforce attacks kunnen geanalyseerd worden en verdere stappen kunnen ondernomen worden. Denk aan het blokkeren van IP adressen.
  72. 72. Information Disclosure
  73. 73. G1. Uploads van webformulieren openbaar - www.mijngemeente.nl/sites/default/files/webforms/passpoort.pdf - Maak “private files” de default
  74. 74. G2. Private Filepath - Zet de private Filepath buiten de webroot. - Private files kunnen dan nooit direct uit de webserver worden geserveerd.
  75. 75. G3. Responsible disclosure - Maak het mogelijk om veiligheidslekken veilig te melden. - De juiste informatie komt bij de juiste mensen terecht ipv info@bedrijf.nl. - Voorbeeld: https://hackerone.com
  76. 76. Hosting en DNS
  77. 77. H1. Via ander domein te benaderen
  78. 78. H1. Via ander domein te benaderen http://www.website.nl Eve user/password Host: evil.nl
  79. 79. H1. Via ander domein te benaderen http://www.website.nl Alice Mail evil.nl/user/reset?token=asd...
  80. 80. H1. Via ander domein te benaderen http://www.website.nl Alice Mail evil.nl/user/reset?token=asd... http://www.evil.nl/user/reset?token=.... .
  81. 81. H1. Via ander domein te benaderen http://www.website.nl Eve user/reset?token=.... Alice
  82. 82. H1. Via ander domein te benaderen curl -H 'Host: evil.host' -v localhost Oplossing: Trusted host setting (D8) of custom code in settings.php (<= D7) If (!drupal_is_cli() && $_SERVER[‘HTTP_HOST’] != ‘example.com’) die(‘Wrong host’);
  83. 83. H2. .php in files folder uitvoerbaar - Maak PHP file: <?php phpinfo(); ?> in /var/www/html/sites/default/files - Upload via forms, publieke FTP (?), tinymce browser etc. - Vraag file op via browser
  84. 84. H3. SMTP Relay op adressen uit DNS A & SPF - Brievenbus naar brievenbus - Legitieme mailserver gebruiken als afzender voor niet legitieme mail
  85. 85. H3. SMTP Relay op adressen uit DNS A & SPF /root/startmailhog.sh telnet localhost 25 EHLO mail.localhost MAIL FROM:<info@localhost> RCPT TO:<test@localhost> Verwacht antwoord: “Relay access denied”
  86. 86. H4. FTP? Zo ja SSH? - Controleer poort 21 en 990 (ftps-implicit)
  87. 87. H5. Welke poorten staan open? - nmap localhost (1000 meestgebruikte poorten) - nmap -p 1-10000 localhost PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp open https 6081/tcp open unknown 8080/tcp open http-proxy
  88. 88. H6. Slowloris - Maximum aantal connecties bereiken door requests lang open te houden http: telnet localhost 80 https: openssl s_client –connect localhost:443 GET / HTTP/1.0 Cookie: a=aaaaaaaa…. Herhaal 1 teken per seconde, tot ruim 10 seconden. Daarna 10s wachten. Verwacht gedrag: verbinding wordt gesloten
  89. 89. H7. SPF - Wie mag mail sturen namens domein? dig +short drupaljam.nl TXT "v=spf1 include:_spf.google.com ~all" "v=spf1 redirect=_spf.facebook.com" dig +short _spf.facebook.com TXT "v=spf1 ip4:69.63.179.25 ip4:69.63.178.128/25 ip4:69.63.184.0/25 ip4:66.220.144.128/25 ip4:66.220.155.0/24 ip4:69.171.232.0/24 i" "p4:66.220.157.0/25 ip4:69.171.244.0/24 mx -all"
  90. 90. H7. SPF $ dig +short gemeente.nl TXT "_spfpolicy.gemeente.nl" $ dig +short _spfpolicy.gemeente.nl TXT "v=spf1 ip4:... include:... include:... -all"
  91. 91. H8. Apache onder eigen User devel/php of losse php-file: echo shell_exec(‘whoami’); Verwacht een user als “www-data”, maar geen “root”
  92. 92. H9. Open basedir op files directory **** controleer /sites/default/files in de browser
  93. 93. Code analysis
  94. 94. I1. Security Updates Drupal updates via update module. Andere frameworks via eigen tools, bijv. NodeJS modules via nsp.
  95. 95. I2. Andere software op server? Up to date? - Control panel (plesk:8443, cpanel:2083, webmin:10000) - /phpmyadmin - Overige libraries / applicaties (zoals forum)
  96. 96. I3. Coder - unescaped Variables in templates etc Via coder / CodeSniffer
  97. 97. Drupal Specifiek
  98. 98. K1. Tekstopmaak instellingen - Wie heeft Full HTML rechten? - Zijn overige input filters correct ingesteld?
  99. 99. K2. Rollen & Rechten controleren op “manage people” en “masquerade” drush -y en security_review admin/reports/security-review
  100. 100. K3. Testaccounts aanwezig - “Test”, “redacteur” etc. - Veilige wachtwoorden in gebruik?
  101. 101. K4. User 1 Password must meet at least 3 out of the following 4 complexity rules at least 1 uppercase character (A-Z) at least 1 lowercase character (a-z) at least 1 digit (0-9) at least 1 special character (punctuation and space) at least 10 characters at most 128 characters not more than 2 identical characters in a row (e.g., 111 not allowed)
  102. 102. K5. PHP Filter ● Block visibility ● Views header / footer ● Custom blocks ● Node body
  103. 103. $/> init 0

×