Python安全实践——PythonHacking第6章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第六章 Python Web渗透测试
第六章 Python Web渗透测试
6.2.2 旁站查询 运行在同一服务端上的两个不同的网站A和B,A与B互
称为旁站。在对某个特定网站进行入侵时,由于其安全性较 高找不到着手点,则可以查看其所在的服务端上是否还有其 他的网站,如果有则可以用这些网站作为突破口。本小节通 过爬取Sameip网站(网址为http://www.sameip.org/)的查询结 果来实现旁站查询的功能。
的一个分布式数据库,可以更方便地访问互联网。DNS信息 收集将通过DNS服务端收集关于目标的记录,这些记录可以 作为渗透的入口点。常见的记录类型有SOA(授权记录)、 NS(服务端名称)、AAAA(IPv6地址记录)、A(IPv4地址记录)、 MX(邮箱交换记录)、CNAME(别名记录)等。表6-1给出了常 见的几种DNS信息收集方式。
(3) 应用系统渗透测试:对组成的Web应用的各种应用 程序,如JSP、ASP、PHP、CGI等进行渗透测试。
(4) 网络设备渗透测试:对防火墙、IDS等网络安全设 备进行渗透测试。
第六章 Python Web渗透测试
6.1.2 渗透测试的步骤 Web渗透测试并不是一个随意攻击的过程,往往是有一 定的攻击目标,通常要经历以下5个步骤: (1) 信息收集。信息收集分析是所有网络攻击入侵的前 提。Web攻击发生前,攻击者必定对攻击目标进行细致的信 息获取工作,通过对网络信息的收集和分析,制定相对应的 渗透测试计划。信息收集的方法主要包括DNS域名服务、 Whois服务、Nslookup、Ping、Tracert等信息查询。
第六章 Python Web渗透测试
1. robots.txt robots.txt是一个纯文本文件,一般放在网站的根目录下。
网站管理者可以通过它来声明该网站中不想被robots访问的 部分。当一个搜索蜘蛛(搜索机器)访问一个站点时,它会首 先检查该站点的根目录下是否存在robots.txt,若存在,则按 照文件中的内容确定搜索范围。一般可以通过http://你的网 址/robots.txt的方式来查看一个网站中的robots.txt。
程中,测试人员根据对测试系统掌握的情况不同,可采取两 种不同的渗透方法,分别是白盒测试和黑盒测试。
第六章 Python Web渗透测试
1. 白盒测试 白盒测试是指测试人员利用前期委托方所提供的与测试 系统相关的所有信息资产材料进行的测试行为。测试人员可 以获得被测试系统的详细信息,如网络地址段、使用的网络 协议、拓扑图、应用列表甚至源代码。白盒测试更多地被应 用于审核内部信息管理机制,测试人员可以利用掌握的资料 进行内部探查,甚至与企业的员工进行交互。对于发现现有 管理机制漏洞以及检验社交工程攻击可能性来说,白盒测试 具有非凡的意义。
第六章 Python Web渗透测试
6.2.3 子域名暴力破解 在进行信息收集时经常会收集目标网站的子域名,每一
条子域名都相当于为渗透提供了一个潜在的入口。相关的域 名收集方法包括通过特定网站(比如netcraft)进行查询,使用 网络空间搜索引擎(比如Zoomeye)进行搜索暴力破解等。本 小节将介绍如何通过暴力破解来收集子域名。
第六章 Python Web渗透测试
暴力破解是一种比较古老但是有效的攻击手法,其原理 是通过对特定字典的穷举来达到获得密码或者类似信息的目 的。暴力破解的关键在于有一个良好的字典和一个高效的穷 举算法。字典的获得途径有很多,比如可以通过网络引擎进 行搜索,或者使用现有工具中的字典。github上也有各种各 样的字典库。本小节不提供特定的字典,读者可以通过上述 途径去寻找字典,然后完成暴力破解脚本的编写。
第六章 Python Web渗透测试
渗透测试过程中,根据被测试的目标的不同又可将渗透 测试分为:
(1) 操作系统渗透测试:对Windows、Linux、Solaris、 IBM AIX等不同的操作系统本身进行渗透测试。
(2) 数据库系统渗透测试:对Oracle、Sybase、DB2、 Access、MySQL等数据库应用系统进行渗透测试。
第六章 Python Web渗透测试
6.2.5 路径暴力破解 在Web交互式信息收集过程中经常会对目标网站进行路
径暴力破解,这可以使渗透者进一步的了解目标网站的结构。 路径暴力破解主要技术包括使用字典进行路径暴力破解和使 用爬虫对网站路径进行爬取以及两者的结合。其中将字典路 径暴力破解与爬虫相结合的路径暴力破解方式效率最高,设 计的难度较高,需要设计爬虫的爬取策略等。
第六章 Python Web渗透测试
因为本小节代码使用了pydns包,所以在编写代码前先 要将其安装,代码如下:
pip install pydns
除上述脚本外,以下工具也可以用于子域名信息的收集, 如表6-2所示。
第六章 Python Web渗透测试
第六章 Python Web渗透测试
6.2.4 敏感文件 对于文件泄露,根据泄漏信息的敏感程度,它在Web漏
洞中可以算是中危甚至高危的漏洞。通常将一些易受攻击的 文件定义为敏感文件。敏感文件中包含很多敏感信息,有的 只是导致一些无法被外网连接的内网账户信息或者数据库连 接信息泄露,但也可能导致公司重要的商业秘密或程序源代 码被他人窃取,管理员账户被控制或者数据库泄露等,从而 造成巨大的损失。在本小节中,将简单介绍以下三种敏感文 件。
(2) allow-access-from元素用于授权发出请求的域从目 标域中读取数据。它可以通过使用通配符(*),为多个域设 置访问权限。
第六章 Python Web渗透测试
(3) allow-access-from-identity元素根据加密凭据授予权 限。
(4) allow-http-request-headers-from元素用于授权发出请 求的域中的请求文档将用户定义的标头发送到目标域。
图6-1所示是一个网站的跨域策略文件。
第六章 Python Web渗透测试
图6-1 crossdomain.xml示例
第六章 Python Web渗透测试
3. WEB-INF/web.xml WEB-INF是Java的Web应用的安全目录。所谓安全就是 客户端无法访问,只有服务端可以访问的目录。如果想在页 面中直接访问其中的文件,必须通过web.xml文件对要访问 的文件进行相应映射才能访问。WEB-INF主要包含以下文 件或目录: (1) /WEB-INF/web.xml:Web 应用程序配置文件,描述 了 Servlet 和其他的应用组件配置及命名规则。 (2) /WEB-INF/classes/:包含了站点所有的class文件, 包括Servlet class和非Servlet class,但它们不能包含在 .jar文 件中。
第六章 Python Web渗透测试
(3) /WEB-INF/lib/:存放Web应用需要Baidu Nhomakorabea各种Jar文件, 放置仅在这个应用中要求使用的 Jar 文件, 如数据库驱动Jar 文件。
(4) /WEB-INF/src/:源代码目录,按照包名结构放置各 个Java文件。
(5) /WEB-INF/database.properties:数据库配置文件。
robots.txt文件中的记录通常以一行或者多行User-agent 开始,后面加上若干的Disallow和Allow,有时也会添加其 他参数属性,用法如表6-3所示。
第六章 Python Web渗透测试
第六章 Python Web渗透测试
2. crossdomain.xml 跨域就是指需要的资源不在自己的域服务器上,需要访 问其他域服务器。跨域策略文件crossdomain.xml是一个 XML文档文件,主要是为Web客户端(如Adobe Flash Player 等)设置跨域处理数据的权限。使用该文件时需将其放置在 网站根目录下,其作用是定义该域名下面的xml文件、json 文件、m3u8文件是否允许其他网站的flashplayer来访问。
第六章 Python Web渗透测试
第六章 Python Web渗透测试
6.1 Web渗透测试基础 6.2 Web信息收集 6.3 口令凭证攻击 6.4 本地文件包含(LFI) 6.5 跨站脚本攻击(XSS) 6.6 SQL注入攻击
第六章 Python Web渗透测试
6.1 Web渗透测试基础
6.1.1 渗透测试分类 在利用渗透测试方法对Web应用程序进行安全测评的过
第六章 Python Web渗透测试
(2) 扫描。信息收集完成后,就可以对网络目标进行有 针对性的扫描,扫描结果将影响针对目标的渗透方法和手段。 一般通过端口扫描就可以确定一个系统的基本信息,比如通 过对目标地址的TCP/UDP端口扫描,可以确定其所开放的 服务数量和类型。
(3) Web攻击。在信息收集和扫描结束后,对得到的信 息进行分析后就可以确定攻击的方式。常见的Web应用的攻 击方式有SQL注入、跨站脚本攻击、文件包含漏洞、客户端 请求伪造等。
第六章 Python Web渗透测试
2. 黑盒测试 当测试人员对测试系统大部分信息不了解时,测试人员 会采用黑盒测试方法。黑盒测试意味着测试人员在对目标系 统一无所知的状态下进行测试工作,目标系统对测试人员来 说就像一个“黑盒子”。除了知道目标的基本范围之外,所 有的信息都依赖测试人员自行发掘。而目标系统往往会开启 监控机制对渗透过程进行记录,以供测试结束后分析。也就 是说,虽然黑盒测试的范围比较自由和宽泛,但是仍需要遵 循一定的规则和限制。黑盒测试能够很好地模拟真实攻击者 的行为方式,让用户了解自己系统面对外来攻击者的真实安 全情况。
(5) 消除痕迹。作为一次完整的Web攻击,需要在攻击 成功后消除攻击痕迹。比如在系统的审计日志、Web的访问 记录、防火墙的监控日志等中消除攻击痕迹。
第六章 Python Web渗透测试
6.2 Web信息收集
6.2.1 DNS信息收集 DNS(Domain Name System)是将域名和IP地址相互映射
第六章 Python Web渗透测试
(1) site-control元素用于定义当前域的元策略。元策略 是用于指定可接受的域策略文件,且该文件不同于目标域根 元素(名为crossdomain.xml)中的主策略文件。如果客户端收 到指示使用主策略文件以外的策略文件,则该客户端必须首 先检查主策略的元策略,以确定请求的策略文件是否获得许 可。
第六章 Python Web渗透测试
(4) 植入后门。攻击者攻击成功后,为了方便下一次进 入并控制目标主机,一般会放置一些后门程序(Webshell)与 网站服务端Web目录下的正常网页文件混在一起,然后使用 浏览器访问后门,达到控制网站服务端的目的。Webshell一 般是以ASP、PHP、JSP或者CGI等网页文件形式存在的一种 命令执行环境。
第六章 Python Web渗透测试
在Java的Servlet 文档中,提到WEB-INF目录包含了所有 Web应用会用到但是不处于Web路径中的资源。也就是说, WEB-INF目录下的内容是不属于公开页面的,但是可以通 过getResource等API在Servlet的上下文中访问到这些资源。 通常,开发者会把许多JSP文件:Jar包、Java的类文件放在 该目录下。一般目录的内容都是可以预测的,可以通过 web.xml文件推测应用组件相关类的名字,然后在src目录下 查找代码,如果没有源代码,那么可以直接下载class文件反 编译即可。
第六章 Python Web渗透测试
crossdomain.xml需严格遵守XML语法,有且仅有一个 根节点cross-domain-policy,且不包含任何属性。crossdomain-policy元素是跨域策略文件crossdomain.xml的根元素。 它只是一个策略定义的容器,没有自己的属性。在此根节点 下只能包含如下的子节点: site-control、allow-access-from、allow-access-from-identity、 allow-http-request-headers-from。
相关文档
最新文档