Nmap 擴充套件(四)
一、HTTP 包的使用
一般情況下,我們掃描一些Web服務的同時需要進行滲透測試、安全評估、漏洞檢測等操作,但是官方並未提供符合我們需求的指令碼,這時候就要自己寫指令碼了。Nmap已經內建了HTTP包,不需要再進行下載和配置。
二、基礎概念鋪墊
首先,先介紹兩個表結構,為了方便我們後續的資料操作,讓讀者先熟悉兩個東西:
響應表
響應表中主要涵蓋了:HTTP狀態碼、HTTP響應頭、HTTP版本、HTTP原始響應頭、Cookies、HTTP響應主體內容(body)等。
| Response:
| status: 200
| header:
| content-length: 0
| allow: POST,OPTIONS,HEAD,GET
| connection: close
| content-type: text/html
| server: Apache/2.4.29 (Debian)
| date: Fri, 06 Jul 2018 07:02:13 GMT
| ssl: false
| body:
| cookies:
|
| status-line: HTTP/1.1 200 OK\x0D
|
| rawheader:
| Date: Fri, 06 Jul 2018 07:02:13 GMT
| Server: Apache/2.4.29 (Debian)
| Allow: POST,OPTIONS,HEAD,GET
| Content-Length: 0
| Connection: close
| Content-Type: text/html
|
|_ version: 1.1
Options表
Options表主要用於設定HTTP請求時的超時時間、Cookie、請求頭、HTTP認證、頁面快取、地址型別(IPV4/IPV6)、是否驗證重定向。
{
timeout:
header:{"Content-Type":"",...},
cookies:{\{"name","value","path"\},...},
auth:{username:"",password:""},
bypass_cache:true,
no_cache:true,
no_cache_body:true,
any_af:true,
redirect_ok:true
}
三、確定目標主機的 HTTP 服務是否支援 HEAD
引入HTTP包
local http = require "http"
確認目標主機的HTTP服務是否支援HEAD
這裡主要使用can_use_head函式,引數有4個,函式原型如下:
local status,header = can_use_head(host,port,result_404,path)
引數說明:
host : host表
port : port表
result_404 : 由identify_404函式確認當前Web伺服器是否設定了404頁面且返回200狀態碼,一般情況下填寫404或者nil。
path : 請求路徑,預設為“/”根目錄
其中status是一個布林值,如果返回true則支援HEAD,返回false則不支援
header是HEAD請求的結果
需求:確認目標主機是否支援HEAD,如果支援則輸出響應頭
local stdnse = require "stdnse"
local http = require "http"
prerule=function()
end
hostrule=function(host)
return false
end
portrule=function(host,port)
if(port.number == 80) then
return true
end
return false
end
action = function(host,port)
local result
local status = false
status,result = http.can_use_head(host,port,404,"/")
if(status) then
http_info = stdnse.output_table()
http_info.header = result.header
http_info.version = result.version
return http_info
end
end
postrule=function()
end
程式碼解讀:
看完程式碼讀者可能會有疑問,hostrule函式為什麼返回false?
在hostrule中返回false是因為如果是true會自動呼叫action,此時port的值是nil,所以會丟擲一些錯誤。
緊接著就是將埠號為80的host和port交給action函式執行,呼叫can_use_head函式,判斷status是否為true,是true則支援HEAD方法請求。最後生成一個output_table,用來將響應內容填入這個表,以便於格式化顯示。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010128/viewspace-2871543/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- easyui應用(四)--- easyui擴充套件UI套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- PHP的SPL擴充套件庫(四)函式PHP套件函式
- 擴充套件工具套件
- Sanic 擴充套件套件
- Mybatis擴充套件MyBatis套件
- SpringMVC 擴充套件SpringMVC套件
- ORACLE 擴充套件Oracle套件
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- iOS 通知擴充套件iOS套件
- swift擴充套件ExtensionsSwift套件
- 擴充套件BSGS/exBSGS套件
- Json擴充套件方法JSON套件
- 分類擴充套件套件
- 提高擴充套件性套件
- HttpContext擴充套件類HTTPContext套件
- DOM部分擴充套件套件
- LINQ擴充套件方法套件
- Flask 自建擴充套件Flask套件
- 新增php擴充套件PHP套件
- 擴充套件表示式套件
- 擴充套件包上傳套件
- 可擴充套件性套件
- 19-擴充套件套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- 字串的擴充套件 —— ES6基礎總結(四)字串套件
- 乾貨丨如何水平擴充套件和垂直擴充套件DolphinDB叢集?套件
- 正則的擴充套件套件
- jQuery外掛擴充套件jQuery套件
- jQuery擴充套件外掛jQuery套件
- 線段樹擴充套件套件
- Dapper.Lite 擴充套件APP套件
- Ubunut擴充套件分割槽套件
- YAML 擴充套件安裝YAML套件