1.渗透测试常见漏洞概述及修复方法
风险等级 低危–高危 敏感信息泄露描述 由于网站运维人员疏忽,存放敏感信息的文件被泄露或由于网站运行出差导致敏感信息泄露(后台地址,配置文件,数据库备份文件,网站备份文件,phpinfo,svn/github,用户信息泄露) 敏感信息泄露的危害 1.攻击者可直接下载用户的相关信息,包括网站的绝对路径,用户的登录名、密码、真实姓名、身份证号、电话号码、邮箱、QQ号等。 2.攻击者通过构造特殊URL地址,触发系统WEB应用程序报错,在回显内容中,获取网站敏感信息。 3.攻击者利用泄露的敏感信息,获取网站服务器的WEB路径,为进一步攻击提供帮助。 敏感信息泄露修复方式 1.对网站错误信息进行统计返回,模糊化处理。 2.对存放敏感信息的文件进行加密并妥善储存,避免泄露敏感信息。
2.SQL注入
风险等级 高危 SQL注入漏洞描述 SQL注入漏洞产生的原因是网站应用程序在编写时未对用户提交至服务器的数据进行合法性校验,即没有进行有效地特殊字符过滤,导致网站服务器存在安全风险,这就是SQL Injection,即SQL注入漏洞 SQL注入漏洞危害 1.机密数据被窃取。 2.核心业务数据被篡改。 3.网页被篡改。 4.数据库存在服务器被攻击从而变为傀儡主机,导致局域网(内网)被入侵。 SQL注入分类 提交类型:1.GET 2.POST 3.HTTP头 4.COOKIE 两大类:1.显错注入(union) 2.盲注(1.基于布尔的盲注 2.基于报错的注入 3.基于延时的注入) SQL注入工具 1.SQLMAP 2.Pangolin 3.Safe3WVS企业扫描版 4.超级SQL注入工具 SQL注入相关书籍 SQL语法:《深入浅出SQL(中文版)》,《SQL入门经典(第5版)》 SQL注入:《SQL注入与防御 第2版》 SQLMAP注入神器:《SQLMAP从入门到精通》 SQL注入漏洞修复方式 1.在网页代码中对用户输入的数据进行严格过滤.(代码层) 2.部署Web应用防火墙.(设备层) 3.对数据库操作进行监控.(数据库层) 代码层最佳修复方式:PDO预编译 其他防御方式:正则过滤(正则语法都一样)
3.XSS跨站脚本
风险等级 高危 XSS跨站脚本描述 XSS跨站脚本漏洞产生的原因是网站应用程序在编写时未对用户提交至服务器的数据进行合法性校验,即没有进行有效地特殊字符过滤,导致网站服务器存在安全风险,这就是XSS跨站脚本 XSS跨站脚本攻击漏洞危害 1.网络钓鱼,盗取管理员或者用户账号和隐私信息 2.劫持合法用户会话,利用管理员身份进行恶意操作,篡改页面内容 3.网页挂马,传播跨站脚本蠕虫等 4.控制受害者机器向其他系统发起攻击 XSS跨站脚本攻击分类 1.反射型XSS 2.存储型XSS 3.DOM型XSS XSS跨站脚本的相关书籍 《XSS跨站脚本攻击剖析与防御》 XSS跨站脚本检测工具 XSSer XSS跨站脚本修复方式 1.前后端过滤特殊字符 2.编码转义(html编码,url编码,16进制编码,JavaScript编码) 3.严格限制URL参数输入值的格式,不能包含不必要的特殊字符(%0d,%0a,%0D,%0A等)
4.CSRF伪造客户端请求
风险等级 中危 CSRF跨站请求伪造描述 跨站请求伪造,即CSRF,攻击者通过伪造来受信任用户的请求,达到增加,输出,篡改网站内容的目的。 CSRF跨站请求伪造的危害 1.攻击者冒充用户/管理员,伪造请求,进行篡改、转账、改密码、发邮件等非法操作。 CSRF跨站请求伪造的修复方式 1.过滤用户输入,不允许发布含有站内操作URL的链接。 2.改良站内API的设计,关键操作使用验证码,GET请求应该只浏览而不改变服务端资源 3.对于web站点,将此就会的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在每个form中提供隐藏field) 4.在浏览其它站点前等处站点或者在浏览器会话结束后清理浏览器COOKIE 5.在服务端设置用户每一次请求分配TOKEN随机生成密钥,有效期一次性(代码层)
5.SSRF伪造服务端请求
风险等级 中危 SSRF伪造服务端请求描述 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统) SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。 SSRF伪造服务端请求危害 1、可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息 2、攻击运行在内网或本地的应用程序(比如溢出) 3、对内网Web应用进行指纹识别,通过访问默认文件实现 4、攻击内外网的Web应用,主要是使用Get参数就可以实现的攻击(比如Struts2漏洞利用,SQL注入等) 5、利用file协议读取文件 SSRF伪造服务端请求修复方式 1.禁止跳转 2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。 3.禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题 4.设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP) 5.限制请求的端口为http常用的端口,比如 80、443、8080、8090 6.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。 相关参考链接 https://xz.aliyun.com/t/2115 https://www.cnblogs.com/20175211lyz/p/11408583.html
6.XXE外部实体框架引入
风险等级 高危 XXE漏洞描述 XXE漏洞全称XML External Entity Injection即XML外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、×××内网网站、发起dos×××等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。 XXE漏洞危害 XXE漏洞主要针对web服务危险的引用的外部实体并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目录遍历等。 XXE漏洞修复方式 1.使用语言中推荐的禁用外部实体的方法 2.手动黑名单过滤(不推荐)
7.文件上传漏洞
风险等级 高危 文件上传漏洞描述 网站存在任意文件上传漏洞,文件上传功能没有进行格式限制,容易被黑客利用上传恶意脚本文件。 文件上传漏洞的危害 1.攻击者可通过此漏洞上传恶意脚本文件,对服务器的正常运行造成安全威胁影响等 2.攻击者可上传可执行的Webshell(php,jsp,asp,aspx等类型脚本木马),获取利用目录跳转上传html,gif,config覆盖系统原有的文件,达到获取系统权限的目的。 文件上传漏洞的修复方式 1.对上传文件格式进行严格校验及安全扫描,防止上传恶意脚本文件 2.设置权限限制,禁止上传目录的执行权限 3.严格限制可上传的文件类型 4.严格限制可上传的文件路径 5.文件扩展名服务端白名单校验 6.文件内容服务端校验 7.上传文件重命名 8.隐藏上传文件路径
8.弱口令漏洞
风险等级 高危 弱口令漏洞描述 弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。有后台管理员弱口令,用户弱口令,主机系统弱口令(linux,win),路由器弱口令,交换机弱口令等等。 弱口令危害 1.攻击者可以通过相关权限的弱口令进行相关操作,例如后台弱口令可以任意删除文章,增加文章等造成负面影响。 2.攻击者可通过该弱口令进一步获取相关权限,例如服务器权限,导致局域网(内网)被入侵。 弱口令修复方式 1.增加口令强度 2.传输过程加密 3.定期更换密码
9.业务逻辑漏洞
风险等级 低危–高危 业务逻辑漏洞的描述 在业务上出现逻辑问题导致的漏洞,通常不是程序员设计上出错的问题,漏洞危害体现,被一些羊毛党拿来利用。(业务漏洞) 逻辑漏洞,是因为代码之后是人的逻辑,人更容易犯错,是编写完程序后随着人的思维逻辑产生的不足。sql注入、xss等漏洞可以通过安全框架等避免,这种攻击流量非法,对原始程序进行了破坏,防火墙可以检测,而逻辑漏洞是通过合法合理的方式达到破坏,比如密码找回由于程序设计不足,会产生很多问题,破坏方式并非向程序添加破坏内容,而是利用固有不足。这样并不影响程序运行,在逻辑上是顺利执行的。这种漏洞一般的防护手段或设备无法阻止,因为走的都是合法流量。也没有防护标准。 业务逻辑漏洞的危害 1.会话劫持,0元购,越权查看订单信息,越权查看用户信息,任意密码重置… 业务逻辑漏洞的修复方式 1.针对实际情况以正确逻辑编写代码或者梳理业务功能
10.代码执行漏洞
风险等级 高危 代码执行漏洞描述 远程代码执行漏洞,用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致服务器端程序执行一个恶意构造的代码。 代码执行漏洞的危害 1.执行恶意代码,向网站写WEBSHELL,可以控制网站,甚至可以控制整个服务器 代码执行漏洞的修复方式 1.严格过滤用户输入参数(正则过滤) 2.尽量避免使用代码执行函数
11.命令执行漏洞
风险等级 高危 命令执行漏洞描述 命令执行漏洞是指代码未对用户可控参数做过滤,导致直接带入执行命令的代码中,对恶意构造的语句,可被用来执行任意命令。 命令执行漏洞的危害 1.黑客可在服务器上执行任意命令,写入后门,从而入侵服务器,获取服务器的管理员权限,危害巨大。 命令执行漏洞的修复方式 1.严格过滤用户输入的数据,禁止执行系统命令 2.以可替代的函数替换命令执行函数
12.URL重定向漏洞
风险等级 中危–高危 URL重定向漏洞描述 URL重定向漏洞,通过URL修改为指定恶意站点,攻击者可以成功发起网络钓鱼诈骗并窃取用户凭证。 URL重定向漏洞危害 WEB应用程序执行指向外部站点的重定向 攻击者可能会使用WEB服务器攻击其他站点,这将增加匿名性 URL重定向漏洞修复方式 在网页代码中需要对用户输入的数据进行严格过滤。 部署WEB应用防火墙。
13.文件包含
风险等级 高危 文件包含漏洞描述 文件包含漏洞多数情况出现在PHP中,当然JSP中也存在,文件包含分为本地包含与远程包含。 文件包含漏洞危害 1.绕过WAF上转木马文件 2.加载有害的远程内容,影响程序运行。 文件包含漏洞修复方式 1.关闭allow_url_fopen 2.避免使用include参数 3.使用web检测文件内容
14.目录遍历
风险等级 中危 目录遍历漏洞描述 通过该漏洞可以获取系统文件及服务器的配置文件。利用服务器API,文件标准权限进行攻击。 目录遍历漏洞危害 黑客可获得服务器上的文件目录结构,从而下载敏感文件。 目录遍历漏洞修复方式 1.通过修改配置文件,去除中间件(IIS,APACHE,TOMCAT)的文件目录索引功能。 2.设置目录权限 3.在每个目录下创建一个index.html
15.永恒之蓝(ms17_010)
风险等级 高危 永恒之蓝漏洞描述 永恒之蓝漏洞是一个针对SMB服务(端口号为445)进行攻击的漏洞,攻击者利用这个漏洞实现溢出从而能在目标系统上执行任意代码。 SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接、客户端与服务器之间的信息沟通。 永恒之蓝漏洞危害 黑客利用永恒之蓝攻陷一台机器后会向该机器继续下发并运行永恒之蓝利用工具,让被攻陷的机器继续去扫描其他开放445端口的机器的同时下发并运行勒索病毒,加密用户系统中的文件,达到蠕虫式的传播,从而对全球上百个国家造成巨大影响。 永恒之蓝漏洞修复方式 1.一些失去安全支持的操作系统,例如Windows XP 和Windows Vista操作系统非常容易遭受次漏洞的攻击,建议用户尽早更新操作系统。 2.给系统打MS17-010补丁,或使用360安全卫士自带的“系统修复” 功能替用户打补丁。 3.使用360提供的”NSA武器免疫工具”进行免疫。 4.建议关闭445、135、137、138、139等端口。 5.及时备份,一定要离线备份重要文件。 6.开启防火墙。
16.Redis未授权访问漏洞
风险等级 高危 Redis未授权访问漏洞描述 Redis 默认情况下,会绑定在 0.0.0.0:6379,,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的config 命令,可以进行写文件操作,攻击者可以成功将自己的ssh公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以使用对应私钥直接使用ssh服务登录目标服务器。 简单说,漏洞的产生条件有以下两点: (1)redis绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源 ip 访问等相关安全策略,直接暴露在公网; (2)没有设置密码认证(一般为空),可以免密码远程登录redis服务。 Redis未授权访问漏洞危害 (1)攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据; (2)攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件; (3)最严重的情况,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器 Redis未授权访问漏洞修复方式
- 修改redis配置文件redis.conf,在文件代码里找到requirepass值,默认为空的密码,对其进行增加密码,写入一个字母加数字加大小写的组合,使redis远程连接的时候需要密码验证才能访问。
- 对默认的6379端口进行端口安全限制,限制IP远程连接,只允许内网进行连接。
17.shiro-02
修复建议:升级Shiro版本为1.2.5及以上;或在Shiro配置文件中加入rememberMeManager管理器来硬编码指定加密密钥。
18.短文件名泄露
漏洞危害: Microsoft IIS处理波浪符号存在一个短文件/文件夹名泄露问题,攻击者可利用此漏洞枚举web目录中的文件,从而获取敏感信息或.Net Framework的拒绝服务攻击。 修复建议:升级.NET Framework :如果web 环境不需要asp.net的支持,可以进入 Internet 信息服务(IIS)管理器 — Web 服务扩展 – ASP.NET 选择禁止此功能。禁止 url 中使用“~”或它的 Unicode编码。或修改注册表:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem] “NtfsDisable8dot3NameCreation”=dword:1