安全测试基本知识入门

 

1引言

1.1为什么要学习安全测试以及什么是安全测试

  为了安全、有效的进行权限控制、不能随意提交数据进行修改、避免跨站式脚本的攻击。

  安全测试:提供证据表明,在面对敌意和恶意的时候,应用仍能充分满足它的需求。

1.2什么是web应用及基础

  Web应用:一切使用HTTP进行通信的软件。

1.3 安全测试的类型

类型

简单描述

失效的身份验证机制

只对首次传递的Cookie加以验证,程序没有持续对Cookie中内含信息验证比对,攻击者可以修改Cookie中的重要信息以提升权限进行网站数据存取或是冒用他人账号取得个人私密资料(测试对象:可以进行传参的URL,提交请求页面,登录后的Cookie)

会话管理劫持

检测Web应用程序会话机制是否存在安全隐患,能否被非法利用(会话劫持,伪装成合法用户)而影响Web应用程序的安全。

SQL注入

注入攻击漏洞,这些攻击发生在当不可信的SQL语句作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。

XPath注入

XPath注入攻击是指利用XPath 解析器的松散输入和容错特性,能够在URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知识的情况下,通过XPath查询得到一个XML文档的完整内容。

XSS跨站脚本攻击

恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。

CSRF跨站请求伪造

攻击者通过调用第三方网站的恶意脚本来伪造请求,在用户不知情的情况下,攻击者强行递交构造的具有“操作行为”的数据包。(测试对象:网页中可进行输入的表单)

不安全的直接对象引用

在具有导出/下载功能的页面参数中修改内容,WEB服务器便会导出/下载程序源代码或者指定文件(测试对象:URL中有用户参数的地址,可以进行下载操作的地址)或者当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙, 就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控这些引用去访问未授权数据

安全配置错误

Config中的链接字符串以及用户信息,邮件,数据存储信息等都需要加以保护,如果没有进行保护,那么就是安全配置出现了问题。

不安全的加密存储

未对需要保护的数据进行加密或者加密算法太弱都是不安全的加密存储

没有限制URL访问

系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击者能够很容易的就伪造请求直接访问未被授权的页面(测试对象:需要身份验证的页面)

传输层保护不足

在身份验证过程中没有使用SSL/TLS,因此暴露传输数据和会话ID,被攻击者截听。它们有时还会使用过期或者配置不正确的证书。(测试对象:登录模块)

未验证的重定向(redirectUrl)和转发

攻击者可以引导用户访问他们所要用户访问的站点。而最终造成的后果,重定向会使得用户访问钓鱼网站或是恶意网站。

敏感信息泄露

许多Web应用程序没有正确保护敏感数据,如信用卡、税务ID和身份验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡诈骗、身份窃取或其他犯罪。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。

功能级访问控制缺失

大多数Web应用程序的功能在UI页面显示之前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。

使用含有已知漏洞的组件

组件,比如:库文件、框架和其他软件模块,几乎总是以全部的权限运行。如果使用含有已知漏洞的组件,这种攻击可以造成更为严重的数据丢失或服务器接管。应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,并使一系列可能的攻击和影响成为可能。危害比较严重

缓冲区溢出

当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。

LDAP注入

利用LDAP注入技术的关键在于控制用于目录搜索服务的过滤器。使用这些技术,攻击者可能直接访问LDAP目录树下的数据库,及重要的公司信息。情况还可能比这更严重,因为许多应用的安全性依赖于基于LDAP目录的单点登录环境。

篡改输入

利用一些命令或者工具等篡改一些字段的值,从而达到恶意的效果。例如,篡改商品的单价和数量等。


2渗透测试

2.1 内容简介

 

渗透测试必要性:利用网络安全扫描器、专用安全测试工具以及人工经验对网络中的核心服务器及重要的网络设备,包括模拟黑客对服务器、网络设备、防火墙等设备进行非破坏性质的渗透。

目的是侵入系统并获取机密信息并将入侵的过程和细节产生报告给用户。

2.2 环境安装

2.2.1下载Kali Linux

Kali是由Offensive Security团队设计的一款渗透测试操作系统。它是继承BackTrack Linux发行版,预装了Debian Linux的工具。

打开官网,选择对应虚拟机下的镜像文件进行下载,如图:

 

