这是一款商业的Web漏洞扫描程序,它可以检查Web应用程序中的漏洞,如SQL注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界面,并且能够创建专业级的Web站点安全审核报告。
WVS自动地检查下面的漏洞和内容:
·版本检查,包括易受攻击的Web服务器,易受攻击的Web服务器技术
·CGI测试,web漏洞扫描器,包括检查Web服务器的问题,主要是决定在服务器上是否启用了危险的HTTP方法,例如PUT,TRACE,DELETE等等。
·参数操纵:主要包括跨站脚本攻击(XSS)、SQL注入攻击、代码执行、目录遍历攻击、文件入侵、脚本源代码泄漏、CRLF注入、PHP代码注入、XPath注入、LDAP注入、Cookie操纵、URL重定向、应用程序错误消息等。
·多请求参数操纵:主要是Blind SQL / XPath注入攻击
·文件检查:检查备份文件或目录,查找常见的文件(如日志文件、应用程序踪迹等),以及URL中的跨站脚本攻击,还要检查脚本错误等。
·目录检查,主要查看常见的文件,发现敏感的文件和目录,网站漏洞扫描软件,发现路径中的跨站脚本攻击等。
·Web应用程序:检查特定Web应用程序的已知漏洞的大型数据库,例如论坛、Web入口、CMS系统、电子商务应用程序和PHP库等。
·文本搜索:目录列表、源代码揭示、检查电子邮件地址、微软Office中可能的敏感信息、错误消息等。
·GHDB Google攻击数据库:可以检查数据库中1400多条GHDB搜索项目。
·Web服务:主要是参数处理,其中包括SQL注入/Blind SQL注入(即盲注攻击)、代码执行、XPath注入、应用程序错误消息等。
使用该软件所提供的手动工具,还可以执行其它的漏洞测试,包括输入合法检查、验证攻击、缓冲区溢出等。
找台机器安装Acunetix Web Vulnerability Scanner
选择file->new->web site scan
输入url,接着对登录操作选项,可以进行登录操作录制并保存,其它默认就可以开始扫描了。
以下是PHP中*受到Server Side Request Forgery(SSRF)的一个示例。
<?PHP
/ **
*检查'url'GET变量是否设置
*示例 - http:// localhost /?url = http:///images/logo.gif
* /
if(isset($ _ GET ['url'])){
$ url = $ _GET ['url'];
/ **
*发送请求*受到SSRF的影响
*没有对$ url进行验证
*发送请求之前
* /
$ image = fopen($ url,漏洞扫描工具,'rb');
/ **
*发送正确的响应标题
* /
标题(“Content-Type:image / png”);
/ **
*转储图像的内容
* /
fpassthru($图像);
}
在上面的例子中,由于攻击者可以完全控制url参数,除了可以对Internet上的任何一个网站进行任意的GET请求。攻击者还可以对服务器上的资源进行请求。
例如,攻击者可以访问localhost上的服务。在以下示例中,攻击者可以在启用了mod_status(默认启用)的Apache HTTP服务器上进行以下请求。
GET /?url = http:// localhost / server-status HTTP / 1.1
主机:
类似地,Server Side Request Forgery(SSRF)可用于向Web服务器访问但不公开的其他内部资源提出请求。这样一个例子就是访问Amazon EC2和OpenStack实例中的实例元数据。此服务仅适用于服务器而不是外部世界。攻击者甚至可以通过SSRF获得创意,并通过此方法在内部网络上运行端口扫描。
GET /?url=http://169.254.169.254/latest/meta-data/ HTTP / 1.1
主机:
除了http://和https:// URL模式之外,攻击者可能会利用不太**或遗留的URL模式来访问本地系统或内部网络上的文件。
以下是使用file:/// URL模式的一个例子。
GET /?url = file:/// etc / passwd HTTP / 1.1
主机:
根据应用程序的请求方式,除文件和HTTP之外的URL模式可能可供攻击者使用。例如,如果使用cURL进行请求(上面的示例使用fopen()进行请求),则可以使用dict URL模式向任何端口上的任何主机发出请求并发送自定义数据。
GET /?url = dict:// localhost:11211 / stat HTTP / 1.1
主机:
上述请求将导致应用程序连接到端口11211上的本地主机并发送字符串“stat”。端口11211是Memcached使用的默认端口,通常不会暴露。有关可以使用的攻击和URL模式的全的面列表,ONSec Labs会维护一个详细的文档,其中包含有关服务器端请求伪的造(SSRF)攻击的大量有用信息。
检测Server Side Request Forgery(SSRF)
为了自动检测Server Side Request Forgery(SSRF),我们需要依赖中介服务,因为检测到这样的漏洞需要带外和延的时的向量。Acunetix在自动扫描期间通过使用AcuMonitor作为其中介服务来解决这个问题。
在扫描期间,Acunetix将发出包含唯的一AcuMonitor URL的请求。如果AcuMonitor收到URL中之一的请求,它将向Acunetix发送一条通知,指示它应该提醒Server Side Request Forgery(SSRF)。
以下是使用AcuMonitor检测Server Side Request Forgery(SSRF)的Acunetix扫描的结果。警报包含有关执行的HTTP请求的信息,包括发出此请求的服务器的IP地址和请求中使用的User-agent字符串(如果有)。这些信息可以帮助开发人员识别问题的根源并解决问题。
减轻Server Side Request Forgery(SSRF)
白名单和DNS解析
直接在用户输入端实现简单的黑名单或正规表达式,以过滤哪些IP地址或域可以发出请求,这是减轻SSRF时采取的不利方法。
一般来说,黑名单是一个很差的安全控制因素,因为开发人员总是会忽视这个设想。在这种情况下,攻击者旁路与使用HTTP重定向,通配符DNS服务(如xip.io)或备用IP编码一样简单。
相反,处理Server Side Request Forgery(SSRF)的较强大的方法是将您的应用程序需要访问的DNS名称或IP地址列入白名单。如果白名单方法不适合您的用例,并且您必须依赖黑名单,则必须正确验证用户输入。一个例子是不允许请求私有(“不可路由”)IP地址(RFC 1918中详细描述),但是在黑名单的情况下,漏洞扫描,采用的正确缓解将因应用而异。换句话说,SSRF没有通用的“修复”,因为它很大程度上取决于应用程序的功能和业务需求。
响应处理
确保远程服务器收到的响应确实是服务器期望的,以防止任何不可预见的响应数据泄露给攻击者。较重要的是,在任何情况下,服务器发送的请求中的原始响应体都不会传递给客户端。
禁用未使用的URL模式
如果您的应用程序仅使用HTTP或HTTPS提出请求,则只允许这些URL模式。禁用未使用的URL模式将阻止Web应用程序使用潜在的危险URL模式(如file:///,dict://,ftp://和gopher://)发出请求。
内部服务认证
默认情况下,Memcached,Redis,Elasticsearch和MongoDB等服务不需要身份验证。服务器端请求伪的造漏洞可能会为攻击者提供访问这些服务的机会,而*任何身份验证。因此,较的好在可能的情况下使身份验证成为另一个防御机制。