![b3e24fc1ef03caaf20901e16a9f924fd.png](https://i-blog.csdnimg.cn/blog_migrate/c51eab8d53009e75228b097a3619cc8b.jpeg)
扫描器扫完网站后,如何验证漏洞,一下是几个常见漏洞的验证方法:
1、跨站脚本
原理:指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
(1)GET方式跨站脚本
具体方法:在输入的参数后逐条添加以下语句,以第一条为例,http://www.exmaple.com/page.xxx?name=<script>alert(523468)</script>输入后,只要其中一条弹出显示523468的告警框,就说明存在跨站漏洞,记录漏洞,停止测试。
由于某些网站会对<script>标签进行了过滤,如果没有弹出显示523468的告警框,则在返回的页面上单击鼠标右键,查看网页源代码。查看网页源码中是否包含完整的<script>alert(523468)</script>字符串,这样不管有没有弹出显示523468的告警框,都表明存在跨站脚本漏洞。
(2)POST方式跨站脚本
post方式同上,一般可以利用hackbar插件的Enable Post data插入验证内容。
注:特例有宽字符集跨站、Struts错误页面跨站脚本,验证方式相似。
2、框架注入、链接注入
原理:框架注入是一个所有基于GUI的浏览器攻击,是由于脚本没有对它们正确验证,攻击者有可能注入含有恶意内容的frame或iframe标记。
链接注入是修改站点内容的行为,其方式为将外部站点的URL嵌入其中,或将有易受攻击的站点中的脚本的URL嵌入其中。将URL嵌入易受攻击的站点中,攻击者便能够以它为平台来启动对其他站点的攻击,以及攻击这个易受攻击的站点本身。
具体方法:通过对网站中的get提交的url中的参数进行框架或者链接注入,注入到参数id
3、允许TRACE方法
原理:TRACE方法是HTTP协议定义的一种协议调试方法,该方法使得服务器原样返回任何客户端请求的内容。攻击者利用TRACE请求,结合其它浏览器端漏洞,有可能进行跨站脚本攻击,获取敏感信息,比如cookie中的认证信息,这些敏感信息将被用于其它类型的攻击。
具体方法:利用bp截包,将GET改为TRACE,单次发包,看是否会提醒保存文件,有的话,就存在。
4、Struts2远程命令
原理:作为网站开发的底层模板使用,是应用最广泛的Web应用框架之一。
一种漏洞类型是使用缩写的导航参数前缀时的远程代码执行漏洞,常见的有Struts2远程命令执行S2-045、Struts2远程命令执行S2-016、Struts2远程命令执行S2-019、Struts2远程命令执行S2-033、Struts2远程命令执行S2-037。
具体方法:把url粘贴到K8中,获取信息运行,如果是Windows系统就用ipconfig等命令,如果是Linux系统就用ifconfig看是否能执行,可以的话存在。
5、Struts2 URL跳转S2-017
原理:Struts2 URL跳转S2-017,是Struts2远程命令的第二类漏洞,是使用缩写的重定向参数前缀时的开放式重定向漏洞。
具体方法:通过使用“redirect:”或“redirectAction:”前缀参数是来支持短路导航状态更改的方法,然后是所需的重定向目标表达式。
如:原始网址为:http://127.0.0.1:8080/showcase.action;修改后:http://127.0.0.1:8080/showcase.action?redirect:http://www.baidu.com/,这样在浏览器运行会跳转到百度的链接。
6、SQL注入
原理:指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,获取数据库信息。
在实际验证过程中常见的有经常出现的SQL注入漏洞是SQL盲注、SQL错误信息注入、cookie SQL注入。
具体方法:利用sqlmap,SQL盲注、SQL错误信息注入可以直接sqlmap -u "url",cookie SQL注入新建txt文档把请求包的数据复制粘贴到里面,再利用sqlmap -r "xxx.txt",查寻是否存在注入点。
7、其他漏洞
(1)IIS文件解析代码执行:
原理:Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件,攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。
具体方法:链接后面加上.php格式,仍然能解析并且执行,则证明存在。
(2)Nginx文件解析代码执行
原理:当用户请求的url后缀为123.jpg/123.php时,location对请求进行选择的时候会使用URI环境变量进行选择,其中传递到后端Fastcgi的关键变量SCRIPT_FILENAME由Nginx生成的$fastcgi_script_name决定。
具体方法:链接后面加上.php格式,仍然能解析并且执行,则证明存在。
(3)Web.xml文件信息泄露
原理:在Java的Servlet 文档中,WEB-INF目录包含了所有web应用会用到但是不处于web路径中的资源,也就是说, WEB-INF目录下的内容是不属于公开页面的。
具体方法:在需要验证的域名后面加上WEB-INF/web.xml ,若出现 Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则,则证明存在。
(4)不安全的clientaccesspolicy.xml文件
原理:程序需要跨域访问,会出现错误,这时候需要把跨域文件放在web服务器下,允许跨域访问。
具体方法:在需要验证的域名后面加上clientaccesspolicy.xml
出现以下文件结构,则证明存在。
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
等我熟悉了新的再补充,若有大佬请多多指教!