文章目录:
作者的github资源:
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。网站目前可以访问,后续应该会关闭,初学者可以试试,但切勿破坏。
一.常用术语
常用术语包括:
安全分享及漏洞库网站推荐:
安全测试集相关网站推荐:
在线分析或沙箱平台推荐:
安全技术会议推荐:
安全学术会议推荐:
OWASP top 10 测试标准是安全招聘的常见问题,也是渗透测试的经典标准,详见参考文献2。
OWASP(开放式Web应用程序安全项目)的工具、文档、论坛和全球各地分会都是开放的,对所有致力于改进应用程序安全的人士开放,其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结了Web应用程序最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应会的知识。 1.注入injection 将不安全的命令发送给解析器,产生类似于SQL注入、NoSQL注入、OS注入和LDAP注入的缺陷。攻击者可以构造恶意数据通过注入缺陷的解析器执行没有权限的非预期命令或访问数据。 2.失效的身份认证 通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者暂时或永久的冒充其他用户的身份。 3.敏感数据泄露 通常敏感信息包括密码、财务数据、医疗数据等,由于Web应用或API未加密或不正确的保护敏感数据,这些数据极易遭到攻击者利用。由于未加密的信息极易遭到破坏和利用,因此我们应该加强对敏感数据的保护,Web应用应该在传输数据、存储数据以及浏览器交互数据时进行加密,保证数据安全。 4.外部实体 XXE XXE全称为XML External Entity attack,即XML外部实体注入攻击,早期或配置错误的XML处理器评估了XML文件外部实体引用,攻击者可以利用这个漏洞窃取URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。 5.失效的访问控制 通过身份验证的用户,可以访问其他用户的相关信息。攻击者可以利用这个漏洞去查看未授权的功能和数据,如访问用户的账户、敏感文件、获取和正常用户相同的权限等。 6.安全配置错误 安全配置错误是比较常见的漏洞,由于操作者的不当配置,导致攻击者可以利用这些配置获取更高的权限,安全配置错误可以发生在各个层面,包含平台、web服务器、应用服务器、数据库、架构和代码。 7.跨站脚本攻击 XSS 当应用程序的网页中包含不受信任的、未经恰当验证、转义的数据,或使用HTML、JavaScript的浏览器API更新现有网页时,就会出现XSS漏洞,跨站脚本攻击是最普遍的Web应用安全漏洞,甚至在某些安全平台都存在XSS漏洞。它会执行攻击者在浏览器中的脚本,并劫持用户会话,破坏网站或用户重定向到恶意站点,使用XSS甚至可以执行拒绝服务攻击。 8.不安全的反序列化 它可以导致远程代码执行、重放攻击、注入攻击或特权升级攻击。 9.使用含有已知漏洞的组件 组件(如库、框架或软件模块)拥有应用程序相同的权限,如果应用程序中含有已知漏洞,攻击者可以利用漏洞获取数据或接管服务器。同时,使用这些组件会破坏应用程序防御,造成各种攻击产生严重的后果。 10.不足的日志记录和监控 这个和等保有一定的关系,不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性的或攻击更多的系统,以及对数据的不当操作。
渗透测试(Penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。
这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。
换句话说,渗透测试是渗透人员在不同的位置(比如内网、外网)利用各种手段对某个特定网络进行测试,以发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告,可以清晰知晓系统中存在的安全隐患和问题。
渗透测试流程包括:
渗透测试是通过模拟恶意黑客的攻击,来评估计算机网络系统安全的一种评估方法。渗透测试主要分为黑盒测试和白盒测试两种方式。不同的人有不同的框架,这里i春秋的YOU老师将渗透技术划分为信息收集、外网入口、权限提升与维持、内网渗透四部分。推荐大家关注i春秋~
信息收集包括技术信息收集、人员信息收集、组织信息收集。其中人员和组织信息收集可以通过公开情报收集领域知识实现,比如电话诈骗、商业JD、社会工程学等利用人员弱点识别。由于安全的本质是人与人之间的对抗(攻击者vs防御者),所以就会涉及人员信息和组织信息。
我们重点关注技术信息收集部分,识别一个网站或服务器存在哪些技术漏洞、弱点。技术信息收集包括:
外网入口表示从外部网络进入内部网络的通道。外网入口讲究“见缝插针,伺机而动”,涉及内容包括:
举个例子,某小偷想进入公司进行盗窃,小偷怎么进入公司呢?可以通过门、窗或通风管道。同样,在虚拟网络中,如果你想从外界互联网中进入公司内部网络,你也需要找到相应的通道。
对于一个公司网络来说,它对外的通道有哪些呢?第一个是Web服务器,即大家访问的网站;接着是V*N服务器和邮箱服务器;手机APK逆向能找到手机APP与哪些服务进行交互;WIFI接口表示家庭无线网络同时连接手机和电脑时,它们共同组成了一个内部局域网,而附近的人能搜索到该WIFI网络并爆破其密码,从而植入恶意代码;最后是其他知识。
外网入口涉及技术弱点识别,核心技术及作者的相关博客如下,接下来我会分享安全技术大佬推荐。
权限维持与提升讲究“明修栈道,暗度陈仓”,具体技术包括:
巩固权限之后,我们就开始进行内网渗透。
什么是内网?比如大家连在同一个WIFI下,就可以称为内网。换句话说,从外部网络不能直接访问的网络就称之为内网。比如,在公司文件服务器搭建了一些资源,外部互联网的人是不能直接访问这些资源的。
接着我们来看一张网络拓扑图,最常见的企业网络。由图可知,一个企业网络对外通常会存在一个防火墙,防火墙中有个路由器,路由器接入很多电脑,包括三块区域(DMZ区、核心业务区、办公区),DMZ区放置一些对安全性不高的服务器,比如邮件、门户网站服务器等;核心业务区存放企业核心数据库、OA系统、ERP系统;办公区是企业员工办公网络。
假设现在一名白帽子需要攻击测试这个内部网络,想直接访问核心业务区的数据库是不可能的,而公司在DMZ区提供了对外的Web服务器,能够让你直接在互联网里面访问。
总之,兵无常势,水无常形。Web渗透测试中,信息收集是关键,占据绝大部分工作。而且它们不一定按照信息收集、外网入口、权限维持与提升、内网渗透的顺序执行,会根据具体情况而变化。
选择目标
攻击方法
该案例均是授权情况下进行的渗透测试,切勿进行非法渗透或攻击。
由该网络拓扑图可知,正常访问时会通过CDN(内容分发转网络)、WAF(应用防护系统)等安全软件,从而过滤并保护我们企业的网络安全。白帽子需要想一个办法:能不能让我们的访问不经过CDN和WAF呢?
答案是可以的。
如果你是一名安全初学者,你需要先学会搭建环境和相关基础,然后再一步一个脚印的学习进步,下面介绍环境配置相关知识。
安装详见前文 “虚拟机VMware+Kali安装入门及Sqlmap基本用法”。
注意,虚拟机有个快照功能可以帮助我们迅速恢复之前的状态。
虚拟机网络配置在右下角位置。
如果想要虚拟机上网,通常我们会选择“Net模式”,让它自动获取IP即可。
也可以设置自定义模式。
如何在虚拟机中搭建网站,让外网能够访问呢? 选择“桥接模式”,直接连接物理网络,复制物理网络连接状态,此时在同一个网段进行访问。这里在虚拟机中搭建一个网站,其虚拟机IP地址为192.168.0.104,如下图所示。
此时物理机通过IP地址可以直接访问该虚拟机中搭建好的网站,注意端口号为99。
那么,又怎么通过外网访问呢? 接着需要配置迅捷网络的路由器,点击“高级用户”->“虚拟服务器”映射IP。设置虚拟服务器,添加一个HTTP协议的服务器,IP地址为192.168.0.104,端口号为99。
此时,当外网访问本机物理IP地址时,就会跳转访问虚拟机中搭建的网站。其本机物理IP地址为182.46.195.40。
外网访问的最终结果如下图所示,也推荐大家搭建网站进行渗透测试。
PS:后续随着教程深入会分享如何搭建网站以及域名解析。
(1) HTTP(明文)和HTTPS(密文) HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,是万维网交换信息的基础,允许将HTML文档从Web服务器传送到Web浏览器。
HTTP协议是基于TCP/IP协议之上的应用层协议,它是一个客户端和服务器端请求和应答的标准。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。下图是HTTP协议的原理图,通常包括两部分:
推荐文章:HTTP协议超级详解 - 爱文飞翔
HTTPS(全称Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础下加入SSL层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要SSL。
HTTPS 存在不同于HTTP的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。如果你足够细心,你会发现现在很多大型互联网网站,如百度、淘宝、腾讯很早就已经把HTTP换成HTTPS了。
(2) 响应码 很多目录扫描工具就是通过HTTP响应码来判断页面是否存在。200、302、403、404、500都是常见的响应码。
(3) URL 在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址。
URL由三部分组成:资源类型、存放资源的主机域名、资源文件名;也可认为由4部分组成:协议、主机、端口、路径。URL的一般语法格式如下,方括号为可选项。
protocol :// hostname[:port] / path / [parameters][?query]#fragment
例如“www.eastmount.com/admin/index.html”,某些情况下,它是伪静态网页,虽然看似HTML文件,但存在数据库交互。常见的动态网站编写脚本包括:
(4) HTTP Header HTTP消息头是指在超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的那些组件。HTTP消息头用来准确描述正在获取的资源、服务器或者客户端的行为,定义了HTTP事务中的具体操作参数。这里以Python获取消息头为例:
# -*- coding:utf-8 -*-
import urllib
import webbrowser as web
url = "http://www.baidu.com
content = urllib.urlopen(url)
print content.info() #头信息
print content.geturl() #请求url
print content.getcode() #http状态码
#保存网页至本地并通过浏览器打开
open("baidu.html","w").write(content.read())
web.open_new_tab("baidu.html")
该段调用调用urllib.urlopen(url)函数打开百度链接,并输出消息头、url、http状态码等信息,如下图所示。
一方面分析HTTP头对网站渗透非常重要;另一方面它也存在安全隐患,在PHP中通常会使用 _SERVER[“HTTP_CLIENT_IP”] 或者 _SERVER[“HTTP_X_FORWARDED_FOR”] 来获取IP。因此,可以通过修改HTTP头中的X-Forwarder-For:、client-ip:来进行攻击。例如:
(5) BurpSuite抓包分析 Burpsuite是用于攻击web应用程序的集成平台,包含了许多工具。Burpsuite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。通常利用Burpsuite抓包分析,寻找Web漏洞。
(6) GET传参和POST传参区别
HTTP请求方法还包括:GET、POST、OPTIONS、PUT、MOVE、DELETE、TRACE。下图采用BurpSuite抓取POST请求参数。
注意,错误配置HTTP方法可能导致的安全事件。服务器存在允许PUT方式和MOVE方式,这时我们可以通过PUT方式传入一个webshell.txt,然后通过MOVE方式结合解析漏洞很快地拿到网站的Webshell。
(7) WAF Web应用防护系统(Web Application Firewall,简称 WAF)也称为:=网站应用级入侵防御系统。Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。推荐作者前文“文件上传漏洞之绕狗一句话原理和绕过安全狗”。
防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。
安全狗以SECaaS安全即为用户提供一站式的云安全产品与服务,包括(云)主机安全、WEB应用安全、网站防篡改、抗DDoS云服务、安全大数据态势感知等。其基本功能包括:
绕狗一句话木马:
<?php
$a='b';
$$a='assert';
$b($_POST[fox]);
?>
常见网站搭建包括ASP网站搭建、Java网站SSH搭建、PHP网站搭建 ,比如phpStudy、WAMP/LAMP。
它的优势是可以切换各种PHP版本。
IIS网站搭建也是非常基础的知识,这里推荐大家阅读作者相关文章实验部分。
一个聪明的安全工程师,是需要熟悉常见的CMS框架的。 内容管理系统(content management system,CMS)是一种位于WEB 前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员使用内容管理系统来提交、修改、审批、发布内容。这里指的“内容”可能包括文件、表格、图片、数据库中的数据甚至视频等一切你想要发布到Internet、Intranet以及Extranet网站的信息。
常见CMS如下:
写到这里,上部分网络安全基础知识就介绍完毕,下一篇文章将分享Windows基础知识及DOS命令。上部分主要的知识点包括:
写到这里,这篇文章就介绍结束了,希望对您有所帮助。下面简单总结每题知识点。