下载地址如下:

https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-hyperv-image-download/

2.2.2 kali Linux与Backtrack区别

Kali Linux就是Backtrack的升级版。Kali默认账号:root 密码:toor(账号反过来写)

2.2.3 安装kali Linux && 全屏显示kali Linux

 

更多基本命令,如下链接:

http://blog.csdn.net/u010953692/article/details/54604325

在官网下载的kali linux OVA一键安装包,放到指定路径,然后打开VM VirtualBox,选择管理->导入虚拟电脑,选择指定路径下的OVA安装包,进行默认安装,如图:

 

安装地址如下:

https://jingyan.baidu.com/article/454316ab70941bf7a7c03adb.html

PS:在安装完全后,点击开启,系统会报错,需要进行USB设备禁用掉,再次开启就可以正常进入系统了

 

2.2.4 比较好用的软件平台

乌云网:http://www.anquan.us/

漏洞盒子:https://www.vulbox.com/

360网站安全检测:http://webscan.360.cn/

其他:appsans、axws

2.3 渗透测试步骤

渗透测试步骤主要分4个:侦察->扫描->漏洞利用->维持访问

 

2.4 渗透测试类型

2.4.1 白盒测试

白盒测试也称为白帽测试,是指渗透测试者在拥有客户组织所有知识的情况下进行测试。

2.4.2 黑盒测试

黑盒测试,是指模拟一个对客户组织一无所知的攻击者所进行的渗透测试。

2.5 渗透测试实战流程图

如下为xxx公司安全测试工程师做的流程图如下:

信息的收集和分析伴随着每一个渗透测试步骤,每一个步骤有三个组成部分:操作、响应、结果分析。

 

3侦察

3.1内容简介

侦察即信息收集,典型的侦察策略包含主动侦察和被动侦察。

主动侦察:与目标系统的直接交互,但在这个过程中,目标系统可能会记录下我们的IP地址及活动。

被动侦察:则利用从网上获取的海量信息。

3.2侦察工具

3.2.1网址复制机:HTTrack

HTTrack是一款工具,将整个网站逐页复制下来,能够创建与目标网站完全相同的脱机副本。复制的内容包含原始网站所有的网页、链接、图片和代码。

windows下安装:http://www.httrack.com

Kali linux下安装:apt-get install webhttrack(或sudo apt-get install webhttrack)

如图:

http://kali:8080/server/index.html

 

3.2.2 The Harvester:挖掘并利用邮箱地址

The Harvester是一款用于侦察的优秀工具。

用于搜索对应网站的电子邮箱、子域名、主机。theharvester用于调用这个工具,-d用来指定目标的域名,-l用来限定返回的搜索结果的数目,-b用来指定将要搜索的公共知识库,可以选择Google、Bing、PGP、LinkedIn

命令如下:theharvester -d syngress.com -l 10 -b google

 

3.2.3 Whois

收集与目标相关的额外信息。Whois服务,用来查询域名的IP以及所有者等信息的传输协议。可以获取与目标相关的具体信息,包括IP地址或公司DNS主机名以及地址和电话号码等联系信息。

命令:whois syngress.com

 

网页版:

https://shop.whois.com/domain-registration/index.php

 

 

3.2.4 Netcraft

输入域名,进行输入,它将能模糊查询所有的相关网站。点击查看site report,可以查看目标网站的IP地址、web服务器的操作系统及DNS服务器。

 

  

3.2.5 host工具

Host工具指将IP地址翻译成主机名。Kali linux内置了该工具,通过命令去执行即可。

命令中使用:host baidu.com或host IP,如图:

  

 

Man host:是host的帮助指令

 3.2.6 从DNS中提取信息:NS Lookup、Dig

Nslookup 常用命令:http://www.t086.com/article/5138

使用host、nslookup确定目标公司(syngress.com)的电子邮件服务器

 

其次还有其他方法,比如google指令、从电子邮箱中提取信息、MetaGooFil、社会工程学、筛选信息以寻找可攻击的目标。

侦察的结果就是:整理出一个简易的列表,用来集中记录收集到的IP地址。

4扫描

4.1内容简介

扫描分阶段进行:系统是否正在运行->扫描系统的端口->扫描系统中的漏洞

