網絡安全實訓 搭建簡單的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”就可以打開該頁面。

步驟 3:
1.cd /var/www/html
2.使用sudo gedit index.html指令打開index.html并進行編寫(可自己進對應檔案夾檢視檔案是否存在,www檔案夾被隐藏,圖形化界面需要ctrl+H顯示被隐藏的檔案,而使用terminal界面則預設可檢視所有檔案,如下圖)
編寫内容如下,内容随意
<html>
<head>
<title>hello</title>
</head>
<body>Hello!!!</body>
</html>
步驟 4:修改後在虛拟機内使用浏覽器登入127.0.0.1,頁面更改為新首頁。
任務二:通過host檔案解析名稱
步驟 1: 在windows主機中找到hosts檔案記事本打開,修改hosts檔案加入虛拟機ip位址與主機名vulnerable并儲存(
C:\Windows\System32\drivers\etc
)。
任務三:編寫HTTP用戶端,使用http庫檢索站點的首頁
步驟1:windows主機中輸入curl+虛拟機ip位址可檢視編寫的index檔案内容
步驟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)
任務四:編寫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:執行該檔案,檢視網頁定向是否正确
值得注意的是,shell對utf-8編碼有誤,需要事先輸入
chcp 65001
才能如圖正常輸出漢字,
參考連結
任務五:下載下傳軟體Burp Suite并通路網站檢視請求與響應的資訊
步驟 1:從https://portswigger.net/burp網站中下載下傳Comuunity版本(需配置jdk環境)
步驟 2:對測試浏覽器Chrome進行代理設定,位址設為127.0.0.1,端口修改為8888
步驟 3:打開Burp Suite界面,設定Proxy代理,端口改為8888 (需安裝CA安全證書)
步驟 4:使用浏覽器打開my.seu.edu.cn檢視攔截情況(使用open browser按鈕打開浏覽器,輸入網址後下圖會有類似的資訊,如果不是對應的位址,請點選forward/drop選擇找到響應的my.seu.edu.cn的資訊)
步驟 5:如圖在該位置添加,配置與圖相同
步驟 6:測試CSDN通過發送驗證碼找回密碼功能,檢視Request和Response功能(網站進行通路時需要點選forward按鈕才能不斷發送請求與接收響應,在測試CSDN之前需要對網頁進行多次通路,是以可
以先關閉攔截,點選Intercept is on按鈕進行關閉,在需要攔截時再打開)
實驗二 使用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
發現可以自動識别參數類型并過濾,可以對&進行識别。具體原理由于未學習PHP相關知識,無法明白。![]()
網絡安全實訓 搭建簡單的Web站點網絡安全實訓 搭建簡單的Web站點
任務二:安裝mysql服務
步驟1:install Mysql
在終端輸入
sudo apt-get install mysql-server mysql-client
步驟 2:
systemctl status mysql
檢視mysql狀态是否啟動,未激活則
systemctl start mysql
進行啟動
步驟 3:
gedit /etc/mysql/debian.cnf
打開該檔案,檢視mysql為我們建立的的一個使用者,找到使用者名和密碼
步驟4:然後在終端輸入 mysql -u debian-sys-maint -p 然後回車輸入檔案裡顯示的密碼(之後編寫php檔案對資料庫進行通路的時候也需要這個使用者名和密碼才能建立與資料庫的連接配接,大家也可以自行百度建立自己的mysql使用者)
步驟5:進入mysql操作界面後,建立接下來需要使用的資料庫以及相關的表
1.建立資料庫和表(mysql指令以封号;結尾)
1)mysql>create database security_test;
2)mysql>show databases; 檢視是否建立成功
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;檢視表資訊,
mysql>desc user_info;檢視表字段資訊
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 表名
任務三:測試運作一個簡易的項目模闆(有興趣的同學大家可以一步一步仿照跟着寫一下,實在來不及的可以直接解壓發給大家的項目,略過編寫代碼的步驟,直接開始總體測試步驟)
總體測試步驟
步驟 1:将項目解壓到apache的啟動目錄(/var/www/html),移除該檔案夾原來編寫的測試檔案(自己編寫的同學們略過這步處理)
步驟 2:打開項目的utils檔案夾下的mysqlBase.php,核對虛拟機上的mysql使用者名與密碼還有資料庫名稱,比對不上會導緻連接配接失敗(自己編寫的同學們略過這步處理)
步驟 3:使用主機浏覽器通路位址:http://vulnerable ,即可測試登入注冊,修改個人資訊,添加删除好友清單等等
登入界面(登入資訊請選擇自己寫進表(user_info)的賬号密碼,如上述插入的bob,123456)