前言
因扫描原因,在所有发出的请求中尽可能的添加ua,由其他业务判断。
有业务反馈跑了几年的nmap,有部分请求不带ua。
但http.useragent并不能覆盖所有的http请求,还有部分请求 "/"的不带ua
一 http库 设置http.useragent
默认的nmap添加ua的做法是添加脚本参数
--script-args http.useragent="my user-agent"
具体生效位置
/usr/local/share/nmap/nselib/http.lua 或 /usr/share/nmap/nselib/http.lua
设置请求函数中 创建请求时的UA
调用方式
-- 引用
local http = require "http"
-- 请求
http.get( host, port, '/' )
生效范围
使用http.get的一般是scripts中的脚本,如
/usr/local/share/nmap/scripts/couchdb-stats.nse
其他请求方式,http.useragent无法覆盖到
二 nmap-service-probes 请求方式
nmap-service-probes发送预设的数据探针,匹配响应的内容来判断服务类型。
探针内容:Probe TCP GetRequest q|GET / HTTP/1.0\r\n\r\n|
请求 "/" 路径,添加ua需要改为
Probe TCP GetRequest q|GET / HTTP/1.0\r\nUser-Agent: xxx\r\n|
三 comm socket请求
/usr/local/share/nmap/nselib/comm.lua 封装了socket请求
脚本 skypev2-version.nse中调用该方法,发送http请求
if not result then
-- Have to send the probe ourselves.
status, result = comm.exchange(host, port,
"GET / HTTP/1.0\r\n\r\n", {bytes=26})
if (not status) then
return nil
end
end
四 rpc 请求
rpc-grind.nse
发的请求导致报错,具体怎么发不详细找了,这个请求比较难修改。
[06/Jul/2022 11:30:48] code 400, message Bad request version ('\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
[06/Jul/2022 11:30:48] "(m% " 400 -