陳志偉
(福建林業(yè)職業(yè)技術(shù)學(xué)院 自動(dòng)化工程系,福建 南平 353000)
隨著網(wǎng)絡(luò)技術(shù)和信息安全技術(shù)的不斷深度融合發(fā)展,每天有大量的數(shù)據(jù)信息往來于互聯(lián)網(wǎng),獲取這些數(shù)據(jù)信息變得越來越便捷的同時(shí),存在其中的某些敏感數(shù)據(jù)會(huì)因Web系統(tǒng)本身的漏洞或者弱點(diǎn)而被泄漏,這將給社會(huì)或公眾帶來潛在危害.由此,進(jìn)行網(wǎng)絡(luò)安全滲透測試系統(tǒng)的設(shè)計(jì)[1],開發(fā)出具有高可靠性、低成本和長生命周期等優(yōu)點(diǎn)的系統(tǒng)[2],以此為平臺(tái)測試發(fā)現(xiàn)網(wǎng)站頁面可能存在的安全漏洞,并給出應(yīng)對(duì)措施.
J2EE是在SUN公司的引領(lǐng)和推動(dòng)下,召集多家公司技術(shù)人員協(xié)同合作而制定出的一套企業(yè)級(jí)應(yīng)用程序開發(fā)規(guī)范,該規(guī)范采用分層設(shè)計(jì)思想,為搭建具有高復(fù)用、高擴(kuò)展、松耦合的應(yīng)用系統(tǒng)提供了良好的技術(shù)支持.
圖1 SSM框架劃分系統(tǒng)層次
SSM作為經(jīng)典的模型(M)—視圖(V)—控制器(C)框架,將系統(tǒng)劃分為持久化(Persistence)層、數(shù)據(jù)訪問(DAO)層、業(yè)務(wù)(Service)層和Web表現(xiàn)層,如圖1.
網(wǎng)絡(luò)安全滲透測試系統(tǒng)設(shè)計(jì)按“區(qū)”劃分,主要分為測試(題目)區(qū)、功能區(qū)和推薦區(qū).從具體各區(qū)功能的實(shí)現(xiàn)角度出發(fā),對(duì)測試區(qū)、功能區(qū)和推薦區(qū)設(shè)計(jì)作如下說明:
1.2.1 測試區(qū) 提供進(jìn)行安全滲透測試的平臺(tái),用來發(fā)現(xiàn)可疑的網(wǎng)站頁面弱點(diǎn)并給出應(yīng)對(duì)措施.部署有腳本測試模塊、注入測試模塊、上傳測試模塊、綜合測試模塊等,是系統(tǒng)的核心功能所在.圖2是系統(tǒng)的核心——測試(題目)區(qū)功能模塊劃分情況.
1.2.2 功能區(qū) 負(fù)責(zé)對(duì)登錄測試人員的記錄.首先要確認(rèn)測試人員的有效身份,通過登錄攔截器類LoginInterceptor獲取并判斷Session中是否有此用戶數(shù)據(jù),對(duì)不符合條件的給出提示信息.
1.2.3 推薦區(qū) 定期收集、整理當(dāng)下網(wǎng)絡(luò)安全、滲透測試新技術(shù)等,并及時(shí)發(fā)布公告.
圖2 測試區(qū)模塊
系統(tǒng)配置:運(yùn)行內(nèi)存為4GB;固態(tài)硬盤為100 GB;數(shù)據(jù)庫服務(wù)器為Mysql-8.0.12-winx64;Web服務(wù)器為Apache-tomcat-8.0.53;JDK版本為Java(TM) SE Runtime Environment (build 1.8.0_181-b13).
本系統(tǒng)前端頁面使用Bootstarp和jQuery框架完成頁面功能的展示,后端則通過J2EE和SSM框架整合來實(shí)現(xiàn)系統(tǒng)的前后端分離設(shè)計(jì)[3].
Spring框架為開發(fā)設(shè)計(jì)人員提供了注入和面向切面的支持.MyBatis框架通過XML或注解形式進(jìn)行配置,在實(shí)體類和SQL語句間建立關(guān)聯(lián),以便實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、查詢、修改和刪除等操作[4].
數(shù)據(jù)持久化是將內(nèi)存中的數(shù)據(jù)模型轉(zhuǎn)換為存儲(chǔ)模型以及將存儲(chǔ)模型轉(zhuǎn)換為內(nèi)存中數(shù)據(jù)模型的統(tǒng)稱[5],該系統(tǒng)設(shè)計(jì)的持久化類包括:用戶持久化類(User)和數(shù)據(jù)字典持久化類(BaseDict),如表1、表2所示.
表1 系統(tǒng)用戶表
表2 數(shù)據(jù)字典表
從圖2可以看出測試(題目)區(qū)為本系統(tǒng)的核心,下面主要介紹該區(qū)的實(shí)現(xiàn):
首先,創(chuàng)建持久化類,在edu.czw.core.po包中,創(chuàng)建登錄用戶和數(shù)據(jù)字典持久化類.其次,實(shí)現(xiàn)DAO層,創(chuàng)建用戶DAO層接口和映射文件UserDao接口,接著創(chuàng)建一個(gè)與接口同名的映射文件;創(chuàng)建數(shù)據(jù)字典DAO層接口映射文件BasicDicDao,然后創(chuàng)建一個(gè)與接口同名的映射文件.再次,實(shí)現(xiàn)Service層,創(chuàng)建數(shù)據(jù)字典和用戶的Service層接口,并創(chuàng)建這兩個(gè)接口對(duì)應(yīng)的實(shí)現(xiàn)類BaseDicServiceImpl和UserServiceImpl.最后,實(shí)現(xiàn)Controller層,在edu.czw.core.web.controller包中,創(chuàng)建用戶控制器類UserController.其中,引入分頁標(biāo)簽文件Page.java用于實(shí)現(xiàn)分頁,部分代碼如下:
try {
// 計(jì)算總頁數(shù)
int pageCount = page.getTotal() / page.getSize();
if (page.getTotal() % page.getSize() > 0) {
pageCount++;
}
writer.print("
String homeUrl = append(url,"page",1);
String backUrl = append(url,"page",pageCount);
// 顯示“上一頁”按鈕
if (page.getPage() > 1) {
String preUrl = append(url,"page",page.getPage() - 1);
preUrl = append(preUrl,"rows",page.getSize());
writer.print("
");writer.print("
");}
// 顯示“下一頁”按鈕
if (page.getPage() < pageCount) {
String nextUrl = append(url,"page",page.getPage()+1);
nextUrl = append(nextUrl,"rows",page.getSize());
writer.print("
");writer.print("
");}
writer.print("");
} catch (IOException e) {
e.printStackTrace();
}
假冒(counterfeit),也稱偽裝、冒充,是一種欺騙或繞過系統(tǒng)登陸驗(yàn)證的手段.一旦系統(tǒng)被冒充者登陸,就會(huì)造成越權(quán)侵犯行為,給系統(tǒng)安全和數(shù)據(jù)信息安全造成威脅.
分析網(wǎng)站頁面查找可能的滲透點(diǎn)→發(fā)現(xiàn)疑似假冒的弱點(diǎn)→利用該弱點(diǎn)傳遞/修改參數(shù)→獲取Key值證實(shí)漏洞存在→給出應(yīng)對(duì)措施.
進(jìn)入頁面http://ncd3.zugencd.eqo/dcug1_cd841f990g5c41762fhf82h4g760c7gd/kpfgz.php,發(fā)現(xiàn)Cookies中有一個(gè)鍵值是Login=0,懷疑是可以用于假冒滲透測試的弱點(diǎn),傳遞或修改參數(shù)Login=1,由此思路編寫腳本進(jìn)行滲透:
import requests
ym= ' http://ncd3.zugencd.eqo/dcug1_cd841f990g5c41762fhf82h4g760c7gd/kpfgz.php'
r = requests.post(ym,cookies={"Login":"1"})
r.encoding = 'utf8'
print(r.text)
運(yùn)行上述腳本,得到Key值證實(shí)存在安全漏洞,如圖3.
圖3 滲透得到Key
用戶可通過IE瀏覽器“隱私”選項(xiàng),將隱私設(shè)置為完全禁止以阻止Cookie記錄信息,也可對(duì)網(wǎng)站設(shè)置禁止使用Cookies進(jìn)行編輯,再有就是養(yǎng)成定期清除Cookies的習(xí)慣.
綜上,使用框架技術(shù)在提升設(shè)計(jì)人員開發(fā)Web系統(tǒng)效率的同時(shí),也有助于系統(tǒng)呈現(xiàn)更好的伸縮性、擴(kuò)展性和可維護(hù)性[6].本文運(yùn)用SSM、Bootstarp、jQuery等技術(shù),面向當(dāng)前主流的Web滲透測試需要,設(shè)計(jì)實(shí)現(xiàn)了該滲透測試系統(tǒng)的主要功能.