国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的滲透測(cè)試輔助系統(tǒng)開(kāi)發(fā)

2018-02-26 08:11呂汝勛龍華秋容振邦
關(guān)鍵詞:有效載荷漏洞筆記

◆呂汝勛 龍華秋 容振邦

?

基于Python的滲透測(cè)試輔助系統(tǒng)開(kāi)發(fā)

◆呂汝勛 龍華秋 容振邦

(五邑大學(xué)計(jì)算機(jī)學(xué)院 廣東 529020)

近年來(lái),網(wǎng)絡(luò)安全事件頻頻爆出,安全問(wèn)題成為整個(gè)社會(huì)關(guān)注的重點(diǎn)。滲透測(cè)試是通過(guò)模擬惡意黑客的攻擊方法,來(lái)評(píng)估計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)安全的一種評(píng)估方法。CToolkit是一款基于Python開(kāi)發(fā)的滲透測(cè)試輔助系統(tǒng),使用Flask框架構(gòu)建web服務(wù),由三大功能模塊組成:資產(chǎn)整理、漏洞利用、筆記,主要實(shí)現(xiàn)了主機(jī)開(kāi)放端口及服務(wù)信息的收集。已知web應(yīng)用漏洞的利用,以及測(cè)試過(guò)程中的有用信息記錄,涵蓋了滲透測(cè)試的幾個(gè)重要的步驟,能切實(shí)提高滲透測(cè)試的工作效率。

Python;滲透測(cè)試;輔助;Flask

0 引言

身處互聯(lián)網(wǎng)+時(shí)代,互聯(lián)網(wǎng)及IT產(chǎn)業(yè)發(fā)展速度空前,眾多優(yōu)秀的軟件產(chǎn)品如雨后春筍般涌現(xiàn),但是,高速發(fā)展的機(jī)遇往往伴隨著巨大的挑戰(zhàn),近年來(lái)頻頻爆出的網(wǎng)絡(luò)安全事件影響及危害極其重大,WannaCry的勒索病毒等一系列網(wǎng)絡(luò)安全事件,彰顯著當(dāng)前社會(huì)的網(wǎng)絡(luò)安全環(huán)境的不容樂(lè)觀,網(wǎng)絡(luò)安全問(wèn)題已經(jīng)成為了整個(gè)社會(huì)所關(guān)注的頭等大事。

滲透測(cè)試是通過(guò)模擬攻擊來(lái)評(píng)估網(wǎng)絡(luò)系統(tǒng)安全的一種方法,能有效地預(yù)防大多數(shù)網(wǎng)絡(luò)安全事件的發(fā)生。由于已知漏洞種類(lèi)繁多,而未知漏洞還在逐日增長(zhǎng),為每個(gè)漏洞準(zhǔn)備一個(gè)單獨(dú)的工具,會(huì)嚴(yán)重影響滲透測(cè)試的工作效率,安全工作者亟需一個(gè)揉合多種滲透測(cè)試工具的系統(tǒng),提高滲透測(cè)試的效率。

1 系統(tǒng)設(shè)計(jì)

一次滲透測(cè)試過(guò)程,根據(jù)目標(biāo)的復(fù)雜性不同,需要多種方法進(jìn)行嘗試,為了方便滲透測(cè)試工作的進(jìn)行,將為本系統(tǒng)設(shè)計(jì)以下三個(gè)重要的功能模塊:資產(chǎn)整理、漏洞利用、隨手筆記。

1.1資產(chǎn)整理

資產(chǎn)整理是針對(duì)目標(biāo)網(wǎng)絡(luò)主機(jī)的信息收集,探測(cè)并記錄主機(jī)開(kāi)放的端口及服務(wù),信息收集作為滲透測(cè)試的第一步,端口及開(kāi)放服務(wù)信息是滲透測(cè)試過(guò)程中的重要突破口,資產(chǎn)整理功能模塊用以收集主機(jī)及其對(duì)應(yīng)端口服務(wù)信息。

1.2漏洞利用

