gongmingqm10

Life is a journey, not a destination

OWASP Top 10 Training

| Comments

环境配置及安装

我们使用 DVWA 工程来学习 OWASP TOP10 安全问题。本节的目的是搭建好这一个易受攻击的 PHP/Mysql 应用,以实例的方式学习这十大安全问题。

启动 Vagrant 虚拟机

如果你决定直接在本地电脑上安装 XAMPP,请自动忽略此步。

为了营造一个安全纯净无干扰的环境,我们选择 Vagrant 启动虚拟机,在虚拟机中安装 XAMPP 环境, Vagrantfile 配置如下:

1
2
3
4
5
6
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.network :private_network, ip: "192.168.33.10"
end

从配置文件中,可以看出我们使用 ubunt 14.04 系统,并且给虚拟机设置了一个内网 IP, 意味着在主机中可以通过 IP 直接访问虚拟机中的网页。

Vagrant up 启动该虚拟机,并通过 Vagrant ssh 登录虚拟机。

安装 XAMPP

XAMPP(Apache + MariaDB + PHP + Perl),为了安装 DVWA Training 的实例,我们需要先安装相应的环境。

XAMPP 有针对 Linux/Windows/Mac的安装包,下载地址参考官方地址. 由于本次试验的在 ubuntu/trusty 虚拟机中,因此使用命令行安装,大致安装过程如下:

1
2
3
4
wget https://www.apachefriends.org/xampp-files/5.6.14/xampp-linux-x64-5.6.14-3-installer.run

sudo chmod +x xampp-linux-x64-5.6.14-3-installer.run
sudo ./xampp-linux-x64-5.6.14-3-installer.run

XAMPP 首页

安装完成后,使用 sudo /opt/lampp/lampp start 打开 lmapp 服务,这时候你应该能够访问 192.168.33.10/xampp详细请参考

安装 DVWA

如果你已经能够访问 xampp 默认的主页,那么你几乎快成功了。XAMPP 中提供了 Apache 服务器,那么我们只需要将 DVWA 的包放在相应的 Web 目录下面,DVWA 项目就能够运行了。

DVWA 官网:http://www.dvwa.co.uk/.

DVWA Github 地址:https://github.com/RandomStorm/DVWA.

开始从命令行安装:

1
2
3
wget https://github.com/RandomStorm/DVWA/archive/v1.9.tar.gz
tar -xzvf v1.9.tar.gz
mv DVWA-1.9 /opt/lampp/htdocs/DVWA

访问 192.168.33.10/DVWA,自动跳转到 setup 界面,这时我们只需要按照提示就可以完成对应的初始化操作。如果你没有预先设置数据库用户名和密码,那么你会看到不能连接到 Mysql 数据库,根据提示重新设置数据库用户名和密码以继续操作。

DVWA Setup

按照 DVWA README 中进行更改,试验过程中如果发现 allow_url_include 始终 Disable, 无法修改成功。请尝试在 /opt/lampp/etc/php.ini 中将原来的 allow_url_include = Off 修改为 allow_url_include = on

将 PHP 相关的配置修改完成后,注意需要将 XMAPP 中 mysql root 用户默认的密码更改为p@ssw0rd,这个密码在 /opt/lampp/htdocs/DVWA/config/config.inc.php 中可以找到。当然也可以将此配置中的数据库密码更改为默认的空。

更改完成后,点击 Create / Reset Database 能够创建初始数据,随后访问 192.168.33.10/DVWA 即可跳转至登录界面。使用默认的 admin/password 可以登录此系统。登录成功之后,意味着我们可以通过实例学习 OWASP TOP10 的安全问题啦。

DVWA index

DVWA Practice

DVWA 安装成功之后,我们开始学习相关的安全问题。DVWA 所培训的例子和 OWASP Top 10 安全问题并不完全一致,但是我们可以先学习 DVWA 上列举的安全问题,然后再逐步学习 Top 10 安全问题。

Brute Force

密码暴力破解,根据理解就是根据一个用户名密码字典进行试错。

通过以下链接找到适合你的 Brute Force 的工具:http://resources.infosecinstitute.com/10-popular-password-cracking-tools/?dl=true

在 Mac 下面我使用 ZAP 进行暴力破解。ZAP 有适用于 Mac 版本的安装包。

几种不同的授权方式:

  • 基础验证: Basic Access Authentication;
  • 摘要验证: Digest Access Authentication;
  • Https验证: HTTPS Client Authentication;
  • 表单验证: Form Based Authentication;

http://java.boot.by/wcd-guide/ch05s03.html

https://www.owasp.org/index.php/Testing_for_Brute_Force_(OWASP-AT-004)

DevOps Session 2

| Comments

本次课主要学习用户权限概念,为了保证系统的安全性,把所有用户赋予最高权限是极不安全的做法。特别是安装 Tomcat 和 Jenkins 时,使用 sudo 用户来安装很容易被黑客攻击。

课前准备

课前准备阶段,我们需要完成简单的作业:

  1. 使用 tomcat 用户安装 tomcat7 服务器;
  2. 使用 jenkins 用户安装 jenkins,jenkins 可以放在tomcat7中运行;
  3. 从本机浏览器中访问 jenkins 主页;

