天天看点

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

网络安全实训 搭建简单的Web站点

文章目录

  • 网络安全实训 搭建简单的Web站点
    • 实验一 HTTP基础
      • 任务一:安装apache服务器 并用简单页面验证
      • 任务二:通过host文件解析名称
      • 任务三:编写HTTP客户端,使用http库检索站点的主页
      • 任务四:编写HTTP客户端以使用套接字检索站点的主页
      • 任务五:下载软件Burp Suite并访问网站查看请求与响应的信息
    • 实验二 使用PHP和Mysql搭建一个简单的站点
      • 任务一:在虚拟机中安装PHP(使用以前的Apache安装),编写一个脚本以回显URL中的参数。
      • 任务二:安装mysql服务
      • 任务三:测试运行一个简易的项目模板(有兴趣的同学大家可以一步一步仿照跟着写一下,实在来不及的可以直接解压发给大家的项目,略过编写代码的步骤,直接开始总体测试步骤)
        • 总体测试步骤

本文基于网安实验的seed虚拟机,理论上其他正常虚拟机也应当可以实现。为了保证主机能通过IP访问虚拟机,需要更改连接方式为 桥接网络,virtualbox-网络-网卡1-桥接网络,在主机上进行ping命令的访问测试以及访问外网测试

实验一 HTTP基础

任务一:安装apache服务器 并用简单页面验证

步骤 1:在虚拟机中打开terminal终端窗口,输入

sudo apt-get install apache2

输入root用户密码,即可完成安装,提问到发现新版本是否修改配置文件,选择N

步骤 2:Apache安装完成后,默认的网站根目录是”var/www/html”,在网站根目录路径下有一个index.html文件,在本机或虚拟机浏览器中输入”127.0.0.1”就可以打开该页面。

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

步骤 3:

1.cd /var/www/html

2.使用sudo gedit index.html指令打开index.html并进行编写(可自己进对应文件夹查看文件是否存在,www文件夹被隐藏,图形化界面需要ctrl+H显示被隐藏的文件,而使用terminal界面则默认可查看所有文件,如下图)

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点
网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

编写内容如下,内容随意

<html>
	<head>
		<title>hello</title>
	</head>
	<body>Hello!!!</body>
</html>
           

步骤 4:修改后在虚拟机内使用浏览器登录127.0.0.1,页面更改为新主页。

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

任务二:通过host文件解析名称

步骤 1: 在windows主机中找到hosts文件记事本打开,修改hosts文件加入虚拟机ip地址与主机名vulnerable并保存(

C:\Windows\System32\drivers\etc

)。

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

任务三:编写HTTP客户端,使用http库检索站点的主页

步骤1:windows主机中输入curl+虚拟机ip地址可查看编写的index文件内容

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

步骤2:虚拟机中输入python3 --version 查看虚拟机是否有python3.5(本次实验大家用的虚拟机已安装python2.7与python3.5版本,python3版本才是我们用的,后续我们直接使用python3命令执行文件)

步骤3:创建.py的python执行文件(新建document,用gedit进行编辑,编辑结束重命名为xxx.py)

import requests
response = requests.post("http://10.208.80.231")
print(response.content)
           
网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

任务四:编写HTTP客户端以使用套接字检索站点的主页

步骤1:在主机创建c语言程序,写入如下代码并编译。编译指令

g++ -o test .\TestC.c -lwsock32

,gcc无法编译,并且需要链接额外的库

wsock32

//TestC.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <winsock2.h>
#include <time.h>
#pragma comment(lib, "ws2_32.lib")
void ReadPage(char *host)
{
    WSADATA data;
    //winsock版本2.2
    int err = WSAStartup(MAKEWORD(2, 2), &data);
    if (err)
        return;

    //用域名获取对方主机名
    struct hostent *h = gethostbyname(host);
    if (h == NULL)
        return;

    printf(host);
    
    //IPV4
    if (h->h_addrtype != AF_INET)
        return;
    struct in_addr ina;
    //解析IP
    memmove(&ina, h->h_addr, 4);
    LPSTR ipstr = inet_ntoa(ina);

    //Socket封装
    struct sockaddr_in si;
    si.sin_family = AF_INET;
    si.sin_port = htons(80);
    si.sin_addr.S_un.S_addr = inet_addr(ipstr);
    int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    connect(sock, (SOCKADDR *)&si, sizeof(si));
    if (sock == -1 || sock == -2)
        return;

    //发送请求
    char request[1024] = "GET /?st=1 HTTP/1.1\r\nHost:";
    strcat(request, host);
    strcat(request, "\r\nConnection:Close\r\n\r\n");
    int ret = send(sock, request, strlen(request), 0);
    //获取网页内容
    FILE *f = fopen("recieved.txt", "w");
    int isstart = 0;
    while (ret > 0)
    {
        const int bufsize = 1024;
        char *buf = (char *)calloc(bufsize, 1);
        ret = recv(sock, buf, bufsize - 1, 0);
        printf(buf);
        fprintf(f, "%s", buf);
        free(buf);
    }
    fclose(f);
    closesocket(sock);
    WSACleanup();
    printf("读取网页内容成功,已保存在recieved.txt中\n");
    return;
}
int main()
{
    char str[] = "vulnerable";
    ReadPage(str);
    system("pause");
    return 0;
}

           

步骤2:执行该文件,查看网页定向是否正确

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点
值得注意的是,shell对utf-8编码有误,需要事先输入

chcp 65001

才能如图正常输出汉字,

参考链接

任务五:下载软件Burp Suite并访问网站查看请求与响应的信息

步骤 1:从https://portswigger.net/burp网站中下载Comuunity版本(需配置jdk环境)