漏洞利用是利用已知的應(yīng)用漏洞,對(duì)目標(biāo)Web應(yīng)用可能存在的利用點(diǎn)進(jìn)行檢測(cè)與利用,檢測(cè)并成功利用漏洞,是滲透測(cè)試出報(bào)告的重要憑據(jù),根據(jù)Web應(yīng)用基于HTTP協(xié)議的通性,修改該協(xié)議的內(nèi)容可達(dá)到對(duì)Web應(yīng)用系統(tǒng)進(jìn)行漏洞檢測(cè)與利用的目的,漏洞利用功能模塊用以利用已知漏洞對(duì)目標(biāo)應(yīng)用發(fā)起攻擊利用。

1.3隨手筆記

隨手筆記是在記錄滲透測(cè)試過(guò)程中有用信息的模塊,針對(duì)手動(dòng)測(cè)試過(guò)程中發(fā)現(xiàn)的多種潛在可利用線(xiàn)索進(jìn)行記錄(包括圖片與文字),需要隨時(shí)做好筆記,方便更深入檢測(cè)工作的進(jìn)行,隨手筆記功能模塊用以記錄滲透測(cè)試過(guò)程中的零碎記憶。

測(cè)試工作開(kāi)始,首先對(duì)目標(biāo)主機(jī)進(jìn)行端口掃描收集服務(wù)開(kāi)放信息,再根據(jù)收集到的信息測(cè)試可能存在的漏洞,而整個(gè)測(cè)試過(guò)程中持續(xù)時(shí)間比較長(zhǎng),偶爾會(huì)有新的線(xiàn)索需要及時(shí)記錄,則使用隨手筆記模塊記錄零碎記憶。

2 具體實(shí)現(xiàn)

系統(tǒng)是基于Python3.5開(kāi)發(fā)的,使用Flask的web應(yīng)用框架,遵守RESTful的應(yīng)用接口規(guī)范,以mongodb作為數(shù)據(jù)庫(kù),redis做消息隊(duì)列結(jié)果存儲(chǔ)及命令行標(biāo)準(zhǔn)輸出的緩存,整個(gè)系統(tǒng)具有良好的穩(wěn)定性與便利性。

2.1資產(chǎn)整理

對(duì)于不同的滲透測(cè)試項(xiàng)目,需為其新建一個(gè)新的以項(xiàng)目命名的Project,在每個(gè)項(xiàng)目中可以建立掃描任務(wù)Task,可以同時(shí)掃描多個(gè)網(wǎng)段、多個(gè)主機(jī),每個(gè)Task的掃描強(qiáng)度也分為高中低三等(對(duì)應(yīng)不同的詳細(xì)程度),對(duì)每個(gè)Project和Task進(jìn)行增刪查操作時(shí)都是直接與對(duì)應(yīng)的RESTFUL(ProjectAPI和TaskAPI)進(jìn)行交互。

(1)應(yīng)用接口

資產(chǎn)整理模塊使用了兩個(gè)API,ProjectAPI與TaskAPI。其中,ProjectAPI是創(chuàng)建、獲取、刪除項(xiàng)目的接口,TaskAPI是創(chuàng)建、獲取、刪除任務(wù)的接口,工作流程如下圖1所示。

圖1 資產(chǎn)整理

(2)異步任務(wù)處理

對(duì)目標(biāo)網(wǎng)絡(luò)主機(jī)進(jìn)行掃描并收集信息需要持續(xù)一段相當(dāng)長(zhǎng)的時(shí)間,在這里使用了python的celery消息隊(duì)列工具,可以將長(zhǎng)時(shí)間的運(yùn)行程序轉(zhuǎn)移到Flask之外進(jìn)行處理,使用redis作為中間人在celery與flask之間傳遞消息,工作流程如下圖2。

圖2 消息隊(duì)列

在輸入目標(biāo)主機(jī)并提交之后,flask首先從post請(qǐng)求中提取出參數(shù),并在給celery發(fā)送一個(gè)創(chuàng)建任務(wù)的指令,celery會(huì)在后臺(tái)默默運(yùn)行新的任務(wù)并返回任務(wù)創(chuàng)建成功的響應(yīng),前端每間隔一段時(shí)間會(huì)通過(guò)ajax向后臺(tái)請(qǐng)求任務(wù)狀態(tài),任務(wù)完成或失敗則會(huì)更新任務(wù)的狀態(tài)。