4.2 ping扫描

Ping扫描是一种特定类型的网络数据包,称为ICMP数据包。

Ping用于给计算机或网络设备上的某些特殊接口发送特定类型的网络流量,这种特定类型的网络流量叫做ICMP回显请求数据包(ICMP Echo Request packet).

 

 

比如字节=32表示发送的数据包的大小;

时间=38ms表示告诉我们数据包到目标往返一趟花费的时间;

TTL=55表示是个生存时间值,它用来限定数据包自动终止前可以经历的最大跳数。

在Linux中,执行ping扫描最简单的方法就是使用FPing。

命令:fping -a -g 172.16.45.1 172.16.45.254>host.txt

-a表示在输出中只显示活动主机;

-g表示用于指定我们想要扫描的IP范围,开始IP和结束IP。

>重定向地址,且重定向到指定地址host.txt

  

4.3 端口扫描

端口扫描的目的是为了识别在我们的目标系统上哪些目标端口是开启的,以及哪些端口是启用的。使用Nmap进行端口扫描。

Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。

最简单的端口扫描,命令:nmap 127.0.0.1(针对本机进行扫描),如图:

 

 

4.3.1 使用Nmap进行TCP连接扫描

域名:scanme.nmap.org

命令:nmap -sT -p- -PN 14.104.82.184

-sT表示:nmap目前连接的是TCP连接扫描。

-s表示:nmap要运行哪种类型的扫描。

-T用来执行一个TCP连接类型扫描。

-p-表示nmap要扫描所有的端口,而不只是默认的1000个端口。

-PN表示跳过主机发现阶段,对所有地址进行扫描。如图:

 

 

对一个IP范围进行扫描:nmap -sT -p- -PN 14.104.82.184-254

对不连续的IP进行文件创建:nmap -sT -p- -iL IpAdressPath

4.3.2 使用Nmap进行SYN扫描

命令:nmap -sS -p- -PN 172.16.45.135

-sS:表示nmap运行的是SYN扫描而不是TCP连接扫描。

4.3.3 使用Nmap进行UDP扫描

命令:nmap -sUV 172.16.45.135

-V表示:添加版本扫描信息

4.3.4 使用Nmap进行Xmas扫描

命令:nmap -sX -p- -PN 172.16.45.135

4.3.5 使用Nmap进行Null扫描

命令:nmap -sN -p- -PN 172.16.45.135 

4.4 漏洞扫描

Nessus工具

5漏洞利用

5.1内容简介

漏洞利用:获得系统控制权限的过程。

5.2 密码破解:John the Ripper

密码破解分2个步骤:

  1. 定位并下载目标系统的密码散列文件
  2. 利用工具将散列(加密过)的密码转化为明文密码

  

 

基本概念:

在Linux上,用户名/密钥方面的详细信息存储在下面这两个文件中:

/etc/passwd(密码文件存放点)
/etc/shadow(散列存放点)

http://blog.csdn.net/yaofeino1/article/details/54616440

john、unshadow命令:

adduser happy :创建一个用户happy,密码为chess

Unshadow /etc/passwd /etc/shadow  > ~/file_to_crack  输出结果进行重定向到/etc/shadow

/usr/share/john/password.lst(John随带的密码列表路径)

 john --wordlist=/usr/share/john/password.lst ~/file_to_crack (使用了密码列表)

john ~/file_to_crack

5.3 密码重置:破墙而入

./chntpw -i /mnt/sdal/WINDOWS/system32/config/SAM

-i:表示以交互模式运行该程序,并可以选择你想要重置的用户。

/mnt/sdal/WINDOWS/system32/config/SAM:目标计算机上所挂载的包含SAM文件的目录。

Sdal不是必备的,有时候需要fdisk -l可以确定挂载的驱动器是否正确。

5.4 利用Medusa获得远程服务的访问权限

命令:

medusa -h target_ip -u username -P path_to_password_dictionary -M    authentication_server_to_attck

Medusa:目的是启动暴力破解程序

-h:指定目标IP

-u:置顶用户名,如果是用户名列表,修改为-U

-p:用来指定一个密码,-P:指多个密码的完整列表

-M:用来指定我们想要攻击的服务

https://www.cnblogs.com/Te7m/p/5938441.html

