Web漏洞(七)综合利用
综合利用
跨站脚本攻击(XSS)
漏洞描述
攻击者向Web页面里插入恶意的脚本代码(如javascript脚本),当用户浏览该Web页面时,嵌入其中的脚本代码会被执行,达到攻击用户的目的。
【高危】应用中存在存储型跨站
【中危】应用中存在反射型跨站
漏洞挖掘
1)针对web应用程序中每个页面上的用户自定义输入的地方,尝试XSS payload
2)检查XSS payload是否生效,F12看闭合方式是否有问题
修复方式
1.对输入所包含的特殊字符进行转义,如 <,>,&,",',来防止 XSS 攻击。
2.在富文本中因为需要保留 HTML ,所以我们不能使用转义的方法防御 XSS 攻击,这里使用过滤的方式防御 XSS 攻击,也就是通过只使用白名单允许的 HTML 标记及其属性,来防御攻击。
FLASH 跨站脚本攻击
漏洞描述
高危漏洞,Flash跨站攻击是在Flash文件中插入脚本,在播放Flash文件的时候脚本被触发,然后通过脚本获取用户的敏感信息或者打开具有网页木马的URL页面从而实现攻击。
漏洞挖掘
1)运行Flash 准备payload导出,传到vps上
2)通过Flash标签插入刚才精心准备的Flash的URL地址,等待受害者点击
修复方式
1.不允许上传 Flash,显示外站的 Flash 时,不要直接嵌在本站中,而是用 iframe 引用,此时就用建立两个会话:本站一个,外站一个。发送的 cookie 是外站的 cookie,不会导致本站的 cookie 泄漏。
2.检查用户提交的数据,避免用户直接把 Flash 嵌在提交的内容中
HTTP 响应分割
漏洞描述
中危漏洞,HTTP 响应分割又称CRLF注入攻击,是一种Web攻击方式,如Web缓存感染、用户信息涂改、窃取敏感用户页面、跨站脚本漏洞等。主要是由于Web应用程序未对用户提交的数据进行严格过滤和检查,导致攻击者可以提交一些恶意字符如(CR、LF等)然后进行构造恶意代码进行攻击。
漏洞挖掘
- CR:对应ASCII中转义字符\r,即回车(%0d)
- LF:对应ASCII中转义字符\n,即换行(%0a)
- CRLF:\r\n,即回车并换行 %0d%0a
抓包,在请求行的参数中后,HTTP/1.1前加入特殊构造的CRLF字符%0d%0aSet-cookie:ture或%0d%0a%0d%0a<img src=1 onerror=alert(/xss/)>
修复方式
过滤 \r 、\n 之类的行结束符,避免输入的数据污染其他 HTTP 首部字段。
HTTP 参数污染
漏洞描述
中危漏洞,HTTP参数污染漏洞(HTTP Parameter Pollution)简称HPP,由于HTTP协议允许同名参数的存在,同时,后台处理机制对同名参数的处理方式不当,造成“参数污染”。攻击者可以利用此漏洞对网站业务造成攻击,甚至结合其他漏洞,获取服务器数据或获取服务器最高权限。
漏洞挖掘
浏览器在跟服务器进行交互的过程中,浏览器往往会在GET/POST请求里面带上参数,这些参数会以 名称-值 对的形势出现,通常在一个请求中,同样名称的参数只会出现一次。但是在HTTP协议中是允许同样名称的参数出现多次的。比如下面这个链接:http://www.baidu.com?name=aa&name=bb ,针对同样名称的参数出现多次的情况,不同的服务器的处理方式会不一样。有的服务器是取第一个参数,也就是name=aa。有的服务器是取第二个参数,也就是name=bb。有的服务器两个参数都取,也就是name=aa,bb 。这种特性在绕过一些服务器端的逻辑判断时,非常有用。
修复方式
1.后端对用户输入数据的参数的格式进行验证。
2.在WAF或其他网关设备(比如IPS)在检查URL时,对同一个参数被多次赋值的情况进行特殊处理。
3.在代码层面,编写WEB程序时,要通过合理的$_GET方法获取URL中的参数值,而尝试获取web服务器返回给程序的其他值时要慎重处理。
Host 头攻击
漏洞描述
中危漏洞,Web应用程序获取网站域名依赖HTTP header中的Host字符(比如在JSP里通过request.getHeader()获取),通过篡改host字段可导致Host头攻击
漏洞挖掘
Host头攻击漏洞的检测比较简单,只需要抓包,修改Host字段值,提交,查看响应中是否包含修改后的Host字段值即可,可以拼接XSS
修复方式
对Host字段进行检测。
Nginx,修改ngnix.conf文件,在server中指定一个server_name名单,并添加检测。
Apache,修改httpd.conf文件,指定ServerName,并开启UseCanonicalName选项。
Tomcat,修改server.xml文件,配置Host的name属性。
SQL注入
漏洞描述
高危漏洞,SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
漏洞挖掘
可以看看之前写的文章
修复方式
1、采用SQL语句预编译和绑定变量。
2、使用正则表达式过滤传入的参数。如:/((\%27)|(\’))union/ix(\%27)|(\’)。
3、参数化SQL。
4、对关键字符,如select、or、and等进行过滤。
5、一致的错误消息机制(不返回错误信息)。
XML注入
漏洞描述
高危漏洞,XML最初设计的目的是弥补HTML的不足,后来逐渐用于网络数据的转换和描述。XML的设计宗旨是传输数据,而非显示数据。该漏洞通过构造XML查询格式进行注入
漏洞挖掘
抓包判断是否使用XML传输数据,然后看哪些传输变量是可以更改的,修改尝试看返回结果。
修复方式
1.对用户的输入进行过滤
2.对用户的输入进行转义
XXE
漏洞描述
XML外部实体(XXE)攻击是许多基于注入的攻击方式之一,当攻击者将声明XML消息中的外部实体发送到应用程序并使用XML解析器解析时,就会发生这种攻击。这个漏洞有许多不同的类型和行为,因为它可能会发生在不同类型的技术中—因为不同类型的XML解析器的原因。在这种情况下,令人高兴的是,每个解析器具有不同的功能和“特征”。
漏洞挖掘
抓包判断是否使用XML传输数据,使用file协议读取本地文件。
修复方式
1.禁止加载外部实体
2.不允许XML中含有任何自己声明的DTD
Xpath注入
漏洞描述
高危漏洞,XPath注入攻击是指利用XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。XPath注入发生在当站点使用用户输入的信息来构造请求以获取XML数据。攻击者对站点发送经过特殊构造的信息来探究站点使用的XML是如何构造的,从而进一步获取正常途径下无法获取的数据。当XML数据被用作账户验证时,攻击者还可以提升他的权限。
漏洞挖掘
抓包判断是否使用XML传输数据,然后看哪些传输变量是可以更改的,修改尝试看返回结果。
修复方式
1.对用户的输入进行过滤
2.对用户的输入进行转义
SSI注入
漏洞描述
高危漏洞,SSI是在网页内容被返回给用户之前,服务器会执行网页内容中的SSI标签。在很多场景中,用户输入的内容可以显示在页面中,比如一个存在反射XSS漏洞的页面,如果输入的payload不是xss代码而是ssi的标签,服务器又开启了ssi支持的话就会存在SSI漏洞。
漏洞挖掘
通常使用扫描器扫描是否存在漏洞,识别页面是否包含.stm,.shtm和.shtml后缀,SSI的测试与测跨站漏洞一样,通过在输入框、HTTP头、Cookie等数据中包含注入语句字符串,如果返回的信息中包含文件系统信息,则说明存在SSI注入。
<!--#exec cmd="ls"--> //执行ls命令
<!--#echo reqheader="referer" --> //显示HTTP头中的referer信息
"-->'-->`--><<!--#exec cmd="cat /etc/passwd"-->
修复方式
1.关闭服务器SSI功能
2.过滤相关SSI特殊字符(`<,>,#,-,",'`)
命令注入
漏洞描述
高危漏洞,外部输入的字符,被当作shell的代码进行运行
漏洞挖掘
在参数中输入系统命令,检查是否会被执行。检测特定的系统命令能否提交进应用执行,例如:http://www.xxx.com/index?cmd=ping
通常使用扫描器进行扫描。
修复方式
1.命令注入漏洞是由于考虑不周,过滤不严格导致的,因此只要过滤的够严格就可以防范该漏洞,此外还可以设置命令选项,只允许执行几个常用的命令.
2.将命令接收函数写死,用户输入的不使用。
任意文件上传
漏洞描述
任意文件上传顾名思义就是在文件上传的地方能够上传任意类型的文件,我们可以上传恶意webshell对其服务器进行攻击。
漏洞挖掘
通过查看文件上传的地方,通过burpsuite抓包分析其上传点对其文件类型是否做了限制,也可能只是做了前端限制,直接绕过就行
修复方式
1.文件上传的地方,我们需要对其文件格式做白名单限制,只允许我们需要的文件进行上传即可
2.对文件格式进行校验,前端以及服务器端都需要进行校验,任何只进行前端校验的都是可以绕过的
本文来自博客园,作者:九天揽月丶,转载请注明原文链接:https://www.cnblogs.com/-meditation-/articles/16148730.html