(3)調(diào)用Nmap

Nmap是一款免費(fèi)的、開(kāi)源的網(wǎng)絡(luò)探測(cè)和網(wǎng)絡(luò)安全評(píng)估工具,在滲透測(cè)試中,通常用于掃描目標(biāo)網(wǎng)絡(luò)主機(jī)的端口服務(wù)開(kāi)放信息。在本項(xiàng)目中,將通過(guò)python的subprocess模塊創(chuàng)建子進(jìn)程并運(yùn)行Nmap,掃描過(guò)程的標(biāo)準(zhǔn)輸出及時(shí)緩存到redis中,完成后返回掃描結(jié)果的文件路徑:

@celery.task()

defrun_nmap(target, task_id, level):

if not os.path.exists('/tmp/nmap-output'):

os.makedirs('/tmp/nmap-output')

cmds = [

'nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 {} -oX {}',

'nmap -v --open --system-dns -Pn --script=banner,http-title --min-hostgroup 1024 --min-parallelism 1024 {} -oX {}',

'nmap -v -p 1-65535 --open --system-dns -P0 --script=banner,http-title --min-hostgroup 1024 --min-parallelism 1024 {} -oX {}',]

path = '/tmp/nmap-output/{}.xml'.format(task_id)

cmd = cmds[level].format(target, path)

stdout = ''

withPopen(cmd.split(' '), stdout=PIPE) as p:

for line in p.stdout:

stdout+=line.decode('utf-8')

redis_store.hset('task_stdout', task_id, stdout)

ifp.returncode != 0:

raiseCalledProcessError(p.returncode, p.args)

return {'path':path}

2.2 漏洞利用

根據(jù)不同種類(lèi)、不同版本的Web應(yīng)用進(jìn)行分類(lèi),在每個(gè)分類(lèi)(Vulnerability)里對(duì)應(yīng)有保存的漏洞利用方式,通過(guò)修改HTTP協(xié)議的參數(shù)對(duì)存在漏洞的目標(biāo)Web應(yīng)用發(fā)起攻擊利用,可以自行增加、修改、刪除不同功能的Payload(有效載荷),并通過(guò)有效載荷對(duì)存在漏洞的目標(biāo)Web應(yīng)用進(jìn)行測(cè)試與利用,所有操作直接與RESTful API(VulnAPI)進(jìn)行交互。

(1)應(yīng)用接口

漏洞利用模塊使用的API是VulnAPI。VulnAPI是創(chuàng)建、獲取、刪除Web應(yīng)用分類(lèi)、漏洞利用方式的接口,工作流程如下圖3所示。

圖3 漏洞利用

在分類(lèi)Vulnerability可以自定義添加,在每個(gè)分類(lèi)里有對(duì)應(yīng)的漏洞Payload(有效載荷),其中包括可自定義的目標(biāo)URL、HTTP頭部信息、Proxy代理選項(xiàng),Payload(有效載荷)可以自行增加、修改、刪除不同功能的Payload(有效載荷),可以對(duì)存在漏洞的目標(biāo)Web應(yīng)用進(jìn)行測(cè)試與利用,所有操作直接與RESTful API(VulnAPI)進(jìn)行交互。

(2)操作HTTP

在漏洞利用模塊中,核心是實(shí)現(xiàn)對(duì)HTTP流量的高度自定義化,能夠修改HTTP協(xié)議的可控參數(shù)并對(duì)目標(biāo)發(fā)起請(qǐng)求,利用已知Web應(yīng)用漏洞的利用方式,對(duì)有效載荷進(jìn)行存儲(chǔ)和測(cè)試,達(dá)到有效整合各種Web漏洞利用工具的效果[8]。其中,操作HTTP協(xié)議的部分,將使用Python的第三方模塊Requests實(shí)現(xiàn),通過(guò)自定義已知web漏洞的有效載荷,模擬一個(gè)瀏覽器客戶(hù)端對(duì)服務(wù)端發(fā)起http請(qǐng)求,并將返回響應(yīng)結(jié)果的原始數(shù)據(jù),根據(jù)響應(yīng)值判斷是否存在漏洞:

from .parsers import vuln_put_parser

import requests

args = vuln_put_parser.parse_args()

# headers

headers = {

'user-agent': args.user_agent,

'cookie':args.cookie,

'Content-Type':args.content_type}

try:

ifargs.method == 'get': # get

r = requests.get(…)

ifargs.method == 'post': # post

r = requests.post(…)

ifargs.method == 'file': #fileupload

files = json.loads(args.payload)

data = [files[name], files['content']]

r = requests.post(…,files=data,…)

exceptBaseException as e:

return {'content':'request error: '+str(e)}

return {'content':r.content, 'headers':r.headers}

2.3 隨手筆記

隨手筆記Note使用Wysiwyg(所見(jiàn)即所得)編輯器作為每一篇文章(筆記)編輯和展示的核心,本項(xiàng)目采用Summernote在線(xiàn)編輯器,能直接迅速編輯各類(lèi)格式的文字以及粘貼截圖,保證記憶記錄的及時(shí)性。并且,所有增刪查改操作都與RESTful API(NoteAPI)交互完成。

(1)應(yīng)用接口

隨手筆記模塊使用的API是NoteAPI。NoteAPI是創(chuàng)建、刪除、獲取、修改文章(筆記)的接口,工作流程如下圖4所示。

圖4 隨手筆記

(2)遞歸操作

每一篇文章都可以擁有子節(jié)點(diǎn)(文章),可以實(shí)現(xiàn)無(wú)限遞歸添加子節(jié)點(diǎn),每篇文章最多只能含有一個(gè)父節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的文章都可以編輯刪除和添加子節(jié)點(diǎn),編輯文章時(shí)可以實(shí)現(xiàn)實(shí)時(shí)保存到數(shù)據(jù)庫(kù),所有增刪查改操作都與RESTful API(NoteAPI)交互完成。遞歸操作大部分是前端Javascript完成的,結(jié)合使用Vue.js前端框架,以添加新文章節(jié)點(diǎn)為例,通過(guò)Vue.js的自定義組件遞歸添加節(jié)點(diǎn):

varnoteList = {

name: 'note-list',

template: '{note_list_html_source}',

props: ['note'],

methods: {

add_new_note: function(){

...

$.ajax({

url: '/api/note/'+that.note.note_id,

type: 'post',

data: {title: app.newNote},

success: function(data){ that.note.children.push(data) },

});},}}

var app = new Vue({

el: '#panel',

components:{ 'note-list': noteList },

methods:{

add_new_note: function(){

var that = this;

$.ajax({

...

success: function(data){

that.notes.push(data)

that.newNote = ''; },

});}}})

3 功能測(cè)試

3.1創(chuàng)建掃描任務(wù)

在系統(tǒng)中創(chuàng)建新的項(xiàng)目,并在對(duì)應(yīng)項(xiàng)目中輸入主機(jī)名或IP地址創(chuàng)建掃描任務(wù),創(chuàng)建的任務(wù)并發(fā)進(jìn)行,可以看到對(duì)應(yīng)任務(wù)的狀態(tài)以及結(jié)果,如下圖5所示。

圖5 掃描任務(wù)

3.2 s2-016漏洞利用

輸入必填與選填參數(shù)之后,可以對(duì)目標(biāo)web應(yīng)用發(fā)起http請(qǐng)求,并附上自定義的payload(有效載荷)進(jìn)行漏洞測(cè)試,以存在s2-016反序列化漏洞的虛擬環(huán)境,測(cè)試有效載荷時(shí)選用了執(zhí)行系統(tǒng)命令“cat /etc/passwd”,測(cè)試的返回結(jié)果如下圖6所示。

圖6 執(zhí)行命令

3.3 編輯文章

根據(jù)標(biāo)題創(chuàng)建文章之后,可以根據(jù)summernote提供的格式,編輯文字及圖片,以添加超鏈接與直接粘貼圖片為例,如下圖7所示。

圖7 編輯文章

4 結(jié)束語(yǔ)