5.5 泛洪攻击交换机:macof

Macof -i eth0 -s 172.16.45.123 -d 172.16.45.2

-i:用来指定计算机的网卡,即网卡

-s:用来指定来源地址

-d:用来指定目的地或目标攻击对象

5.6 自动化漏洞攻击:Fast-Track Autopwn

Fast-track是一个工具,原理:先对端口进行扫描,然后根据扫描到的信息,向目标系统发送所有已知或可能匹配的漏洞攻击程序。

5.7 Metasploit

对目标计算机发起攻击的备忘单:

  1. 启动Metasploit:/pentest/exploits/framework3/msfconsole
  2. 输入“search”命令,搜索漏洞攻击程序: search missing_patch_number
  3. 输入“use”命令,选择所需要的漏洞攻击程序:

use exploid_name_and_path_as_shown_in_2a

  1. 输入“show payloads”命令,显示可用的攻击载荷:show payload
  2. 输入“set”命令,选择攻击载荷:set payload path_to_payload_as_shown_in_4a
  3. 输入“show options”,查看对目标进行漏洞攻击之前需要设置的所有选项:show options
  4. 输入“set”,对F)进行设置
  5. 输入“exploit”命令,对目标发起漏洞攻击:exploit

6 基于web的漏洞利用

6.1 内容简介

6.2 Nikto:扫描web服务器

Nikto是一个web服务器漏洞扫描工具。Nikto与perl配套使用。

Kali linux内置Nikto

kali linux路径:/pentest/scanners/nikto

输出所有可用的参数:Perl nikto.pl

Perl nikto.pl -h 172.16.45.129 -p 1-1000

参数-h:指定IP地址;参数-p:指定端口号

Kali linux自带nikto工具,直接使用即可:nikto -h ipaddress -p port

6.3 Websecurify:自动化的web扫描

一个工具,输入IP地址,然后就可以进行扫描了。Websecurify提供了一个易操作的界面,包括SQL注入、跨站脚本、文件包含、跨站请求伪造等。

6.4 网络爬虫:抓取目标网站

与目标WEB服务器进行交互的工具是webscarab,可从OWASP网站进行下载。它是一个强大的框架,模块化的,允许用户加载大量的插件。当nikto和websecurify完成漏洞扫描后,下一步逻辑步骤:在目标网站上运行网络爬虫程序。

6.5 使用WebScarab拦截请求

Webscarb是一个非常强大的工具,充当代理服务器只是它的功能之一。

如下代理配置:

 

 

6.6 代码注入攻击

注入攻击可以用于任何目的,包括绕过认证、操纵数据、查看敏感数据,甚至在远程主机上执行命令。注入攻击主要是:提交、发送、操纵用户驱动的输入的数据。最经典的例子是SQL注入。

如:select * from users where uname=’admin’and pwd=’’ or 1=1--

--:是一个程序注释符

6.7 跨站脚本:轻信网站的浏览器

跨站脚本:XSS,是一个将脚本程序注入web应用程序中的过程。

比如:<script>alert(“XSS Test”)</script>

基于DOM的跨站脚本攻击,客户端攻击、会话管理、源代码审计等。

存在2种类型:非持久化的跨站脚本攻击和持久化的跨站脚本攻击。

反射型:非持久,一般为一个url,需要用户单击,在url中参数传入

持久型:常存在于评论等交互中,常见于<textarea>这种标签,可用于挂马钓鱼渗透等

 

实践平台:OWASP的webGoat项目

7后门和劫持

7.1 内容简介

7.2 netcat:瑞士军刀

Netcat是一个允许通信和网络流量从一台计算机流向另一台计算机的工具。

7.3 netcat神秘的家庭成员:cryptcat

Cryptcat使用twofish对客户端和服务器端的机密流量进行加密。

7.4 netbus:一款经典的工具

Netbus:客户端和服务器端。服务器端需要安装在目标计算机上,客户端用来连接、控制目标计算机。

7.5 rootkit

运行rootkit可以隐藏文件、进程、甚至是程序。

7.6 rookit的检测和防御

8 渗透测试报告

渗透测试报告:综合报告、详细报告、原始数据

猜你喜欢

转载自www.cnblogs.com/wendyw/p/12312185.html