python 创建Web Server

来源:互联网 发布:q版卡通人物制作软件 编辑:程序博客网 时间:2024/06/06 03:09

1. Web 服务应用工作机制

  • 监听80或者是443端口
    • 80为普通的http协议,443为https。
  • 等待客户端请求
    • GET、POST、HEAD… …
  • 处理请求
    • 保存文件
    • 执行CGI脚本

2. 创建一个简单的Web服务

  • 使用SimpleHTTPServer类
  • 实现do_GET()方法

  • 可以当做刺透客户端的服务端渗透代码

  • 可以做渗透测试的客户端代码

从终端进入python编辑模式,输入以下代码:

>>> >>> import SocketServer>>> import SimpleHTTPServer>>> >>> >>> httpServer = SocketServer.TCPServer(("",8888),SimpleHTTPServer.SimpleHTTPRequestHandler)>>> >>> >>> httpServer.serve_forever()

  需要导入SocketServer和SimpleHTTPServer模块,创建TCPServer的一个实例,("",8888)表示绑定本机IP和8888端口。server_forever()表示持续监听。
  打开浏览器,输入本机IP地址和端口号,查看结果:
  br
  
  浏览器列出了当前目录下的文件,再来空一下服务端的处理情况。
  ser
  
  左侧的ip和我浏览器IP不一致是因为我是用了代理,这里不多做解释。至于出现了404代码,我们来看一下浏览器地址左侧的小标志,点击查看,原因是身份未验证。
  
  err
  如果只是利用web服务列出文件列表,这就可以了。如果你想更进一步,提供不同的输出服务,例如你想不同的用户访问输出不同的结果。作为一个安全测试人员,你想查看由服务器发送的不同的参数,那么请看一下代码:
  

#!/usr/bin/env python# _*_ coding=utf-8 _*_import SocketServerimport SimpleHTTPServer#创建HTTPserver处理类,继承SimpleHTTPServerclass HttpRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):    def do_GET(self):        if self.path == '/root':            self.wfile.write('This page is only for root')            self.wfile.write(self.headers)        else:            SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)httpServer = SocketServer.TCPServer(("",8888),HttpRequestHandler)httpServer.serve_forever()

  自己写一个HTTP的处理类,并继承SimpleHTTPServer,重写do_GET()方法。运行此脚本,用浏览器访问。
  如果只输入和上面一样的地址(10.128.175.36:8888)进行访问,得到的结果依然和之前一样,但是我们10.128.175.36:8888/root访问root目录,再来看一下结果:
  difusr
  从结果上看,已经无法访问,而且后面已经dump出了http头部的详细信息。包括主机的IP和端口,user-agent,Accept等信息。

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36

  这个user-agent描述的是本机google浏览器的相关信息。对做网页爬虫,伪造http头是很有用的。
  

1 0
原创粉丝点击