步骤 2:对测试浏览器Chrome进行代理设置,地址设为127.0.0.1,端口修改为8888

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

步骤 3:打开Burp Suite界面,设置Proxy代理,端口改为8888 (需安装CA安全证书)

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

步骤 4:使用浏览器打开my.seu.edu.cn查看拦截情况(使用open browser按钮打开浏览器,输入网址后下图会有类似的信息,如果不是对应的地址,请点击forward/drop选择找到响应的my.seu.edu.cn的信息)

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

步骤 5:如图在该位置添加,配置与图相同

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

步骤 6:测试CSDN通过发送验证码找回密码功能,查看Request和Response功能(网站进行访问时需要点击forward按钮才能不断发送请求与接收响应,在测试CSDN之前需要对网页进行多次访问,因此可

以先关闭拦截,点击Intercept is on按钮进行关闭,在需要拦截时再打开)

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

实验二 使用PHP和Mysql搭建一个简单的站点

需要安装PHP与MySQL的相关库,由于实验一的网桥配置不完善,虚拟机无法访问外网,所以应先取消网桥再进行安装

任务一:在虚拟机中安装PHP(使用以前的Apache安装),编写一个脚本以回显URL中的参数。

例如,访问http://vulnerable/hello.php?name = xxx将返回“ Hello xxx”。

步骤 1:查询本机php版本(本机7.0),在终端中安装对应版本的依赖库,执行如下的命令来安装 PHP 7.0依赖库:

$ sudo apt install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi php7.0 libapache2-mod-php7.0
           

步骤 2:编写hello.php,使用命令sudo nautilus以管理员方式打开文件管理器,将该文件放入var/www/html,删除原来编写的index.html文件

对实验手册代码稍加修改,增加了name2以自行探索
<?php
//Get current URL
function GetCurUrl(){
	$url = 'http://';
	if(isset($_SERVER['HTTP']) && $_SERVER['HTTP'] == 'on'){
		$url = 'http://';
	}

	//judge port
	if($_SERVER['SERVER_PORT'] != 80) {
		$url .= $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'] . ':' . $_SERVER['REQUEST_URI'];
	} else {
		$url .= $_SERVER['SERVER_NAME'] . ':' . $_SERVER['REQUEST_URI'];
	}
	return $url;
}

parse_str(substr(GetCurUrl(), strpos(GetCurUrl(), '?')+1), $ar);
echo "Hello ";
print_r($ar[name]);
print_r($ar[name2]);
?>
           
访问

http://vulnerable/hello.php?name2=sss&name=qqq&name3=aaa

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点
发现可以自动识别参数类型并过滤,可以对&进行识别。具体原理由于未学习PHP相关知识,无法明白。

任务二:安装mysql服务

步骤1:install Mysql

在终端输入

sudo apt-get install mysql-server mysql-client

步骤 2:

systemctl status mysql

查看mysql状态是否启动,未激活则

systemctl start mysql

进行启动

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

步骤 3:

gedit /etc/mysql/debian.cnf

打开该文件,查看mysql为我们创建的的一个用户,找到用户名和密码

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

步骤4:然后在终端输入 mysql -u debian-sys-maint -p 然后回车输入文件里显示的密码(之后编写php文件对数据库进行访问的时候也需要这个用户名和密码才能创建与数据库的连接,大家也可以自行百度创建自己的mysql用户)

步骤5:进入mysql操作界面后,创建接下来需要使用的数据库以及相关的表

1.创建数据库和表(mysql命令以封号;结尾)

1)mysql>create database security_test;

2)mysql>show databases; 查看是否创建成功

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

3)mysql>use security_test;进入创建好的数据库

4)创建用户信息表

mysql> create table user_info(
    -> userid int not null primary key auto_increment,
    -> user_name varchar(30),
    -> user_password varchar(15),
    -> age int,
    -> address varchar(60),
	-> phone_number varchar(13));
           

5)创建用户好友列表

mysql> create table user_friends(
    -> friendid int not null primary key auto_increment,
    -> friend_name varchar(30),
    -> friend_age int,
-> friend_introduce varchar(100),
-> userid int not null);
           

6)mysql>show tables;查看表信息,

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

mysql>desc user_info;查看表字段信息

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点
网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

7)为两个表插入数据,插入格式如下,可自行多插入几条数据

mysql-> insert into user_info values (1,'Alice','passward',24,'ddr_of_Alice','123456789');
mysql-> insert into user_friends(friendid,friend_name,friend_age,friend_introduce,userid) values (1,'Boby',23,'I love Alice!',1);
           

8)查看表格信息

mysql> select * from 表名
           
网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点

任务三:测试运行一个简易的项目模板(有兴趣的同学大家可以一步一步仿照跟着写一下,实在来不及的可以直接解压发给大家的项目,略过编写代码的步骤,直接开始总体测试步骤)

总体测试步骤

步骤 1:将项目解压到apache的启动目录(/var/www/html),移除该文件夹原来编写的测试文件(自己编写的同学们略过这步处理)

步骤 2:打开项目的utils文件夹下的mysqlBase.php,核对虚拟机上的mysql用户名与密码还有数据库名称,匹配不上会导致连接失败(自己编写的同学们略过这步处理)

步骤 3:使用主机浏览器访问地址:http://vulnerable ,即可测试登录注册,修改个人信息,添加删除好友列表等等

登录界面(登录信息请选择自己写进表(user_info)的账号密码,如上述插入的bob,123456)

网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点
网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点
网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点
网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点
网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点
网络安全实训 搭建简单的Web站点网络安全实训 搭建简单的Web站点