DevOps Session 1

| Comments

最近公司在组织DevOps培训,于是就有个这个系列的文章,作为培训笔记,作为以后参考。如果你还不知道DevOps概念,请参考Wikipedia

DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

课前准备

因为需要使用一台Linux机器来作为测试主机,我们使用VirtualBox安装Ubuntu Server。安装完成之后,我们能够登录这台“服务器”。

Android 应用的持续交付

| Comments

当我们谈软件质量时,我们一般会谈到测试。测试作为保障软件质量的重要手段正在被开发者逐渐认知。谈到测试时,大部分人都知道Web测试,对于前端JS或者后台,大部分“靠谱”的创业公司也都会用测试来保证软件质量。可是对于起步相对较晚的移动端测试,用的人并不多。

在测试方面,Android早期即存在UIAtomator和Monkey之类的测试,但是用起来实在不方便。2013年,Google开源了针对An ndroid平台的移动测试框架 – Espresso。Espresso可以针对每个页面(Activity)进行测试。开发者可以根据ID获取到页面元素,然后进行点击、长按等操作。结合Junit和Mock等工具,使得移动端测试成为可能。移动端拥有了测试框架的辅助,借助CI平台,持续交付也成为可能。

Material Design Your Android App

| Comments

14年6月26日的Google I/O大会上,Google推出了一门全新的设计语言Material Design。Material Design在随后的一年里被逐渐应用到Android, Web等平台中。Material Design的推出意味着Google对移动端和网页端设计的整合。固然没有引起轩然大波,但是Material Design却让Android开发者看到了一点福音。

虽然Android系统广受诟病,越来越多的用户投奔苹果的iOS系统。然而这阻挡不了Android的不断改进。14年Google I/O, Google推出了Android的5.0版本,代号Lollipop。5.0版本在设计上采用全新的Material Design,虽然这次升级对ROM生产商来说是道“过不去的坎儿”,但是对开发者群体而言却是一次很不错的升级。因为开发者可以凭借有些的设计资源打造出更好看的App。

Android Design - Difference Between Px Sp and Dp

| Comments

Android自兴起以来,开发者不断增加,与此同时市场上参差不齐的设备也不断增加,随之而来的则是开发者需要适配众多机型而带来的困扰与抱怨。并且随着不同厂家定制化不同的ROM,Android设备的碎片化现象日益严重。这篇文章主要讲述如何设计中严格遵从设计图标准的Android页面。

1. px, dp, sp区别

什么是px

px就是我们通常所说的像素的单位,在css里面,我们用px比较多。px主要指用户在屏幕上看到的事物的实际大小单位。

什么是dp

在看手机或者电脑参数时,我们经常说到一个关键词,屏幕分辨率(resolution),分辨率被表示成每一个方向上的像素数量,比如800x480分辨率

Setup Jenkins for Android Integration Using Docker

| Comments

About Docker

什么Docker,为什么我们要折腾Docker,而不是直接在服务器上安装运行appilication所需的各种环境呢?

这个问题的产生和为什么需要虚拟机的理由差不多,我需要让我的代码运行在一个干净的无干扰的机器上,这样能够保证代码测试运行环境的一致性,降低其他不可知因素对代码的影响。而Docker和VM虚拟机相比又有其特点,比如启动速度快,可以单独将Docker保存为镜像,上传后能够让别人使用。甚至可以直接将自己的code放在Docker中,直接将环境和代码一起交付给客户。客户只需要安装这个Docker,运行后就可以直接使用这个application了。

Develop, Ship and Run Any Application, Anywhere

Android Continuous Integration

| Comments

随着Android平台的逐渐成熟,伴随着一系列针对Android测试框架的推出,开发人员终于可以如愿以偿的在移动端的开发上进行单元测试,集成测试以及功能测试。在敏捷流程中从开发,到测试,到验收最终成为面向用户的Release版本,经历的是Story一个完整的生命周期。CI(Continuous Integration, 持续交付)在敏捷实践中也因此扮演了非常重要的角色。

如果说Web的持续集成,以及各类测试框架有一定的历史积淀了。那么Android的持续集成可以说是新鲜事物,大部分IT公司知道如何对服务器端或者Web端进行一系列自动化测试,保证其功能的正确性。而对于移动端的产品比较多的则是由测试人员组成的人肉测试。移动端的这种人工测试,无论是对测试人员,还是要经常打包并且来修复各种Bug的开发人员来说,其代价是巨大的。

Work in Dallas

| Comments

时光匆匆,算上实习期来ThoughtWorks工作已近一年。如果技术方面来看,我提升的主要是广度。但是从敏捷实践角度来看,我正在也将继续朝深度上提升。

敏捷这个词,大学期间或多或少听过,大体的印象是软件工程学的一些术语,之后在项目中才开始慢慢实践。我前后经历过三四个项目,虽然每个项目待的时间不长,但是却又想能够和不同的团队,面对不同的客户,也有幸能够在不同的国家体会不同文化下的敏捷实践的标准。

Travel to Dallas - Life

| Comments

来达拉斯已过半月,从去年的十二月份开始规划,到二月中旬过来,再到过完这边最难熬的两个星期。生活工作渐入正轨,是时候来总结下这个特别的二月。

出差