开发手册 欢迎您!
软件开发者资料库

应用层

Python渗透测试应用层 - 从基本到高级概念的简单简单步骤学习Python渗透测试,其中包括简介,评估方法,网络通信入门,套接字及其方法,Python网络扫描仪,网络数​​据包嗅探,ARP欺骗,无线网络测试,应用层,客户端验证,DoS和DDoS攻击,SQLi Web攻击,XSS Web攻击。

Web应用程序和Web服务器对我们的在线状态至关重要,针对它们的攻击构成了在Internet上尝试的总攻击的70%以上.这些攻击试图将可信网站转换为恶意网站.由于这个原因,Web服务器和Web应用程序笔测试起着重要作用.

Web服务器的脚印

为什么我们需要考虑Web服务器的安全性?这是因为随着电子商务行业的快速发展,攻击者的主要目标是网络服务器.对于Web服务器测试,我们必须了解Web服务器,其托管软件和安装;操作系统以及在其上运行的应用程序.收集有关Web服务器的此类信息称为Web服务器的足迹.

在接下来的部分中,我们将讨论Web服务器足迹的不同方法.

Web服务器足迹的方法

Web服务器是专用于处理请求和服务响应的服务器软件或硬件.这是测试者在对Web服务器进行渗透测试时要关注的一个关键领域.

现在让我们讨论一些用Python实现的方法,这些方法可以用于脚印的执行. web服务器 :

测试HTTP方法的可用性

渗透测试人员的一个很好的做法是首先列出各种可用的HTTP方法.以下是一个Python脚本,借助它我们可以连接到目标Web服务器并枚举可用的HTTP方法 :

首先,我们需要导入请求库和减号;

 导入请求

导入请求库后,创建一个数组HTTP方法,我们将发送.我们将使用一些标准方法,如'GET','POST','PUT','DELETE','OPTIONS'和非标准方法'TEST'来检查Web服务器如何处理意外输入.

  method_list = ['GET','POST','PUT','DELETE','OPTIONS','TRACE','TEST' ]

以下代码行是脚本的主循环,它将HTTP数据包发送到Web服务器并打印方法和状态代码.