本文詳細(xì)介紹了一款基于Python的滲透測(cè)試輔助系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。其設(shè)計(jì)使用了Flask的Web應(yīng)用框架,并結(jié)合了RESTful的設(shè)計(jì),后期也可以輕松實(shí)現(xiàn)功能擴(kuò)展。同時(shí),創(chuàng)新地使用了Celery任務(wù)隊(duì)列,實(shí)現(xiàn)了異步任務(wù)的穩(wěn)定運(yùn)行。項(xiàng)目總共實(shí)現(xiàn)了三大基本功能模塊:資產(chǎn)整理、漏洞利用、隨手筆記。資產(chǎn)整理,針對(duì)目標(biāo)網(wǎng)絡(luò)主機(jī)的信息收集,探測(cè)并記錄主機(jī)開(kāi)放的端口及服務(wù);漏洞利用,利用已知的應(yīng)用漏洞,對(duì)目標(biāo)Web應(yīng)用可能存在的利用點(diǎn)進(jìn)行檢測(cè)與利用;隨手筆記,記錄滲透測(cè)試過(guò)程中發(fā)現(xiàn)的有用信息(包括圖片與文字)。通過(guò)在實(shí)際環(huán)境進(jìn)行的大量掃描測(cè)試,與虛擬環(huán)境中Web應(yīng)用漏洞的測(cè)試,以及實(shí)際滲透測(cè)試過(guò)程中的筆記記錄,驗(yàn)證了以上三大模塊功能的實(shí)用性與準(zhǔn)確性。并在開(kāi)發(fā)測(cè)試過(guò)程中總結(jié)出了以下幾點(diǎn)問(wèn)題:采用Nmap作為資產(chǎn)整理模塊掃描器的核心,在掃描大量端口或主機(jī)時(shí)會(huì)因?yàn)榉阑饓Φ淖钃跸拇罅康臅r(shí)間,而且會(huì)被混淆正確的端口開(kāi)放信息;漏洞利用模塊需要手動(dòng)收集大量Payload(有效載荷),目前階段還欠缺豐富性。針對(duì)以上項(xiàng)目實(shí)測(cè)中發(fā)現(xiàn)的問(wèn)題,將會(huì)在日后的學(xué)習(xí)中尋找解決辦法,爭(zhēng)取將該項(xiàng)目完善成更加方便的滲透測(cè)試輔助系統(tǒng)。

[1]王世偉.論信息安全、網(wǎng)絡(luò)安全、網(wǎng)絡(luò)空間安全[J].中國(guó)圖書(shū)館學(xué)報(bào),2015.

[2]梁娟.基于黑盒的滲透測(cè)試技術(shù)研究[J].科技展望,2016.

[3]練斌,劉永鍵.滲透測(cè)試的信息收集工具設(shè)計(jì)與開(kāi)發(fā)[J].安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2017.

[4]裴蘭珍,羅赟騫,景劼.網(wǎng)絡(luò)安全漏洞滲透測(cè)試框架綜述[J].電子信息對(duì)抗技術(shù),2016.

[5]楊超,徐如志,楊峰.基于消息隊(duì)列的多進(jìn)程數(shù)據(jù)處理系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010.

[6]尚廣明.Nmap滲透測(cè)試指南[J].信息安全與通信保密,2015.

[7]李丹.網(wǎng)絡(luò)攻擊重放技術(shù)研究[D].北京郵電大學(xué),2014.

[8]劉志凱.基于Web的Python編程環(huán)境研究[D].新疆農(nóng)業(yè)大學(xué),2015.

2016年國(guó)家級(jí)、省級(jí)高等學(xué)校大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目。

猜你喜歡
有效載荷漏洞筆記
漏洞
理念牽引 機(jī)制創(chuàng)新 人才驅(qū)動(dòng) 做有效載荷創(chuàng)新發(fā)展領(lǐng)跑者
面向有效載荷數(shù)字化研制的標(biāo)準(zhǔn)化工作轉(zhuǎn)型初探
衛(wèi)星有效載荷研制流程的策劃與推進(jìn)
2020.3.21~2020.4.20中國(guó)運(yùn)載火箭發(fā)射記錄表
學(xué)寫(xiě)閱讀筆記
學(xué)寫(xiě)閱讀筆記
三明:“兩票制”堵住加價(jià)漏洞
漏洞在哪兒
我的自然筆記(一)