for method in method_list:   req = requests.request(method, 'Enter the URL’)   print (method, req.status_code, req.reason)

下一行将通过发送TRACE方法测试跨站点跟踪(XST)的可能性.

if method == 'TRACE' and 'TRACE / HTTP/1.1' in req.text:   print ('Cross Site Tracing(XST) is possible')

在为特定Web服务器运行上述脚本之后,我们将为Web服务器接受的特定方法获得200 OK响应.如果Web服务器明确拒绝该方法,我们将获得403 Forbidden响应.一旦我们发送TRACE方法测试跨站点跟踪(XST),我们将从Web服务器获得 405 Not Noted 响应,否则我们将收到消息'跨站点跟踪(XST)是可能'.

通过检查HTTP标头打印足迹

在来自Web服务器的请求和响应中都可以找到HTTP标头.它们还包含有关服务器的重要信息.这就是渗透测试人员总是对通过HTTP头解析信息感兴趣的原因.以下是一个Python脚本,用于获取有关Web服务器标头的信息 :

首先,让我们导入请求库 :

import requests

我们需要向Web服务器发送GET请求.以下代码行通过请求库发出简单的GET请求.

request = requests.get('enter the URL')

接下来,我们将生成您需要信息的标题列表.

header_list = [   'Server', 'Date', 'Via', 'X-Powered-By', 'X-Country-Code', ‘Connection’, ‘Content-Length’]

接下来是try和except块.

for header in header_list:   try:      result = request.header_list[header]      print ('%s: %s' % (header, result))   except Exception as err:      print ('%s: No Details Found' % header)

在为特定Web服务器运行上述脚本后,我们将获取有关标题列表中提供的标题.如果没有特定标题的信息,则会显示"未找到详细信息"消息.您还可以从链接中了解有关HTTP_header字段的更多信息 -   https://www.it1352.comhttps://www.tutorialspoint.com/http/http_header_fields.htm .

测试不安全的Web服务器配置

我们可以使用HTTP头信息来测试不安全的Web服务器配置.在下面的Python脚本中,我们将使用try/except块来测试不安全的Web服务器标头,以查找以文本文件名 websites.txt :

import requestsurls = open("websites.txt", "r")for url in urls:   url = url.strip()   req = requests.get(url)   print (url, 'report:')      try:      protection_xss = req.headers['X-XSS-Protection']      if protection_xss != '1; mode = block':      print ('X-XSS-Protection not set properly, it may be possible:', protection_xss)   except:      print ('X-XSS-Protection not set, it may be possible')         try:      options_content_type = req.headers['X-Content-Type-Options']      if options_content_type != 'nosniff':      print ('X-Content-Type-Options not set properly:', options_content_type)   except:      print ('X-Content-Type-Options not set')         try:      transport_security = req.headers['Strict-Transport-Security']   except:      print ('HSTS header not set properly, Man in the middle attacks is possible')         try:      content_security = req.headers['Content-Security-Policy']      print ('Content-Security-Policy set:', content_security)   except:      print ('Content-Security-Policy missing')

Footprintin g Web应用程序

在上一节中,我们讨论了Web服务器的足迹.同样,从渗透测试人员的角度来看,Web应用程序的足迹也被认为是重要的.

在接下来的部分中,我们将了解Web应用程序足迹的不同方法. .

Web应用程序足迹的方法

Web应用程序是一个客户端 - 服务器程序,由客户端在Web服务器中运行.这是测试人员在进行Web应用程序渗透测试时要关注的另一个关键领域.

现在让我们讨论用Python实现的不同方法,这些方法可用于脚印. web应用程序 :

使用解析器收集信息BeautifulSoup

假设我们要从网页收集所有超链接;我们可以使用名为BeautifulSoup的解析器.解析器是一个Python库,用于从HTML和XML文件中提取数据.它可以与 urlib 一起使用,因为它需要一个输入(文档或url)来创建一个汤对象,它不能自己获取网页.

首先,让我们导入必要的包.我们将导入urlib和 BeautifulSoup .记住在导入BeautifulSoup之前,我们需要安装它.

  import urllib  from bs4 import BeautifulSoup

下面给出的Python脚本将收集网页和超链接的标题 :

现在,我们需要一个变量,它可以存储URL网站.在这里,我们将使用名为'url'的变量.我们还将使用 page.read()功能,该功能可以存储网页并将网页分配给变量 html_page .

url = raw_input("Enter the URL ")page = urllib.urlopen(url)html_page = page.read()

html_page 将被指定为创建汤对象的输入.

  soup_object = BeautifulSoup(html_page)

以下两行将分别打印标签名称和标签.

  print soup_object.title  print soup_object.title.text

代码行如下所示将保存所有超链接.

for link in soup_object.find_all('a'):   print(link.get('href'))

横幅抓取

横幅就像一条短信,其中包含有关se的信息rver和banner grabbing是获取横幅本身提供的信息的过程.现在,我们需要知道如何生成此横幅.它由发送的数据包的标头生成.当客户端尝试连接到端口时,服务器会响应,因为标头包含有关服务器的信息.

以下Python脚本有助于使用套接字编程和减号抓取横幅;

import sockets = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket. htons(0x0800))targethost = str(raw_input("Enter the host name: "))targetport = int(raw_input("Enter Port: "))s.connect((targethost,targetport))def garb(s:)   try:      s.send('GET HTTP/1.1 \r\n')      ret = sock.recv(1024)      print ('[+]' + str(ret))      return   except Exception as error:      print ('[-]' Not information grabbed:' + str(error))      return

运行上面的脚本后,我们将得到类似的有关标题的信息HTTP标头足迹的Python脚本s在上一节中.