一、认证测试类
1.1 敏感数据明文传输
风险名称:敏感数据明文传输
风险级别:中风险
风险描述:恶意攻击者可能通过嗅探等攻击方式截取用户的登录信息
测试过程:浏览网站的过程中可使用抓包工具抓取请求包,查看请求和返回的信息中是否含有用户的敏感信息,如用户名、密码及个人信息(姓名、身份证号、手机号及住址等等)
风险分析:恶意攻击者如果对网站所在的网段进行嗅探,则当用户登录的时候该攻击者就可以获取到用户的用户名和密码等信息
加固建议:
进行数据传输时,对用户名和密码信息进行先加密、再发送的模式,可以有效的规避登录凭证被攻击者截取利用
1.2 后台存在默认密码
风险名称:后台存在默认密码
风险级别:高风险
风险描述:网站存在默认的后台管理密码,恶意攻击者凭借默认密码随意登入管理系统
测试过程:使用形如账号为admin,密码为123456,尝试登录网站
风险分析:恶意攻击者登入系统后,可进行增删改查操作,从而导致信息泄露以及服务器被入侵
加固建议:
立刻修改默认密码,使用数字,特殊符号,大小写字母混合的高强度密码
1.3 新用户使用默认密码
风险名称:新用户使用默认密码
风险级别:高风险
风险描述:新用户登录普遍存在使用默认密码现象,无初次登录修改密码策略
测试过程:新用户可使用密码为123456/111111/888888(根据系统提示的默认密码),登录网站
风险分析:可利用此方法尝试获取其他用户的敏感信息,造成不必要的风险
加固建议:
建议增加初次登录修改密码策略,初始密码必须需要修改才能使用
1.4 账户无错误锁定机制
风险名称:账户无错误锁定机制
风险级别:低风险
风险描述:攻击者可通过暴力破解、口令猜解等手段,尝试攻击获取管理账户的权限
测试过程:使用错误的账户/密码登录,抓包后重放多次(如10次或以上),查看其返回是否一致,是否无账户登录错误锁定机制
风险分析:账户无锁定策略可能会导致攻击者尝试攻击破解获取账户的权限
加固建议:
建议用户登录时添加锁定策略,错误次数达到指定次数以上锁定该账户指定时长,或者锁定IP等手段,不同权限等级的账户使用不同的锁定策略
1.5 认证绕过
风险名称:认证绕过
风险级别:高风险
风险描述:通过会话标识、参数来管理认证(Session IDs)因此如果使用会话标识或参数可推倒其产生结果算法,就回给一个恶意攻击者去发现其他的有效的会话标识或用户参数,从而冒充通过认证的用户进行操作
测试过程:输入任意账户密码,提交数据时拦截请求的响应包,修改为登录成功的响应标识(返回成功+测试账户或其他用户会话标识)后放行。
风险分析:通过构造会话标识、参数来猜解用户的会话标识、参数,冒充用户进行操作
加固建议:
使用高强度的加密算法加密会话标识段参数段
1.6 认证重放攻击
风险名称:认证重放攻击
风险级别:高风险
风险描述:攻击者发送一个目标主机已经接收过的包,特别是在认证过程中,用于认证用户身份所接收的包
测试过程:向服务器重放请求包,查看请求是否成功执行
风险分析:攻击者可以用重放方式伪装成用户,冒充用户进行下一步操作
加固建议:
1、可以利用时间戳进行防御,这个方法实现的前提是服务器的时间必须和用户的时间保持同步,在同一个时间,服务器和用户每隔一段时间就会更改自己的标识,用户输入登录之后,一段时间后标识就会改变,时间戳越小越保险
2、加随机数
3、加流水号
1.7 认证弱口令
风险名称:认证弱口令
风险级别:高风险
风险描述:弱口令是指容易被人猜测到或被破解工具破解的口令,一些仅包含简单数字或字母的简单口令,如“1234”、“abcd”、“admin”、“888888”等
测试过程:已知账户,使用弱口令形如“1234”、“abcd”、“admin”、“888888”等密码尝试登录
风险分析:通过弱口令攻击者可以进入后台修改资料,进入金融系统盗取钱财,进入OA系统可以获取企业内部资料,进入监控系统可以进行实时监控等等
加固建议:
- 不使用空口令或者系统缺省的口令
- 口令长度不小于八个字符
- 口令应该符合四分之三原则,既应包括大小写字母,数字和特殊字符中至少三项
- 至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令
1.8 不安全的验证码
风险名称:不安全的验证码
风险级别:中风险
风险描述:通过截取数据包,重复多次使用同一验证码,或验证码存在一定规律
测试过程:输入正确验证码并提交事务,截取带正确验证码的请求包,将该请求包进行重放,看事务是否正常执行或是否有一致的响应
风险分析:验证码更新机制较弱,较规律性可能会导致恶意攻击者的恶意利用
加固建议:
增强验证码随机性,增强验证码更新机制
1.9 验证码前端校验
风险名称:验证码前端校验
风险级别:高风险
风险描述:通过截取数据包,分析返回值中是否含有验证码,可用于绕过验证
测试过程:点击获取验证码后查看返回的响应包,是否含有明文的验证码或base64编码的验证码图片。
风险分析:验证码返回至前端,可能被攻击者用于绕过验证,如绕过手机验证码或邮箱等验证
加固建议:
验证码校验放在后台执行,禁止返回至前端
1.10 暴力破解
风险名称:暴力破解
风险级别:高风险
风险描述:在登录页面,输入用户名密码后,未设置验证码机制,可利用暴力破解窃取用户信息
测试过程:使用Burp Suite里Intruder模块尝试进行暴力破解
风险分析:登录界面缺少多因子验证机制,恶意攻击者可通过暴力猜解用户的用户名密码信息
加固建议:
登录界面添加动态随机验证码辅助认证
1.11 用户名/账户可以枚举
风险名称:用户名/账户可以枚举
风险级别:中风险
风险描述:通过登录失败时服务器反馈的信息来判断是否存在有效账户
测试过程:通过登录的返回信息,显示“用户名/密码不正确”,或响应包返回的信息不一致,即可判断有此漏洞,可使用Burp Suite里Intruder模块进行用户名/账户枚举
风险分析:攻击者可以通过尝试登录网页回复信息判断账户是否存在,如果网页回复信息如下:
• 客户端请求:有效的用户/密码错误-“服务器回答: ‘密码不正确’
• 客户端请求:错误的用户/密码错误-“服务器回答: ‘用户名不存在’
通过上述答复,用户就能知道第一次请求的是一个有效的用户名,因此可以枚举有效用户列表
加固建议:
在登录认证失败时回复统一使用“账户或密码错误”,而不是直接返回“账户错误”,“密码错误”等信息
1.12 HTTP认证泄露漏洞
风险名称:HTTP认证泄漏漏洞
风险级别:中风险
风险描述:Web目录开启了HTTP Basic认证,但未做IP限制,导致攻击者可以暴力破解帐号破解或者其他进一步的操作
测试过程:尝试打开该站点下/basic/index.php,成功打开,可尝试登录或进行暴力破解
风险分析:未对Web目录进行IP登录限制可能会被恶意攻击者利用构造攻击
加固建议:
对指定目录进行限制IP访问
二、会话管理类
2.1 会话固定攻击
风险名称:会话固定攻击
风险级别:高风险
风险描述:Web服务的Session ID是不变的,会话ID通过URL地址的查询参数携带道服务器,服务器不做检查,Web会话可能被劫持利用
测试过程:可在不同浏览器,重复/重新登录用户账号,观察其携带的参数是否不变,如不变,可尝试在清空缓存的状态下,直接打开带有该参数的链接,看该账号是否登录成功,是否可以正常使用该账号下的权限进行增删查改
风险分析:指Web服务的会话ID是确知不变的,攻击者为受害者确定一个会话ID从而达到攻击的目的
加固建议:
1.用户登录时生成新的Session ID。判断用户是否包含有效的会话标识符,否则服务器将会要求用户重新登录。
2.设置HttpOnly,关闭透明化Session ID,User-Agent验证,Token校验等
2.2 URL重定向漏洞
风险名称:重定向漏洞
风险级别:中风险
风险描述:攻击者可以将 参数中URL 值引入任意开发者的URL或钓鱼网站
测试过程:修改参数中的合法URL为非法URL,然后查看是否能正常跳转或者响应包是否包含了任意的构造URL
风险分析:部分HTTP参数会保留 URL 值,且会导致 Web 应用程序将请求重定向到指定的 URL,攻击者可以将 URL 值改成指向恶意站点,从而顺利启用网络钓鱼欺骗并窃得用户凭证
加固建议:
避免重定向到基于参数值的外部站点。倘若必须如此,请务必验证应用程序重定向到的 URL,避免重定向到不明站点
2.3 点击劫持漏洞
风险名称:点击劫持漏洞
风险级别:低风险
风险描述:通过覆盖不可见的框架误导受害者点击,虽然受害者点击的是他所看到的网页,但其实他所点击的是被黑客精心构建的另一个置于原网页上面的透明页面。这种攻击利用了HTML
2.4 Apache HttpOnly Cookie泄露
风险名称:Apache HttpOnly Cookie泄露
风险级别:中风险
风险描述:Apache HTTP Server 2.2.x到2.2.21在构建Bad Request(aka 400)错误文档期间没有正确地限制头信息,这允许远程攻击者通过构造的脚本获得HttpOnly Cookie的值
测试过程:利用恶意构造的脚本,使用户cookie大于4k,再请求该网站时会得到响应为400且当前用户cookie会显示出来,再使用正则匹配即可得出正常的cookie值
风险分析:攻击者可通过恶意Js脚本来访问/窃取网站的Cookie信息,并在稍后用于身份盗窃或用户伪装从而达到获取相关权限、数据等目的
加固建议:
将Apache升级到最新版本
2.5 Cookie缺失HttpOnly标识
风险名称:Cookie缺失HttpOnly标识
风险级别:低风险
风险描述:未启用HttpOnly属性可能导致 Cookie被窃取。窃取的Cookie可以包含标识站点用户的敏感信息,攻击者可以重放窃取的Cookie,以便伪装成用户或获取敏感信息
测试过程:查看响应包中的cookie中是否含有HttpOnly标识
风险分析:该属性未设置可能会导致跨站脚本威胁,可能导致Cookie及站点用户的资料被窃取
加固建议:
在Cookie中加上HttpOnly标识,以下网址为详细介绍Cookie中的HttpOnly标识
HttpCookie.HttpOnly 属性 (System.Web) | Microsoft Learn
2.6 Cookie缺失Secure属性
风险名称:Cookie缺失Secure属性
风险级别:低风险
风险描述:当Secure属性设置为Flase时,Cookie存在被窃听的风险
测试过程:使用https协议,用测试账号成功登录某站点,在不登出的情况下,再使用http协议访问该站点,确认是否会跳转至登录页面,或确认使用http协议访问过程中cookie是否正常发送
风险分析:只有当Secure属性设置为True时,Cookie只有在HTTPS协议下才能上传到服务器,而在HTTP协议下是没法上传的,未设置Secure的Cookie存在被窃听的风险
加固建议:
启用Cookie中的Secure属性,以下网址为详细介绍Cookie中的Secure属性
HttpCookie.Secure 属性 (System.Web) | Microsoft Learn
2.7 Cookie-Domain属性设置不当
风险名称:Cookie-Domain属性设置不当
风险级别:低风险
风险描述:Domain表示的是Cookie所在的域,Domain设置错误,攻击者可以进行跨域访问
测试过程:抓取数据包查看cookie的domain属性设定是否合理
风险分析:如果Domain设置错误,则允许其它存在漏洞的服务器接收到Cookie
加固建议:
应该将 Domain 设置为需要接收该 Cookie 的服务器。例如:如果应用存在于 app.mysite.com 服务器上,那幺它应该被设置成”;domain=app.mysite.com”而不能设置成 domain=.mysite.com
2.8 请求Token 泄漏
风险名称:请求Token泄漏
风险级别:中风险
风险描述:功能访问时Token可获取,可对本部分功能进行暴力猜解等攻击
测试过程:观察Token是否可破解,如使用MD5加密,或使用时间戳(请求或服务器时间)为Token等等。
风险分析:可利用该地址使用自写脚本对部分功能进行暴力猜解如:私密问题答案等
加固建议:
建议Token在请求时生成并不返回到客户端,改为内置函数
2.9 CSRF漏洞
风险名称:CSRF漏洞
风险级别:高风险
风险描述:CSRF(跨站请求伪造),是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。
测试过程:使用CSRFTester或Burp Suite中Engagement tools构造CSRF Poc为HTML,修改表单中某些参数,使用浏览器打开该HTML,提交表单后查看响应结果,看该操作是否成功执行。
风险分析:未验证Referrer或者使用Token导致用户或者管理员可被CSRF添加,
加固建议:
- 在表单中添加form token(隐藏域中的随机字符串);
- 请求referrer验证;
- 关键请求使用验证码
2.10 WebLogic SSRF漏洞
风险名称:WebLogic SSRF漏洞
风险级别:高风险
风险描述:WebLogic 10.0.2-10.3.6版本的SearchPublicRegistries.jsp处会引起SSRF漏洞
测试过程:可以使用UDDI功能对 WebLogic 可访问的所有主机端口进行探测。探测到的服务会返回合法的 SOAP 响应信息,甚至可以看到相应的完整信息。例如,可使用 https://[vulnerablehost]/uddiexplorer/SearchPublicRegistries.jsp?operator=http://10.0.0.4:23&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search尝试探测某内部主机是否监听23 端口。
风险分析:攻击者可以利用该漏洞绕过访问限制(如防火墙),进而将受感染的服务器作为代理进行端口扫描,甚至访问系统中的数据,
加固建议:
1.如果业务不需要UDDI功能,就关闭这个功能。可以删除uddiexporer文件夹,可以可在/weblogicPath/server/lib/uddiexplorer.war解压后,注释掉上面的jsp再打包。
2.安装oracle的更新包。http://www.oracle.com/technetwork/topics/security/cpujul2014-1972956.html
2.11无会话超时设置
风险名称:无会话超时设置
风险级别:中风险
风险描述:会话超时设置不当。即用户使用公共计算机访问网站,离开时,该用户没有点击退出,而是直接关闭浏览器。攻击者在一个小时后能使用相同浏览器通过身份认证。
测试过程:登录后静置或直接关闭网页,一小时后再直接打开主页链接进行操作,如访问资料或修改资料等。
风险分析:没有会话超时限制,攻击者在长时间后能使用相同浏览器通过身份认证,使用受害者的账号对数据进行更改,如增加垃圾数据或删改数据等操作。
加固建议:
限制会话寿命,增加合适的会话超时限制。
2.12会话标识未失效漏洞
风险名称:会话标识未失效漏洞
风险级别:中风险
风险描述:会话标识未失效导致登录校验绕过,即攻击者可以在浏览器中打开系统登录后的主页直接登入系统,获取账户操作权限。
测试过程:使用账号密码成功登录后点击退出系统,再在浏览器中直接打开登录后的主页。
风险分析:攻击者无需用户账户或密码即可绕过登录验证,使用受害者的账号对数据进行更改,如增加垃圾数据或删改数据等有害正常业务的操作。
加固建议:
用户登出系统后要销毁会话标识
三、数据校验类
3.1 XSS跨站脚本攻击-存储型
风险名称:XSS跨站脚本攻击-存储型
风险级别:高风险
风险描述:XSS跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息的方式诱使管理员浏览,从而获得管理员权限,控制整个网站。攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇请求、修改口令和下载非法的内容等请求
测试过程:Message一栏输入测试代码,提交。
风险分析:该漏洞可能被攻击者利用窃取或操纵客户会话和Cookie,它们可能用于模仿合法用户,从而使黑客能够以合法用户身份登录系统进行渗透。可执行攻击者恶意脚本
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测
2.当客户端输入限定值意外的字符后,立即转向自定义的错误页,而不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、等)特殊字符的传入
4.对应用层防火墙配置策略进行审查,是否配置了过滤特殊字符
3.2 XSS跨站脚本攻击-反射型
风险名称:XSS跨站脚本攻击-反射型
风险级别:高风险
风险描述:跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息的方式诱使管理员浏览,从而获得管理员权限,控制整个网站。攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇请求、修改口令和下载非法的内容等请求
测试过程:查询时,输入测试代码,提交
风险分析:该漏洞可能被攻击者利用窃取或操纵客户会话和Cookie,它们可能用于模仿合法用户,从而使黑客能够以合法用户身份登录系统进行渗透。可执行攻击者恶意脚本
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测
2.当客户端输入限定值意外的字符后,立即转向自定义的错误页,而不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、等)特殊字符的传入
4.对应用层防火墙配置策略进行审查,是否配置了过滤特殊字符
3.3 SQL注入
风险名称:SQL注入
风险级别:高风险
风险描述:恶意攻击者可通过SQL注入漏洞构造SQL注入语句,对服务器端返回特定的错误信息来获取有利用价值的信息,甚至可篡改数据库中的内容并进行提权
测试过程:参数aid存在注入。
风险分析:因没有对用户输入数据的合法性进行判断和限制,应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得数据库内容,如库名、表名、字段名、数据内容等。进一步可修改数据,甚至操控服务器
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测,对传入的参数进行限定
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、and、select等)特殊字符的传入
4.加密数据库内存储信息
5.与数据库链接并访问数据时,使用参数化查询方式进行链接访问
3.4 CRLF注入
风险名称:CRLF注入
风险级别:高风险
风险描述:HTTP消息头截断注入,可以向http消息头写入或覆盖任意数据
测试过程:
抓取数据包,在language参数加入%0aSet-cookie:JSPSESSID%3D1111,输入通过验证。
风险分析:HTTP使用CRLF来表示每一行的结束。这就意味着用户可以通过CRLF注入自定义HTTP Header,导致用户可以不经过应用层直接与Server对话。HTTP Header的定义就是基于这样的”Key:Value”的结构,用CRLF命令表示一行的结尾。”Location:”头用来表示重定向的URL地址,”Set-Cookie:”头用来设置Cookies。如果用户的输入经过验证,其中存在CRLF的字符就可以被用来达到欺骗的目的
加固建议:
服务端检测传递参数是否包含“%0d%0a”,对参数进行危险字符过滤,禁止(“%0d”、“%0a”等)特殊字符的传入
3.5 XPath注入
风险名称:XPath注入
风险级别:高风险
风险描述:XPath注入攻击利用两种技术,即XPath扫描和 XPath查询布尔化。通过该攻击,攻击者可以控制用来进行XPath查询的XML数据库。这种攻击可以有效地对付使用XPath查询(和XML数据库) 来执行身份验证、查找或者其它操作
测试过程:正常查询如下http://192.168.0.104/bWAPP/xmli_2.php?genre=action&action=search
构造查询语句http://192.168.0.104/bWAPP/xmli_2.php?genre=action')] | //* | //*[(‘ &action=search
注入成功。
风险分析:因没有对用户输入数据的合法性进行判断和限制,应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得数据库内容,如库名、表名、字段名、数据内容等。进一步可修改数据,甚至操控服务器
加固建议:
1.数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证
2.检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串
3.对于系统出现的错误信息,以IE错误编码信息替换,屏蔽系统本身的出错信息
4.参数化XPath查询,将需要构建的XPath查询表达式,以变量的形式表示,变量不是可以执行的脚本
5.通过MD5、SSL等加密算法,对于数据敏感信息和在数据传输过程中加密,即使某些非法用户通过非法手法获取数据包,看到的也是加密后的信息。
3.6 XML注入
风险名称:XML注入
风险级别:高风险
风险描述:XML注入是通过改写XML的数据内容来实现。XML通常用于存储数据,如果用户提供的数据是以XML的方式进行存储,那么对攻击者来说添加恶意代码至XML中进行攻击
测试过程:输入836239账户,显示的余额100,可兑换的只有3类奖品。
修改应答包,构造xml代码。
风险分析:Web程序代码中把用户提交的参数未做过滤就直接输出到XML中,可能引起XML注入攻击
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测,对传入的参数进行限定
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、and、select等)特殊字符的传入
4.在代码级输出时对XML特殊字符(“<”、“>”、“>]]”)进行转义
3.7 ORM注入
风险名称:ORM注入
风险级别:高风险
风险描述:ORM注入几乎与SQL注入攻击相同。但是注入漏洞存在于由ORM工具生成的代码中
测试过程:
风险分析: 在大多数情况下,ORM层中的漏洞是没有正确验证输入参数的定制代码的结果。大多数ORM工具提供安全的函数来逃避用户输入。但是,如果不使用这些函数,并且开发人员使用接受用户输入的自定义函数,则可能执行SQL注入攻击
加固建议:
1.使用ORM提供的安全函数
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.对标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、and、select等)特殊字符的传入
3.8 SSI注入
风险名称:SSI注入
风险级别:高风险
风险描述:Web服务器通常允许开发人员在静态HTML中嵌入小片段的动态代码,而不必处理全部的服务器端或客户端语言,称作服务器包含(SSI)在网页内容被返回给用户之前,服务器会执行网页内容中的SSI标签。恶意攻击者输入的内容可以显示在页面中
测试过程:在first name输入测试代码
可以看到由于没有正确配置服务器,我们已经可以看到网站目录中所有文件
打开一个终端,启动端口4444上的netcat侦听器
再次提交
风险分析:此漏洞允许攻击者将代码插入到HTML代码中执行,通过构造甚至执行远程代码执行
加固建议:
1.清理用户输入:禁止可能支持SSI的模式或字符
2.由于SSI会带来许多安全风险,建议您不在Web站点中使用SSI
3.9 HTTP响应头注入
风险名称:HTTP响应头注入
风险级别:高风险
风险描述:Web程序代码中把用户提交的参数未做过滤就直接输出到HTTP响应头中,攻击者可以利用该漏洞来注入HTTP响应头,可以造成XSS攻击、欺骗用户下载恶意可执行文件等攻击
测试过程:输入foobar%0a%0aContent-Length:%200%0a%0a%0a%0aHTTP/1.1%20200%20OK%0a%0aContent-Type:%20texthtml%0a%0aContent-Length:%2047%0a%0a%0d%0aHacked
风险分析:通过恶意攻击者构造的参数直接输入到HTTP响应头中,从而进行攻击
加固建议:
- 在设置HTTP响应头的代码中,过滤回车换行(%0d%0a、%0D%0A)字符。
- 不采用有漏洞版本的Apache服务器,同时对参数做合法性校验以及长度限制,谨慎的根据用户所传入参数做HTTP返回包的Header设置
3.10 XXE外部实体注入
风险名称:XXE外部实体注入
风险级别:高风险
风险描述:系统存在XXE外部实体注入,可通过外部引用dtd的方式获取系统文件信息
测试过程:
风险分析:攻击者可利用外部引用dtd的方式来执行服务器系统命令,从而获取服务器敏感信息,可造成资料丢失等风险产生
加固建议:
1.检查所使用的底层XML解析库,默认禁止外部实体的解析
2.使用第三方应用代码及时升级补丁
3.同时增强对系统的监控,防止此问题被人利用
3.11 命令注入漏洞
风险名称:命令注入漏洞
风险级别:高风险
风险描述:Web程序代码中把用户提交的参数未做过滤就直接使用Shell执行,攻击者可以执行任意系统命令
测试过程:输入127.0.0.1提交,正常结果如下
输入127.0.0.1&net user,提交。用户名被列举出来了。
风险分析:Web程序代码中把用户提交的参数未做过滤就直接输出,通过修改参数,攻击者可直接使用Shell,对系统执行命令
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测,对传入的参数进行限定
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.在代码级调用Shell时,对命令行中的特殊字符进行转义(|、&、;等),防止执行其他非法命令。
3.12 本地文件包含漏洞
风险名称:本地文件包含漏洞
风险级别:高风险
风险描述:测试发现下载相关链接中参数未进行过滤,用户可任意下载文件
测试过程:http://192.168.116.129/DVWA-master/vulnerabilities/fi/?page=include.php
构造url
http://192.168.116.129/DVWA-master/vulnerabilities/fi/?page=/etc/shadow
报错,显示没有这个文件,说明不是服务器系统不是Linux,但同时暴露了服务器文件的绝对路径
构造url(绝对路径)成功读取了服务器的php.ini文件
风险分析:由于程序员未对用户可控的变量进行输入检查,导致用户可以控制被包含的文件,成功利用时可以使服务器将特定文件当成服务端脚本执行,从而导致攻击者可获取一定的服务器权限,同时可能导致服务器上的敏感配置文件被攻击者读取
加固建议:
建议对URL参数内容进行检测和过滤,禁止参数内容中出现 “.”“\”“?”“空字符”“/”“%”等特殊字符。同时保持现有文件与目录访问权限,防范利用此漏洞读取服务器配置文件
3.13 远程文件包含漏洞
风险名称:远程文件包含漏洞
风险级别:高风险
风险描述:如果PHP的配置选项allow_url_include为on的话,则include/require函数是可以加载远程文件的,这种漏洞被成为远程文件包含
测试过程:在远程服务器 192.168.116.128上传一个文件 phpinfo.txt
构造url
http://192.168.116.129/DVWA-master/vulnerabilities/fi/?page=http://192.168.116.128/phpinfo.txt
远程执行命令成功
风险分析:由于程序员未对用户可控的变量进行输入检查,导致用户可以控制被包含的文件,成功利用时可以使服务器将特定文件当成服务端脚本执行,从而导致攻击者可获取一定的服务器权限,同时可能导致服务器上的敏感配置文件被攻击者读取
加固建议:
- 修改配置文件,在php.ini中进行设置allow_url_include = ‘off’,在.htaccess中进行设置php_flag allow_url_include off
- 建议对URL参数内容进行检测和过滤,禁止参数内容中出现 “.”“\”“?”“空字符”“/”“%”等特殊字符。同时保持现有文件与目录访问权限,防范利用此漏洞读取服务器配置文件
3.14 文件上传漏洞
风险名称:文件上传漏洞
风险级别:高风险
风险描述:接受文件上传的Web程序未对文件类型和格式做合法性校验,导致攻击者可以上传Webshell(.php、.jsp等)或者非期望格式的文件(.jpg后缀的HTML文件)
测试过程:上传文件,选择文件进行上传
得知上传路径/hackable/uploads/test.php,使用菜刀连接。
风险分析:未对上传文件的格式内容进行校验,恶意攻击者通过上传包含恶意代码的文件,从而攻击利用获得服务器的权限
加固建议:
对上传文件格式进行严格控制,建立文件格式白名单制,限定只允许上传文档类或图片类格式附件,如PDF、DOC、JPG、GIF等,除名单内的任何格式均不能上传
**3.15 **
风险名称:未验证文件上传类型
风险级别:中风险
风险描述:通过检测,发现未对上传文件类型进行严格控制,可以上传asp、exe、asa、1.asp;1.jpg等危险类型文件
测试过程:新增资料处,可以选择任意类型的文件上传。
风险分析:经过分析,当前对上传文件进行逻辑路径的分离是较为合理的架构方式,能够防范Webshell的解析执行并起到防盗链的效果,但是由于未对上传文件格式进行限制,一旦后台管理被突破,不法分子就可以将木马地址绑定在pdf文件中,或将pdf文档替换成exe木马,从而对访问本站的用户造成一定的危害
加固建议:
对上传文件格式进行严格控制,建立文件格式白名单制,限定只允许上传文档类或图片类格式附件,如PDF、DOC、JPG、GIF等,除名单内的任何格式均不能上传
3.16 本地校验绕过
风险名称:本地校验绕过
风险级别:中风险
风险描述:恶意攻击者截取数据绕过本地验证上传恶意文件,从而进行恶意攻击
测试过程:直接上传其它类型的文件,被禁止上传
先上传图片,通过抓取数据包,修改文件后缀为jsp,上传成功。
风险分析:恶意攻击者通过阶段数据包,上传而恶意文件从而对服务器,网站进行破坏攻击
加固建议:
对于文件上传等校验应在前后端均进行校验。
四、通信安全类
4.1 未使用加密传输协议
风险名称:未使用加密传输协议
风险级别:低风险
风险描述:服务器Request信息中涉及系统敏感信息,HTTP协议明文传送该敏感信息
测试过程:利用数据拦截工具,制作一个中间人攻击的场景,获取到一个登陆操作的请求包,发现包中的登陆账号密码都是明文传输
风险分析:可导致账户敏感信息泄露,攻击者可以截获上述信息,查看、篡改数据内容,或者进一步攻击
加固建议:
建议对敏感信息数据以加密方式传输
4.2通过未加密信道发送敏感数据
风险名称:通过未加密信道发送敏感数据
风险级别:中风险
风险描述:在目此表单是从不安全网页(HTTP)页面提供的。此页面可能使用中间人攻击劫持,攻击者可以替换表单目标
测试过程:利用数据拦截工具,制作一个中间人攻击的场景,发现一个未使用https加密通信的网站,从拦截的请求包中发现一个未加密处理及传输的表单,可以在表单中获取到用户提交的表单信息。
风险分析:可能受到恶意攻击者的劫持,可替换原目标网站
加固建议:
数据所在的表单应该被安全的(HTTPS)页面提供服务
**4.3 SSL/TLS RC4 信息泄露漏洞 **
风险名称:SSL/TLS RC4 信息泄露漏洞
风险级别:中风险
风险描述:在TLS协议和SSL协议中使用的RC4算法可以允许远程攻击者获取由包含多个单字节偏置引起的敏感信息。攻击者可以通过使用相同明文进行纯文本恢复攻击并获取敏感信息的大量会话中的密文的统计分析来利用此漏洞
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
nmap -p 443 –script=ssl-enum-ciphers TARGET
风险分析:恶意攻击者可通过此漏洞恢复纯文本信息,因此造成信息泄露
加固建议:
1.切换到使用CBC模式密码套件
2.切换到使用AEAD密码组,如AES-GCM
3.更多修复信息: On the Security of RC4 in TLS
4.4 OpenSSL Heartbleed漏洞
风险名称:OpenSSL Heartbleed漏洞
风险级别:高风险
风险描述:SSL标准包含一个心跳选项,允许连接一端的主机发出一条简短的信息确认另一端的主机是否存活,并获取反馈。可以通过巧妙的手段发出恶意心跳信息,欺骗另一端的主机泄露机密信息,受影响的主机可能会因此而被骗,并发送服务器内存中的信息
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
nmap -p 443 –script= ssl-heartbleed TARGET
确定存在heartbleed漏洞后可利用msf工具模块进行漏洞利用
风险分析:窃取对方主机内存中的信息,对方的内存信息可能存在用户名,密码等敏感信息
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
4.5 OpenSSL CCS注入
风险名称:OpenSSL CCS注入
风险级别:高风险
风险描述:CCS消息本应该是在握手加密参数协商完成之后最终确认消息发送之前来发送,但是CCS消息却在加密参数协商完成之前发送,中间人攻击可以利用这点特性在一个SSL握手过程中向客户端和服务端分别发送一个CCS包并用长度为零的预主密钥来协商会话密钥,这样攻击者就可以知道会话密钥 并可以篡改或截获SSL通信数据
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
Nmap -p 443 –script=ssl-ccs-injection TARGET
风险分析:攻击者可以发起中间人攻击并利用此漏洞篡改或监听SSL加密传输的数据
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
4.6 OpenSSL POODLE漏洞
风险名称:OpenSSL POODLE注入
风险级别:中风险
风险描述:俗称“贵宾犬”漏洞,此漏洞是针对SSL3.0中CBC模式加密算法的一种Padding Oracle攻击,可以让攻击者获取SSL通信中的部分信息明文,如果将明文中的重要部分获取了,比如Cookie,Session,则信息的安全则出现了隐患
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
Nmap -p 443 –script=ssl-poodle TARGET
风险分析:黑客可利用“POODLE”漏洞劫持用户与网站之间传输的数据,窃取用户名、密码等敏感信息。此外,攻击者还可随意篡改用户接收到的信息,甚至向传输数据中植入恶意代码,进而对用户进行钓鱼、挂马等一系列攻击
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
4.7 OpenSSL Encrypt-Then-Mac renegotiation DDOS漏洞
风险名称:OpenSSL Encrypt-Then-Mac renegotiation DDOS漏洞
风险级别:中风险
风险描述:OpenSSL 1.1.0版本在握手阶段的重协商过程中,所用的Encrypt-Then-Mac扩展若不在初始握手中(或反之易然),则会造成OpenSSL崩溃(取决于密码套件),服务器和客户端均受到影响
测试过程:检测openssl的版本,若版本是1.1.0则漏洞存在。
风险分析:恶意攻击者可对存在此漏洞的服务器和客户端进行拒绝服务攻击
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
OpenSSL Project已经为此发布了一个安全公告(20170216)以及相应补丁地址:
https://www.openssl.org/news/secadv/20170216.txt
4.8 OpenSSL受戒礼漏洞
风险名称:OpenSSL受戒礼漏洞
风险级别:低风险
风险描述:服务器支持RC4协议,存在受戒礼攻击(Bar Mitzvah Attack)风险
测试过程:利用openssl工具,执行下列语句:
1 | openssl s_client -TARGET:443 –cipher RC4 |
如果能够查看到证书信息,那么就是存在风险漏洞
如果显示sslv3 alerthandshake failure,表示该服务器没有这个漏洞。
风险分析:攻击者可能解密经过RC4加密的通信数据,从而造成用户敏感信息、数据泄漏
加固建议:
1、禁止apache服务器使用RC4加密算法
vi /etc/httpd/conf.d/ssl.conf修改为如下配置
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!RC4
需要重启apache服务/etc/init.d/httpd restart
2、在WebLogic配置文件中填写只允许服务器支持的加密协议,例如:
想要支持的加密协议A
想要支持的加密协议B
3.更多修复信息:
《Attacking SSL when using RC4》.Itsik Mantin.BLACK HAT ASIA 2015.
访问的文章审核中… - FreeBuf网络安全行业门户
4.9 OpenSSL Weak ciphers漏洞
风险名称:OpenSSL Weak ciphers漏洞
风险级别:中风险
风险描述:远程主机支持SSL加密,提供弱加密或者不加密的应用
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
Nmap -p 443 –script=ssl-enum-ciphers TARGET
风险分析:远程主机支持SSL加密使用弱密码,如果在同一网段中更容易被利用,可能造成敏感数据泄漏
加固建议:
配置受影响的应用程序以避免使用弱加密SSL,详情请查阅: https://www.openssl.org/
五、业务流程安全类
5.1 越权漏洞
风险名称:越权漏洞
风险级别:高风险
风险描述:服务器端对用户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致恶意攻击者账号拥有了其他账户的增删改查功能
测试过程:1、在需要登陆的功能点中,查看url,header头部,post数据中是否有userid,username,token等身份id或名称的字段,通过修改这些字段重新发包测试是否增删改查到其它用户的数据
2、使用普通权限用户,直接访问高权限用户(管理员)才能访问的功能点和API等
风险分析:服务器过分信任用户提交的数据请求并且未对用户权限进行判定,可能导致恶意攻击者拥有其他用户的操作权限,平行越权可导致相同权限的用户之间可以进行增改删查等功能,可能造成大批量数据泄露,垂直越权可导致低权限的用户拥有着高权限的执行操作能力,可能会造成更严重的安全事故
加固建议:
在进行用户操作时,通过Session判断该用户是否具有该功能的操作权限
5.2 用户未授权访问
风险名称:用户未授权访问
风险级别:高风险
风险描述:未授权访问页面,未授权就可访问指定资源
测试过程:1、通过目录扫描,直接扫描到需要登陆才能访问的功能点地址,并成功访问
2、通过正常登陆后,收集登陆后的各功能点url地址、操作地址和API等,退出登陆或使用另一浏览器进行测试这些地址和操作在未登录时能否访问操作
风险分析:攻击者如为外部人员,可通过此风险查询管理功能,实行更有针对性的攻击
加固建议:
建议对指定界面内容进行访问授权,只收授权成功才有权限进行访问
5.3 后台管理系统未授权访问
风险名称:后台管理系统未授权访问
风险级别:高风险
风险描述:网站中,部分界面只有管理员才能够访问,但是未对用户访问权限进行设置,导致用户只要构造出了正确的URL,就能够访问到这些网页,存在未授权访问后台管理系统,存在未授权审批添加修改网站数据
测试过程:1、直接扫描后台目录文件,直接访问扫描到的后台功能地址
2、登陆后台后,收集后台功能点、API等地址,退出后台,未登陆状态直接访问后台各功能点和API
风险分析:未经授权访问网站管理后台,未授权对数据进行增改删查操作
加固建议:
基于页面严格规范访问控制
5.4 绕过原密码修改密码
风险名称:绕过原密码修改密码
风险级别:高风险
风险描述:绕过修改密码时原密码的安全限制,从而达到任意原密码即可修改当前密码的目的
测试过程:1、原密码与修改密码分开两步,通过修改url地址直接跳转到修改密码的步骤从而直接绕过了原密码的校验
2、原密码与新密码修改分开两步,通过修改原密码校验步骤的返回数据包(改为ok,success,true,1等成功标识),从而直接跳转到下一步输入新密码
风险分析:在不知道原密码的情况下,绕过原密码的安全限制,任意修改员工的密码
加固建议:
建议在服务端判断原密码的正确性,服务端在原密码校验后才允许修改密码
5.5 任意重置用户密码
风险名称:任意重置用户密码
风险级别:高风险
风险描述:系统未对重置密码的用户身份进行校验或校验不严谨,导致可以绕过用户身份校验或篡改校验结果,从而能够重置任意用户的密码,甚至包括管理员的密码。
测试过程:1、通过修改返回数据包中的标识篡改身份校验结果从而进入输入新密码的步骤,成功重置用户密码
2、手机或邮箱验证码过于简单,可以直接爆破,从而进入下一步重置用户密码
3、发送手机或邮箱验证码,验证码直接在发送数据包的返回数据包中泄露,导致绕过验证直接重置用户密码
风险分析:攻击者可利用该方式重置任意用户的密码,从而登陆系统获取相应的操作权限,甚至直接重置管理员密码,获取到系统管理员权限。
加固建议:
建议在重置密码的功能点中,禁止仅以返回数据包中的标识作为跳转下一步的标识,更新密码时,再一次在服务端对用户身份进行校验,或直接使用服务端保存session进行对应用户密码的更新,加强验证码的校验机制,禁止反馈验证码到客户端,验证码不可复用,且存在较短的时效性。
5.6 密码重置url可爆破
风险名称:密码重置url可爆破
风险级别:高风险
风险描述:系统密码重置的url中,使用时间戳或弱token作为当前用户重置密码的链接区分,导致可以通过爆破的手段直接获取到用户的密码重置链接地址。
测试过程:1、输入任意的邮箱地址,发送密码重置链接,然后通过爆破链接中的时间戳或token值,直接获取该邮箱用户的重置链接进行密码重置。
风险分析:攻击者可利用该漏洞重置任意邮箱用户的密码,从而获取到该用户的系统权限进行操作。
加固建议:
使用md5加盐随机码或自定义加密方式等加密时间戳或token
5.7 批量重置所有用户密码
风险名称:批量重置所有用户密码
风险级别:高风险
风险描述:系统使用客户端传递的身份凭证作为修改密码的用户身份依据,且更新密码的数据包可以重复发送,导致可以批量的修改userid等重置所有用户的密码
测试过程:1、更新密码的最后一步,通过userid,username等客户端传递的数据进行更新对应用户密码,且该数据包可以重复发送,导致可以修改userid等批量重置所有用户密码
风险分析:攻击者利用该漏洞,可以直接批量快速重置所有系统用户的密码,甚至包括管理员密码,
加固建议:
使用服务端的session等信息校验用户身份,并修改密码
5.8 修改任意用户信息
风险名称:修改任意用户信息
风险级别:高风险
风险描述:系统未对用户权限进行限制,普通用户可修改同级甚至超级管理员的用户资料信息
测试过程:1、修改自己的个人信息时,抓取数据包,篡改用户凭证(userid等),直接修改到其它用户的个人信息。
2、管理员修改用户信息的API接口没有权限限制,任意已登陆用户只要知道API地址,就可以直接访问进行修改任意用户信息
风险分析:攻击者可利用任意用户操控同级用户或者管理员权限进行操作,通过管理员权限进行增删改查用户资料等操作甚至影响系统安全
加固建议:
建议对各级用户进行权限限制,例如水平越权服务端通过Cookie获取当前用户ID,Cookie进行加密传输,无法修改加密信息。垂直越权需要对每个页面的加载之前进行权限验证即可
5.9 支付逻辑漏洞
风险名称:支付逻辑漏洞
风险级别:高风险
风险描述:用户在支付过程中,通过修改提交数据包的数据,实行“刷钱”、“免费购买”等非工作逻辑行为
测试过程:1、支付时,截取数据包,修改单价为负数,导致用户不花钱甚至直接余额增长,且买到了商品
2、支付时,截取数据包,篡改购买数量为负数或尽可能大,导致低价格购买大量商品等情况。
风险分析:支付逻辑代码控制不严谨,对输入参数控制不严格,导致绕过,异常购买
加固建议:
对购买参数进行严格的过滤,如购买数量为大于0的整数,产品单价不能为负数,并且对支付界面做一些异常处理等
5.10 恶意注册用户
风险名称:恶意注册用户
风险级别:中风险
风险描述:在用户注册过程中通过截取数据包,重放注册数据包绕过验证码进行批量注册
测试过程:1、用户注册功能,无验证码,抓取注册的数据包,重复发送,批量注册大量账号
2、用户注册功能,验证码可绕过或爆破,重复发送注册的数据包,批量注册大量账号
风险分析:后台未校验验证码的使用次数和时间,只校验了其准确性,可被利用进行多次注册
加固建议:
后台校验验证码的使用测试和时间
5.11 注册覆盖
风险名称:注册覆盖
风险级别:高风险
风险描述:在注册时,系统未对新注册的账户名进行校验是否已存在,导致直接覆盖了已存在用户的注册用户名和密码,可以登陆该用户进行操作。
测试过程:1、注册时,输入已存在用户的手机号或用户名等登陆名,直接注册,成功后登陆该账号,可以获取到该账号所有的信息以及进行相关权限的操作
风险分析:利用该漏洞,可以直接覆盖所有账号的密码,登陆任意已存在账号,并进行账号对应权限的操作
加固建议:
注册时校验用户名或手机号等是否已存在
5.12 手机号/用户名爆破
风险名称:手机号/用户名爆破
风险级别:低风险
风险描述:用户注册,登陆,忘记密码功能,用户名或手机号的单独校验存在与否,且无验证码,或验证码可绕过,导致可以批量爆破获取大量已存在的用户名或手机号
测试过程:1、在注册,登陆,忘记密码功能,抓取数据包,发现用户名或手机号单独校验是否存在,且该数据包可以重复发送,利用burpsuite进行批量爆破操作
风险分析:利用该漏洞,可以获取到系统大量的已存在用户名或手机号,并用于进一步渗透。
加固建议:
加入验证码防止暴力破解,或限制数据包访问频率,或模糊化反馈信息
5.13 验证码重放攻击
风险名称:验证码重放攻击
风险级别:中风险
风险描述:在提交信息的时候,输入的验证码通过抓包进行重放,重放时验证码没有进行重置更新,造成重复信息提交,可能引起重放攻击
测试过程:1、在存在验证码的功能点,如登陆,直接截取登陆校验数据包,验证码没有自动更新,可以重复提交校验的数据包,爆破用户名密码
风险分析:可能遭到恶意攻击者进行重复留言,恶意注册等重放攻击
加固建议:
增加验证码时效性,限制验证码不可复用,且自动更新
5.14 手机验证码暴力破解
风险名称:手机验证码爆力破解
风险级别:高风险
风险描述:通过暴力破解手机验证码,猜解正确的验证码的数值从而进行验证
测试过程:1、直接利用burpsuite抓取校验手机验证码的数据包,对验证码进行暴力破解
风险分析:弱验证码可导致恶意攻击者进行暴力猜解,导致进行一些修改密码,修改信息的一些恶意操作
加固建议:
增强验证码混淆度,为数字字母等,增加验证码时效机制
5.15 验证码绕过
风险名称:验证码绕过
风险级别:高风险
风险描述:服务端没有对手机/邮箱验证码进行二次校验,导致当攻击者可以利用修改返回值的方式直接跳转到设置新密码页面,然后重置用户的密码
测试过程:1、输入任意的手机/邮箱验证码,截取返回数据包,修改返回数据包中的标识值(ok,scuess,true等),直接进入下一步设置新密码
风险分析:通过修改返回数据包,可绕过短信/邮箱验证码直接重置该账号密码
加固建议:
服务端对手机/邮箱的验证码进行二次校验
5.16 短信验证码泄露
风险名称:短信验证码劫泄露
风险级别:高风险
风险描述:在进行短信功能验证模块时,用户通过抓取数据包得知验证码的数值,从而进行验证绕过
测试过程:1、发送短信验证码时,利用burpsuite直接截取返回数据包,发现返回数据包中存在发送的验证码明文,直接使用该验证码进入下一步
风险分析:通过抓取的数据包得知验证码的数值进行验证,绕过了短信验证功能模块
加固建议:
短信验证码禁止发送给客户端,而是由服务端直接发送给手机
5.17 验证码无绑定
风险名称:验证码无绑定
风险级别:高风险
风险描述:验证码没有与唯一的手机号/邮箱绑定校验,导致可以使用其它手机/邮箱的验证码成功验证,从而绕过验证机制
测试过程:1、输入任意手机号/邮箱发送验证码,再输入自己的手机号/邮箱发送验证码,利用自己的手机/邮箱收到的验证码,与第一次发送验证码的手机号/邮箱进行校验,成功绕过验证进入下一步
风险分析:利用该漏洞,可以绕过手机/邮箱验证码的校验机制,直接进入下一步进行操作
加固建议:
验证码与手机/邮箱进行绑定校验
5.18 验证码不唯一
风险名称:验证码不唯一
风险级别:高风险
风险描述:手机/邮箱验证码可以同时存在多个,导致可以同时发送大量验证码,然后轻易的就可以利用爆破得到其中一个正确验证码并使用,从而绕过验证码校验
测试过程:1、同时给同一手机/邮箱发送两个验证码,然后使用第一次发送的验证码进行校验,发现可以校验成功,则可以同时发送多个验证码给同一手机/邮箱,只要爆破出其中一个就可以进入下一步,大大降低了爆破难度。
风险分析:利用该漏洞,攻击者可以轻易的就爆破得到正确的手机/邮箱验证码,绕过手机/邮箱校验从而进入下一步操作
加固建议:
限制同一手机/邮箱,在同一时间只能拥有一个正确的验证码
5.19 短信轰炸
风险名称:短信轰炸
风险级别:中风险
风险描述:短信验证功能可向绑定手机发送任意次数验证码
测试过程:1、抓取发送手机验证码的数据包,利用burpsuite大量重复发送该数据包成功
风险分析:该漏洞可向绑定手机发送验证信息,可以用自写脚本遍历银行卡号发送任意数量短信,影响用户体验以及造成短信服务过度消费
加固建议:
发送功能处加入验证码限制,或限制短信发送频次
5.20 邮件轰炸
风险名称:邮件轰炸
风险级别:中风险
风险描述:邮件验证功能可向绑定手机发送任意次数验证码
测试过程:1、抓取发送邮箱验证码的数据包,利用burpsuite大量重复发送该数据包成功
风险分析:该漏洞可向绑定邮箱发送验证信息,可以用自写脚本遍历银行卡号发送任意数量邮件验证码,影响用户体验以及造成邮件服务过度消费
加固建议:
发送功能处加入验证码限制,或限制邮件发送频次
5.21 密保答案泄露
风险名称:密保答案泄露
风险级别:高风险
风险描述:密保答案直接在返回数据包中泄露,导致可以直接使用泄露的答案绕过密保校验,进入下一步设置新密码
测试过程:1、忘记密码功能,使用密保的方式重置密码,获取密保问题的时候,抓取数据包,发现返回数据包中同时存在密保问题和答案,直接使用该问题和答案,成功进入下一步设置新密码
风险分析:利用该漏洞,攻击者可以修改任意有密保的用户密码,从而登陆系统获取相应权限
加固建议:
密保答案禁止返回给客户端
5.22 不安全的Sessionid机制
风险名称:不安全的Sessionid机制
风险级别:高风险
风险描述:用于登陆用户身份识别判断的SessionId保存于客户端或url中,且只要客户端存在已分配未过期的SessionId值时,登陆后台系统不会重新分配SessionId,而是直接使用已分配的SessionId作为登陆后的凭证,导致可以钓鱼或中间人攻击获取和覆盖用户sessionid,得到用户账号权限
测试过程:1、登陆系统,发现sessionid直接存在于url当中
2、在cookie中设置seesionid值,并登陆系统,发现系统直接使用该sessionid值作为登录后的身份凭证,未重新更新分配sessionid
风险分析:利用该漏洞,攻击者可以对后台用户进行钓鱼,中间人等多种手段的攻击,且一旦成功则获取到该用户所有的操作权限。
加固建议:
1、 禁止以客户端传递的sessionid作为登陆之后的身份凭证,应以每次登陆,服务端新生成的凭证为准
2、 禁止未登陆便分配sessionid给客户端,且作为登陆之后的用户凭证
3、 sessionid禁止保存于url和客户端中
六、敏感信息保护类
6.1 数据库错误信息
风险名称:数据库错误信息
风险级别:低风险
风险描述:在发生输入错误时,数据库报错提示过于详细,可能导致恶意攻击者的进一步利用
测试过程:漏洞证明:
正常页面回显。
报错页面回显。
风险分析:可能导致数据库系统敏感信息的泄露或者被进行更深一步的攻击利用
加固建议:
屏蔽或者隐藏记录此类信息,
6.2 敏感信息提示泄露
风险名称:敏感信息提示泄露
风险级别:中风险
风险描述:精准的提示信息讲给恶意攻击者带来明确的攻击信息
测试过程:测试过程::
用户猜解返回:
风险分析:恶意攻击者可根据提示的信息,判断系统是否存在该用户,造成信息泄漏或者对齐有效的攻击
加固建议:
模糊化提示信息,如提示“用户名或密码不正确”,“用户名或密码错误”等
6.3 内部IP泄露
风险名称:内部IP泄露
风险级别:低风险
风险描述:应用程序代码中可能包含一些注释语句或测试语句,组织机构的内部IP可能出现在这些不被执行的语句中
测试过程:漏洞证明:
发送不存在的脚本页面均会返回本地内网真实IP
服务器配置错误回显,处理不当造成泄露内网真实IP。
风险分析:此信息在渗透测试中属于辅助信息,攻击者通过此信息可对内部网络结构进行大致的了解,以便渗透到内网时进行利用
加固建议:
删除相关注释语句、测试语句,或者使用域名替换真实IP
6.4 报错敏感信息泄露
风险名称:报错敏感信息泄露
风险级别:低风险
风险描述:攻击者可通过此风险,获取系统敏感信息,如:数据库信息、服务器信息、源代码查询语句结构等
测试过程:
邮箱尝试注入
返回sql数据库报错页面。
风险分析:攻击者可先根据系统提示精心构造错误,使服务器爆出更明确的敏感信息
加固建议:
建议只输出基本信息或相对能排错的信息,对于敏感信息(如:数据库查询语句、服务器信息等)不要泄漏
6.5 数据库明文存储
风险名称:数据库明文存储
风险级别:中风险
风险描述:数据库使用明文传输,如果存在漏洞,数据库的敏感信息将直接会泄露
测试过程:漏洞证明:
加密密码采用MD5,可破解。
破解成功。
风险分析:采用明文存储的敏感信息,存在漏洞的系统中,可悲攻击者直接获取并利用
加固建议:
建议使用MD5+Salt加密存储敏感信息
6.6 注释敏感信息泄露
风险名称:注释敏感信息泄露
风险级别:低风险
风险描述:攻击者可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名或敏感文件位置
测试过程:
开发商处理页面脚本,修改页面信息处理不当。打开脚本Url:
http://www.wanhu.com.cn/wangzhankaifa/ezsite
得知厦门银行门户网站实在这里购买系统并实施搭建web服务器搭建。
风险分析:攻击者可能会收集有关Web程序的敏感路径等信息,收集到相关敏感信息能辅助进一步的渗透
加固建议:
- 请勿在 HTML 注释中遗留任何重要信息(如文件名或文件路径)
- 从生产站点注释中除去以前(或未来)站点链接的跟踪信息
- 避免在 HTML 注释中放置敏感信息
- 确保 HTML 注释不包括源代码片段
- 确保程序员没有遗留重要信息
6.7 文件内泄露敏感信息
风险名称:文件内泄露敏感信息
风险级别:低风险
风险描述:在HTML、JS、CSS文件中包含敏感信息,导致敏感信息被恶意攻击者收集利用操作
测试过程:
泄漏真实路径信息。
风险分析:攻击者可能会收集有关Web程序的敏感路径等信息,收集到相关敏感信息能辅助进一步的渗透
加固建议:
1.请勿在 HTML 注释中遗留任何重要信息(如文件名或文件路径)
2.请勿在 JS文件中遗留任何重要信息(如文件名或文件路径)
3.请勿在 CSS文件中遗留任何重要信息(如文件名或文件路径)
6.8 JBOSS管理敏感信息泄露
风险名称:JBOSS管理敏感信息泄露
风险级别:低风险
风险描述:JBOSS服务器敏感信息泄露,使攻击者可更快速了解到服务器部署内容,攻击者可根据对应版本的漏洞进行进一步渗透
测试过程:
风险分析:攻击者可得到JBOSS服务器的敏感信息,从而构造更深一层的攻击
加固建议:
在服务器端配置禁止互联网用户访问该页面
6.9 站点的绝对路径泄露
风险名称:站点的绝对路径泄露
风险级别:中风险
风险描述:由于未对服务器返回的出错信息进行良好的处理,一旦用户提交了异常的数据或指令后,服务器将会返回异常的出错信息,通常会包含敏感的配置内容,如WEB绝对路径、数据库路径等
测试过程:
风险分析:此信息在渗透测试中属于辅助性的关键信息,获取绝对路径后攻击者即可了解WEB站点的存放目录,随后可以配合先前获取的权限进行Webshll等恶意文件的上传,通过此信息,攻击者可以很快的定位到上传后文件的访问路径,进而进行下一步攻击
加固建议:
建立错误信息预控制机制,在脚本中加入出错后的处理机制,一旦访问者提交了异常数据,立即返回预定制的出错页面,或者直接返回首页
6.10 Robots包含敏感信息
风险名称:Robots包含敏感信息
风险级别:低风险
风险描述:在网站robots.txt文件中包含敏感信息,可能造成信息泄露
测试过程:
风险分析:Robots.txt文件包含敏感的路径信息,系统信息,可能被恶意攻击者利用进行更深一层的攻击
加固建议:
严格规范robots.txt内数据信息,删除无用的数据
6.11 敏感信息泄露
风险名称:敏感信息泄露
风险级别:高风险
风险描述:发现临时存储的敏感文件,可任意查看敏感文件内容,包括数据库的配置信息
测试过程:
风险分析:服务器配置信息或数据库配置信息非法获取,导致服务器可能被入侵
加固建议:
删除服务器无用的、临时的或者备份的文件
6.12 WSDL接口信息泄漏
风险名称:WSDL接口信息泄露
风险级别:中风险
风险描述:WSDL接口信息泄露,通过泄露可获取系统WSDL信息
测试过程:
http://gpms.foton.com.cn/uapws/service/nc.itf.ses.inittool.PortalSESInitToolService?wsdl
风险分析:攻击者可通过问问WSDL接口获取系统支持的方法信息并构造相关数据包实现访问系统接口的功能,严重时可导致未授权获取系统信息
加固建议:
1、 限制对WSDL接口的访问限制
1、 限制对Services目录的访问
6.13帮助页面疑似泄露内部功能
风险名称:帮助页面疑似泄露内部功能
风险级别:低风险
风险描述:界面存在帮助页面,可能泄露登陆后功能,有可能被恶意攻击者进行更深一层的攻击
测试过程:
风险分析:攻击者可利用该页面了解内部功能,可用来制定详细攻击方案
加固建议:
修改页面,将该功能隐藏,或设计为登录后显示
6.14 配置信息文件泄露
风险名称:配置信息文件泄漏
风险级别:高风险
风险描述:在目录中找到了备份/临时的配置文件。现已证实,此文件包含 Web 应用程序部署描述符 (通常存储在文件中 /WEB-INF/web.xml)。当 web 服务器备份时,开发者创建这种类型的文件进行备份他们的工作或由管理员创建
测试过程:
System.web信息
风险分析:这些配置文件将泄露敏感信息、目录等信息,攻击者可根据收集泄露的提示信息深一步制定攻击方案
加固建议:
从 web 服务器中删除该文件,建议在组织中实施安全策略不允许从Web访问的目录创建临时备份文件
6.15 Cookie内包含敏感信息
风险名称:Cookie内包含敏感信息
风险级别:低风险
风险描述:在Cookie内部包含敏感信息,指定字段信息,如用户名等
测试过程:
Cookie泄漏用户名。
风险分析:攻击者可根据收集泄露的提示信息深一步制定攻击方案
加固建议:
加密Cookie字段,加密相关敏感信息字段
6.16 SVN/GIT等源代码泄露
风险名称:SVN/GIT等源代码泄露
风险级别:高风险
风险描述:造成SVN源代码漏洞的主要原因是管理员操作不规范。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。当前大量开发人员使用GIT进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境,这就引起了GIT泄露漏洞
测试过程:
风险分析:恶意攻击者可以利用该漏洞下载网站的源代码,再从源代码里获得数据库的连接密码;或者通过源代码分析出新的系统漏洞,从而进一步入侵系统
加固建议:
删除指定SVN生成的各种文件,如“/.svn/entries”,删除指定GIT生成的各种文件,如”/ .git/index”等
七、配置管理类
7.1 目录遍历
风险名称:目录遍历
风险级别:中风险
风险描述:路径遍历漏洞允许恶意攻击者突破Web应用程序的安全控制,直接访问攻击者想要的敏感数据 ,包括配置文件、日志、源代码等,配合其它漏洞的综合利用,攻击者可以轻易的获取更高的权限。
测试过程:利用目录枚举工具例如:dirbuster、御剑后台扫描等
当枚举结果存在upload、images等敏感文件目录可以访问时,证明开启了目录遍历。
风险分析:该漏洞可能导致攻击者可以使用浏览Web站点的所以目录及文件,甚至可以越权浏览到系统文件等重要文件数据
加固建议:
设置好对应文件的访问权限,安全Domino URL的OpenFileResource等危险命令
7.2 服务端允许列目录风险
风险名称:服务端允许列目录风险
风险级别:高风险
风险描述:目录未做限制,未授权用户可非法访问该目录下的文件
测试过程:利用目录枚举工具例如:dirbuster、御剑后台扫描等
当枚举结果存在upload、images等敏感文件目录可以访问时,证明开启了目录遍历。
风险分析:Web 服务器或应用程序服务器是以不安全的方式配置的
加固建议:
确保该目录不包含敏感信息,或者您从网络服务器配置中限制目录列表的访问
7.3 发现隐藏目录
风险名称:发现隐藏目录
风险级别:低风险
风险描述:提示信息可以判断系统是否存在此目录或功能模块
测试过程:根据输入不同的目录名,根据响应包不同的响应结果可以发现隐藏的目录。
不存在的目录响应:
存在的目录响应:
风险分析:该漏洞可能导致攻击者可以使用穷举目录名或常用目录名,并通过提示信息来判断系统是否存在此目录或功能模块
加固建议:
自定义错误页面,当服务器发生403错误时,跳至默认的错误页面。防止暴力猜解
7.4 存在备份文件
风险名称:存在备份文件
风险级别:中风险
风险描述:多余的备份文件可能会泄露重要的信息
测试过程:利用目录枚举工具例如:dirbuster、御剑后台扫描等
当枚举结果存在bak、rar、sql等敏感文件可以访问证明存在敏感文件。
风险分析:检测到敏感的备份文件、临时文件,可能导致旧的程序漏洞被利用
加固建议:
请勿将文件的备份文件放置在Web服务器的根目录下,当站点更新时,请将文件删除或者移动到虚拟目录以外的目录,确保在虚拟目录下只有实际在使用的文件
7.5 存在测试界面
风险名称:存在测试界面
风险级别:低风险
风险描述:有时开发者会忘记从生产环境中除去某些调试或测试页面。这些页面有可能包括 Web 用户所不应访问的敏感信息。它们也可能易受到攻击,且或有助于攻击者获取服务器的相关信息,以帮助进行攻击
测试过程:通过目录扫描软件,会发现一些test.txt等测试存留文件
风险分析:攻击者可能会利用测试界面对网站进行攻击从而导致网站的资源受到窃取或者破坏
加固建议:
删除网站中的测试界面数据以及临时文件
7.6 存在WEB默认首页
风险名称:存在Web默认界面
风险级别:低风险
风险描述:未配置首页信息,导致Apache存在默认首页,可能是恶意攻击者进行近一步攻击
测试过程:通过目录扫描发现存在的默认首页
例如一个nginx安装成功的默认首页:
风险分析:攻击者可以通过此风险来获取Web中间件级版本信息,根据已有漏洞进行攻击
加固建议:
建议删除默认首页,配置自定义首页信息
7.7 服务器端口开放过多
风险名称:服务器端口开放过多
风险级别:中风险
风险描述:该服务器开放过多的端口,导致一旦出现新的系统漏洞或者蠕虫病毒,可能导致服务器被入侵,存在安全隐患
测试过程:通常互联网系统应只开放80 http和443 https两种端口
互联网最有可能开放的10个TCP端口。
80 (http)
23 (telnet)
22 (ssh)
443 (https)
3389 (ms-term-serv)
445 (microsoft-ds)
139 (netbios-ssn)
21 (ftp)
135 (msrpc)
25 (smtp)
最有可能开放的10个UDP端口。
137 (netbios-ns)
161 (snmp)
1434 (ms-sql-m)
123 (ntp)
138 (netbios-dgm)
445 (microsoft-ds)
135 (msrpc)
67 (dhcps)
139 (netbios-ssn)
53 (domain)
风险分析:服务器都开放很多端口,导致一旦出现新的系统漏洞或者蠕虫病毒,可能会导致服务器被入侵,有安全隐患
加固建议:
架设硬件防火墙,将端口隐藏在内网,或者对服务器进行加固,将一些不需要使用的端口关闭
7.8 HP Management服务器系统管理口开放
风险名称:HP Management服务器系统管理口开放
风险级别:中风险
风险描述:HP Management提供对服务器的远程系统管理支持,管理员可以通过此接口对服务器进行系统状态查看,远程控制等功能
测试过程:通过端口扫描发现开放的管理端口
风险分析:此接口的登录接口为HTTPS,通过Web进行访问,开放管理接口的同时将面临登录口令被暴力探测的风险,若猜测成功,攻击者将拥有该主机的控制权
加固建议:
评估是否有必要开放HP Management远程管理接口,建议将端口进行关闭
7.9 管理控制台对外开放
风险名称:管理控制台对外开放
风险级别:中风险
风险描述:服务器管理控制台界面开放,可能容易被猜解到,导致攻击者可以暴力破解帐号密码或利用进行下一步攻击
测试过程:例如tomcat管理后台地址是8080端口
风险分析:恶意攻击者可对网站后台管理界面进行暴力破解等一系列攻击,可能对导致网站数据泄露等危害
加固建议:
- 管理后台的服务绑定到内网IP上,禁止开放在外网。
- 如果该管理后台必须提供给外网访问,则未登录页面不要显示过多内容,防止敏感信息泄漏,登录帐号需经过认证,且密码设置规则尽量复杂,增加验证码,以防止暴力破解
7.10 WebLogic管理界面开放
风险名称:WebLogic管理界面开放
风险级别:高风险
风险描述:WebLogic服务器默认安装后,为管理员提供了Web方式的管理入口,如果没有限制,任何人都可以访问到管理页面,可能导致管理员口令被暴力破解
测试过程:通过端口扫描通常管理界面开放在7001端口
风险分析:在公网开放WebLigic管理接口可能遭受恶意攻击者的暴力口令猜测攻击;WebLigic后台的管理权限较大,可直接对操作系统进行修改、执行命令等操作,因此一旦管理入口被突破,将给系统本身带来较大危害,并影响其他服务器安全
加固建议:
1、更改WebLogic默认管理口令(weblogic/weblogic),建议设置复杂的不易猜测的目录名。同时建议帐号不要使用通用的admin、root等。给猜测带来更大的复杂性。使用强壮的口令策略
2、建议将业务系统访问端口与WebLogic管理接口进行分离
3、对WebLogic管理接口配置访问控制,使外网普通用户无法直接访问。或对外关闭管理接口
7.11 启用OPTIONS方法
风险名称:启用OPTIONS方法
风险级别:低风险
风险描述:WEB服务器配置允许一个(或多个)HTTP方法,这些方法可能表示在服务器上启用了WebDAV,可能允许未授权的用户对其进行利用
测试过程:利用HTTP的OPTIONS请求访问系统,若系统返回HTTP请求方法信息证明OPTIONS方法开启。
风险分析:攻击者可能会在WEB服务器上载、修改或删除WEB页面、脚本和文件
加固建议:
如果服务器不需要支持WebDAV,请务必禁用它,或禁止不必要的HTTP方法
7.12 不安全的HTTP请求方法
风险名称:不安全的HTTP请求方法
风险级别:中风险
风险描述:Web服务器开启了不必要的方法,如DELETE,PUT等方法,可能导致恶意用户破坏服务器资源
测试过程:利用HTTP的OPTIONS请求访问系统,通过返回的内容知道开启的方法。
风险分析:可能导致信息泄漏,跨站脚本漏洞,文件上传等风险
加固建议:
如非必要,仅启用GET和POST方法
7.13 启用ASP.NET调试
风险名称:启用ASP.NET调试
风险级别:低风险
风险描述:可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、或敏感文件位置
测试过程:利用HTTP的DEBUGS请求访问系统,通过返回的内容收集敏感的信息。
风险分析:Microsoft ASP.NET 很容易受到信息泄露攻击。攻击者可以发送一个通知是否支持调试支持的恶意请求。攻击者可以利用 DEBUG 动词来发送恶意请求
加固建议:
在 ASP.NET 中禁用调试,编辑 web.config 文件,使它含有下列属性:
7.14 启用TRACE方法
风险名称:启用TRACE方法
风险级别:低风险
风险描述:在此Web服务器上启用HTTP TRACE方法。在Web浏览器中存在其他跨域漏洞的情况下,可以从支持HTTP TRACE方法的任何域读取敏感的标头信息
测试过程:利用trace方法访问系统
Trace被禁用
风险分析:攻击者可以通过TRACE方法返回的信息了解到网站前端的某些信息也可以进行XSS攻击,盗取会话Cookie、获取账户、模拟其他用户身份,甚至可篡改网页,即使网站对关键页面启用了HttpOnly头标记,禁止脚本读取Cookie信息时,通过使用TRACE方法,攻击者可以绕过这个限制,读取Cookie信息
加固建议:
禁用 Web 服务器的TRACE方法
7.15 Slow HTTP Dos 慢速拒绝服务攻击
风险名称:Slow HTTP Dos 慢速拒绝服务攻击
风险级别:中风险
风险描述:存在HTTP慢速拒绝服务攻击风险(Slow HTTP Denial of Service Attack),可造成服务器被拒绝服务攻击
测试过程:利用慢攻击工具slowhttptest对可能存在的风险的服务器发起测试攻击
风险分析:Web服务器很容易受到慢HTTP DOS(拒绝服务)攻击,一个HTTP请求是不完整的,或者转移率很低,服务器把资源忙等待其余的数据。如果服务器保存资源太多忙,这创造了一个拒绝服务
加固建议:
修改中间件配置,设置会话超时时间,设置最少入站传输速率
7.16 缺少“Content-Security-Policy”头
风险名称:缺少“Content-Security-Policy”头
风险级别:低风险
风险描述:“Content-Security-Policy”头主要是定义页面可以加载哪些资源,减少XSS的风险,缺少则可能会被恶意攻击者加载恶意信息,对网站造成损失
测试过程:查看response头信息:
若配置了在头信息中会有 Content-Security-Policy信息
风险分析:缺少“Content-Security-Policy”头可能会让恶意用户在页面上加载一个恶意的信息,以导致用户信息,网站信息泄露的风险
加固建议:
启用“Content-Security-Policy”头
7.17 缺少“X-XSS-Protection”头
风险名称:缺少“X-XSS-Protection”头
风险级别:低风险
风险描述:虽说主流浏览器存在XSS的保护机制,但是效果不太完美,关闭此选项可能会造成XSS攻击的风险
测试过程:查看response头信息:
若配置了在头信息中会有X-XSS-Protection信息
风险分析:缺少“X-XSS-Protection”头,可能会加大攻击者利用XSS对网站进行攻击,可能会导致不必要的损失
加固建议:
启用“X-XSS-Protection”头
7.18 缺少“X-Content-Type-Options”头
风险名称:缺少“X-Content-Type-Options”头
风险级别:低风险
风险描述:互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型,然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行
测试过程:查看response头信息:
若配置了在头信息中会有X-Content-Type-Options信息
风险分析:缺少“X-Content-Type-Options”头可能会造成恶意用户上传恶意文件,危害网站的安全
加固建议:
启用“X-Content-Type-Options”头
7.19 X-Frame-Options未配置
风险名称:X-Frame-Options未配置
风险级别:低风险
风险描述:HTTP 响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个 iframe 中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险
测试过程:查看response头信息:
风险分析:如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险,网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持
加固建议:
修改web服务器配置,添加X-Frame-Options响应头。赋值有如下三种:
1、DENY:不能被嵌入到任何iframe或者frame中。
2、SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
3、ALLOW-FROM url:只能被嵌入到指定域名的框架中。
例如:
apache可配置http.conf如下:
Header always append X-Frame-Options “DENY”
7.20 启用自动完成的密码类型输入
风险名称:启用自动完成的密码类型输入
风险级别:低风险
风险描述:当一个新的用户名和密码输入表单式,并提交表单时,浏览器会询问如果密码是否保存。此后显示表单时,用户名和密码将自动填充或完成的输入用户名。具有本地访问权限的攻击者可以获取从浏览器缓存中的明文密码
测试过程:登陆失败后,系统返回登陆界面时,账号密码已经自动填充。
风险分析:登录框未限制历史信息隐藏,可能会造成信息泄露的风险
加固建议:
密码自动完成填充应在敏感的应用中被禁用。 要禁用自动完成功能,您可以使用类似代码:<INPUT TYPE=”密码”AUTOCOMPLETE=”关闭” >
7.21 Banner信息泄露
风险名称:Banner信息泄露
风险级别:低风险
风险描述:服务器Response信息中泄露了服务器组件等信息
测试过程:查看response信息
风险分析:若攻击者获知服务器组件等信息及版本信息,会使下一步的攻击和漏洞测试提供便利
加固建议:
建议屏蔽或简单显示此类信息
7.22 长密码拒绝服务攻击
风险名称:长密码拒绝服务攻击
风险级别:中风险
风险描述:未对密码输入长度做有效限制,存在密码长度过长,服务端处理消耗大量资源,可造成服务器被拒绝服务攻击
测试过程:在密码栏输入超长密码字符并提交,提交后服务器无法访问。
风险分析:当攻击者输入密码长度达到服务端处理极限,或者连续发送长密码请求,导致服务端处理时资源耗尽,产生拒绝服务
加固建议:
限制有效密码输入长度
7.23 编辑器漏洞
风险名称:编辑器漏洞
风险级别:高风险
风险描述:Ewebeditor,fckeditor,kindeditor,southidceditor,cfeditor等很多浏览器本身包含漏洞,可导致恶意攻击者进行目录遍历,webshell上传等,从而窃取服务器信息或者获取目标服务器权限
测试过程:利用用目录枚举工具例如:dirbuster、御剑后台扫描等工具确认编辑器地址
枚举后可尝试历遍、上传等操作。
风险分析:可通过编辑器漏洞窃取服务器敏感信息或者获取到服务器权限
加固建议:
1.更新编辑器至最新版本
2.修改编辑器默认管理后台访问权限
3.修改编辑器默认管理界面,口令
4.更多编辑器漏洞介绍请查看以下网址:
编辑器漏洞手册 - 血梦博客 - 专注于网络安全|黑客学习|渗透测试|代码审计|国内最专业的黑客技术博客
八、框架漏洞
8.1 Struts2代码执行漏洞
风险名称:Struts2代码执行漏洞
风险级别:高风险
风险描述:Struts2是一个基于MVC设计模式的Web应用框架,当Apache Struts2开了其动态方法Dynamic Method Invocation,会允许远程的攻击者使用method:前缀执行任意构造的链式ONGL,影响版本如下:<2.3.20.2,2.3.24.0-2.3.24.2,2.3.28.0-2.3.28.1>
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:攻击者可利用该漏洞执行任意命令如写入后门、上传木马等进而完全控制服务器,盗取网站数据
加固建议:
升级Struts2到最新版本,下载地址http://struts.apache.org/
8.2 jBoss远程执行漏洞
风险名称:jBoss远程执行漏洞
风险级别:高风险
风险描述:jBoss默认配置会有一个后台漏洞,漏洞函数为addURL(),会远程下载一个war压缩包并解压访问后台,通过写入war压缩文件webshell的url地址,从而获得webshell获得服务器的权限
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:远程执行下在一个包含恶意文件的war文件,从而获得服务器权限
加固建议:
1.在 ${jboss.server.home.dir}/deploy下面找到jmx-console.war目录编辑WEB-INF/web.xml文件 去掉 security-constraint 块的注释,使其起作用
2.编辑WEB-INF/jboss-web.xml去掉 security-domain 块的注释 ,security-domain值的映射文件为 login-config.xml
3.编辑WEB-INF/classes/jmx-console-users.properties添加用户名密码
8.3 Thinkphp命令执行
风险名称:ThinkPHP命令执行漏洞
风险级别:高风险
风险描述:ThinkPHP是国内使用比较广泛的一款老牌PHPMVC框架,Think主要问题在于Dispatcher.class.php文件,文件中把pathinfo作为restful类型URL进行解析的,主要作用是把pathinfo中的数据解析并合并到$_GET数组中。在用正则解析pathinfo的时候$var[‘\1’]=\2” 又是双引号,而双引号中的php变量语法能够被解析,所以造成了任意代码执行漏洞。
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:攻击者可利用该漏洞执行任意命令如写入后门、上传木马等进而完全控制服务器,盗取网站数据
加固建议:
- 升级ThinkPHP到最新版本。 框架下载 - ThinkPHP框架
- 将$var[‘\1’]=\2” 双引号改写成单引号
8.4 Spring MVC 命令执行漏洞
风险名称:Spring MVC 命令执行漏洞(CVE-2010-1622)
风险级别:高风险
风险描述:由于Spring框架允许使用客户端所提供的数据来更新对象,而这以机制允许攻击者修改class.classloader加载对象的类加载器属性,这可能导致执行任意命令
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:这个漏洞将直接危害到使用Spring MVC框架的网站
加固建议:
升级 Spring 到最新版本。 http://spring.io/
8.5 Django命令执行漏洞
风险名称:Django命令执行漏洞
风险级别:高风险
风险描述:Django0.95版本存在命令执行漏洞,攻击者就可以构造出包含有恶意代码的序列化字串,将其传递给服务器,服务器在解析即反序列化会话的同时,就有可能导致任意命令执行
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:服务器在解析即反序列化会话时,有可能导致任意命令执行
加固建议:
升级Django 到最新版本。Download Django | Django
8.6 Java反序列化任意命令执行漏洞
风险名称:Java反序列化任意命令执行漏洞
风险级别:高风险
风险描述:Weblogic Java反序列化可导致任意命令执行
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:攻击者利用此漏洞可直接威胁服务器安全,高级别的攻击,会造成严重影响
加固建议:
建议尽快升级Weblogic版本,下载最新补丁,及时更新
九、服务漏洞
9.1 IIS写文件漏洞
风险名称:IIS写文件漏洞
风险级别:高风险
风险描述:恶意攻击者可以向该目录写入文件,通过HTTP协议的PUT方法,向该目录写入文件或以指定的内容覆盖当前目录下的现有文件
测试过程:第一步,通过OPTIONS探测服务器所支持的HTTP方法,(这里决定后面能不能操作)
第二步,通过PUT方法向服务器上传脚本文件
第三步,通过Move或Copy方法改名
风险分析:可能会被上传带有后门的恶意程序,从而获取到对服务器的控制权,从而造成数据丢失或者系统损坏等
加固建议:
禁用WebDAV功能,或者关闭不安全的HTTP方法
9.2 IIS解析漏洞
风险名称:IIS解析漏洞
风险级别:高风险
风险描述:当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都将被IIS当作ASP文件来解析。2.当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行
测试过程:Iis、apach、php分别有不同的测试方法,详情可参考: https://blog.csdn.net/hitwangpeng/article/details/46913957
险分析 IIS6.0解析文件时,存在两个解析漏洞,攻击者可利用解析漏洞获取webshell
加固建议:
升级IIS版本,对上传进行过滤
9.3 Apache解析漏洞
风险名称:Apache解析漏洞
风险级别:高风险
风险描述:Apache在解析文件时当遇到无法识别的扩展名时,将会从后向前解析,直到遇到识别的扩展名为止
测试过程:Iis、apach、php分别有不同的测试方法,详情可参考:
当apache 容器碰到不认识的扩展名时,将会从后面向前解析,直到碰到认识的扩展名为止,如果都不认识,则会暴露其源代码。
这种方法可以绕过基于黑名单的检查。
Apache认识的扩展名保存在安装目录下”/conf/mime.types”文件中。
风险分析:如果开发人员在控制上传文件是,判断文件名是否是PHP、ASP、ASPX、ASA、CER、ASPX等脚本扩展名,如果是,则不允许上传,这是攻击者就有可能上传1.php.rar等扩展名来绕过程序检测,配合解析漏洞,或得webshell
加固建议:
- 版本升级
- 使用白盒测试对上传做控制
9.4 CGI路径解析漏洞
风险名称:CGI路径解析漏洞
风险级别:高风险
风险描述:在使用Nginx作为web server时,一般使用fastcgi的方式调用脚本解释器,当访问一个不存在的文件时,会解析上级路径文件
测试过程:在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo在本机中位于C:\wamp\bin\php\php5.3.10\php.ini,默认是开启的,当URL中有不存在的文件,PHP就会向前递归解析
风险分析:通过上传一张包含恶意代码的文件,使用fastcgi方式调用脚本编辑器,构造攻击,从而导致包含恶意代码的文件执行
加固建议:
将配置文件中的cgi.fix_pathinfo设置为0
EOF## 一、认证测试类
1.1 敏感数据明文传输
风险名称:敏感数据明文传输
风险级别:中风险
风险描述:恶意攻击者可能通过嗅探等攻击方式截取用户的登录信息
测试过程:浏览网站的过程中可使用抓包工具抓取请求包,查看请求和返回的信息中是否含有用户的敏感信息,如用户名、密码及个人信息(姓名、身份证号、手机号及住址等等)
风险分析:恶意攻击者如果对网站所在的网段进行嗅探,则当用户登录的时候该攻击者就可以获取到用户的用户名和密码等信息
加固建议:
进行数据传输时,对用户名和密码信息进行先加密、再发送的模式,可以有效的规避登录凭证被攻击者截取利用
1.2 后台存在默认密码
风险名称:后台存在默认密码
风险级别:高风险
风险描述:网站存在默认的后台管理密码,恶意攻击者凭借默认密码随意登入管理系统
测试过程:使用形如账号为admin,密码为123456,尝试登录网站
风险分析:恶意攻击者登入系统后,可进行增删改查操作,从而导致信息泄露以及服务器被入侵
加固建议:
立刻修改默认密码,使用数字,特殊符号,大小写字母混合的高强度密码
1.3 新用户使用默认密码
风险名称:新用户使用默认密码
风险级别:高风险
风险描述:新用户登录普遍存在使用默认密码现象,无初次登录修改密码策略
测试过程:新用户可使用密码为123456/111111/888888(根据系统提示的默认密码),登录网站
风险分析:可利用此方法尝试获取其他用户的敏感信息,造成不必要的风险
加固建议:
建议增加初次登录修改密码策略,初始密码必须需要修改才能使用
1.4 账户无错误锁定机制
风险名称:账户无错误锁定机制
风险级别:低风险
风险描述:攻击者可通过暴力破解、口令猜解等手段,尝试攻击获取管理账户的权限
测试过程:使用错误的账户/密码登录,抓包后重放多次(如10次或以上),查看其返回是否一致,是否无账户登录错误锁定机制
风险分析:账户无锁定策略可能会导致攻击者尝试攻击破解获取账户的权限
加固建议:
建议用户登录时添加锁定策略,错误次数达到指定次数以上锁定该账户指定时长,或者锁定IP等手段,不同权限等级的账户使用不同的锁定策略
1.5 认证绕过
风险名称:认证绕过
风险级别:高风险
风险描述:通过会话标识、参数来管理认证(Session IDs)因此如果使用会话标识或参数可推倒其产生结果算法,就回给一个恶意攻击者去发现其他的有效的会话标识或用户参数,从而冒充通过认证的用户进行操作
测试过程:输入任意账户密码,提交数据时拦截请求的响应包,修改为登录成功的响应标识(返回成功+测试账户或其他用户会话标识)后放行。
风险分析:通过构造会话标识、参数来猜解用户的会话标识、参数,冒充用户进行操作
加固建议:
使用高强度的加密算法加密会话标识段参数段
1.6 认证重放攻击
风险名称:认证重放攻击
风险级别:高风险
风险描述:攻击者发送一个目标主机已经接收过的包,特别是在认证过程中,用于认证用户身份所接收的包
测试过程:向服务器重放请求包,查看请求是否成功执行
风险分析:攻击者可以用重放方式伪装成用户,冒充用户进行下一步操作
加固建议:
1、可以利用时间戳进行防御,这个方法实现的前提是服务器的时间必须和用户的时间保持同步,在同一个时间,服务器和用户每隔一段时间就会更改自己的标识,用户输入登录之后,一段时间后标识就会改变,时间戳越小越保险
2、加随机数
3、加流水号
1.7 认证弱口令
风险名称:认证弱口令
风险级别:高风险
风险描述:弱口令是指容易被人猜测到或被破解工具破解的口令,一些仅包含简单数字或字母的简单口令,如“1234”、“abcd”、“admin”、“888888”等
测试过程:已知账户,使用弱口令形如“1234”、“abcd”、“admin”、“888888”等密码尝试登录
风险分析:通过弱口令攻击者可以进入后台修改资料,进入金融系统盗取钱财,进入OA系统可以获取企业内部资料,进入监控系统可以进行实时监控等等
加固建议:
- 不使用空口令或者系统缺省的口令
- 口令长度不小于八个字符
- 口令应该符合四分之三原则,既应包括大小写字母,数字和特殊字符中至少三项
- 至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令
1.8 不安全的验证码
风险名称:不安全的验证码
风险级别:中风险
风险描述:通过截取数据包,重复多次使用同一验证码,或验证码存在一定规律
测试过程:输入正确验证码并提交事务,截取带正确验证码的请求包,将该请求包进行重放,看事务是否正常执行或是否有一致的响应
风险分析:验证码更新机制较弱,较规律性可能会导致恶意攻击者的恶意利用
加固建议:
增强验证码随机性,增强验证码更新机制
1.9 验证码前端校验
风险名称:验证码前端校验
风险级别:高风险
风险描述:通过截取数据包,分析返回值中是否含有验证码,可用于绕过验证
测试过程:点击获取验证码后查看返回的响应包,是否含有明文的验证码或base64编码的验证码图片。
风险分析:验证码返回至前端,可能被攻击者用于绕过验证,如绕过手机验证码或邮箱等验证
加固建议:
验证码校验放在后台执行,禁止返回至前端
1.10 暴力破解
风险名称:暴力破解
风险级别:高风险
风险描述:在登录页面,输入用户名密码后,未设置验证码机制,可利用暴力破解窃取用户信息
测试过程:使用Burp Suite里Intruder模块尝试进行暴力破解
风险分析:登录界面缺少多因子验证机制,恶意攻击者可通过暴力猜解用户的用户名密码信息
加固建议:
登录界面添加动态随机验证码辅助认证
1.11 用户名/账户可以枚举
风险名称:用户名/账户可以枚举
风险级别:中风险
风险描述:通过登录失败时服务器反馈的信息来判断是否存在有效账户
测试过程:通过登录的返回信息,显示“用户名/密码不正确”,或响应包返回的信息不一致,即可判断有此漏洞,可使用Burp Suite里Intruder模块进行用户名/账户枚举
风险分析:攻击者可以通过尝试登录网页回复信息判断账户是否存在,如果网页回复信息如下:
• 客户端请求:有效的用户/密码错误-“服务器回答: ‘密码不正确’
• 客户端请求:错误的用户/密码错误-“服务器回答: ‘用户名不存在’
通过上述答复,用户就能知道第一次请求的是一个有效的用户名,因此可以枚举有效用户列表
加固建议:
在登录认证失败时回复统一使用“账户或密码错误”,而不是直接返回“账户错误”,“密码错误”等信息
1.12 HTTP认证泄露漏洞
风险名称:HTTP认证泄漏漏洞
风险级别:中风险
风险描述:Web目录开启了HTTP Basic认证,但未做IP限制,导致攻击者可以暴力破解帐号破解或者其他进一步的操作
测试过程:尝试打开该站点下/basic/index.php,成功打开,可尝试登录或进行暴力破解
风险分析:未对Web目录进行IP登录限制可能会被恶意攻击者利用构造攻击
加固建议:
对指定目录进行限制IP访问
二、会话管理类
2.1 会话固定攻击
风险名称:会话固定攻击
风险级别:高风险
风险描述:Web服务的Session ID是不变的,会话ID通过URL地址的查询参数携带道服务器,服务器不做检查,Web会话可能被劫持利用
测试过程:可在不同浏览器,重复/重新登录用户账号,观察其携带的参数是否不变,如不变,可尝试在清空缓存的状态下,直接打开带有该参数的链接,看该账号是否登录成功,是否可以正常使用该账号下的权限进行增删查改
风险分析:指Web服务的会话ID是确知不变的,攻击者为受害者确定一个会话ID从而达到攻击的目的
加固建议:
1.用户登录时生成新的Session ID。判断用户是否包含有效的会话标识符,否则服务器将会要求用户重新登录。
2.设置HttpOnly,关闭透明化Session ID,User-Agent验证,Token校验等
2.2 URL重定向漏洞
风险名称:重定向漏洞
风险级别:中风险
风险描述:攻击者可以将 参数中URL 值引入任意开发者的URL或钓鱼网站
测试过程:修改参数中的合法URL为非法URL,然后查看是否能正常跳转或者响应包是否包含了任意的构造URL
风险分析:部分HTTP参数会保留 URL 值,且会导致 Web 应用程序将请求重定向到指定的 URL,攻击者可以将 URL 值改成指向恶意站点,从而顺利启用网络钓鱼欺骗并窃得用户凭证
加固建议:
避免重定向到基于参数值的外部站点。倘若必须如此,请务必验证应用程序重定向到的 URL,避免重定向到不明站点
2.3 点击劫持漏洞
风险名称:点击劫持漏洞
风险级别:低风险
风险描述:通过覆盖不可见的框架误导受害者点击,虽然受害者点击的是他所看到的网页,但其实他所点击的是被黑客精心构建的另一个置于原网页上面的透明页面。这种攻击利用了HTML
测试过程:使用
风险分析:通过劫持功能页面,可以诱骗受害者输入敏感数据,截取数据
加固建议:
X-FRAME-OPTIONS是微软提出的一个HTTP头,专门用来防御利用
这个头有三个值:
DENY // 拒绝任何域加载
SAMEORIGIN // 允许同源域下加载
ALLOW-FROM // 可以定义允许frame加载的页面地址
PHP中设置:
header(“X-FRAME-OPTIONS:DENY”)
2.4 Apache HttpOnly Cookie泄露
风险名称:Apache HttpOnly Cookie泄露
风险级别:中风险
风险描述:Apache HTTP Server 2.2.x到2.2.21在构建Bad Request(aka 400)错误文档期间没有正确地限制头信息,这允许远程攻击者通过构造的脚本获得HttpOnly Cookie的值
测试过程:利用恶意构造的脚本,使用户cookie大于4k,再请求该网站时会得到响应为400且当前用户cookie会显示出来,再使用正则匹配即可得出正常的cookie值
风险分析:攻击者可通过恶意Js脚本来访问/窃取网站的Cookie信息,并在稍后用于身份盗窃或用户伪装从而达到获取相关权限、数据等目的
加固建议:
将Apache升级到最新版本
2.5 Cookie缺失HttpOnly标识
风险名称:Cookie缺失HttpOnly标识
风险级别:低风险
风险描述:未启用HttpOnly属性可能导致 Cookie被窃取。窃取的Cookie可以包含标识站点用户的敏感信息,攻击者可以重放窃取的Cookie,以便伪装成用户或获取敏感信息
测试过程:查看响应包中的cookie中是否含有HttpOnly标识
风险分析:该属性未设置可能会导致跨站脚本威胁,可能导致Cookie及站点用户的资料被窃取
加固建议:
在Cookie中加上HttpOnly标识,以下网址为详细介绍Cookie中的HttpOnly标识
HttpCookie.HttpOnly 属性 (System.Web) | Microsoft Learn
2.6 Cookie缺失Secure属性
风险名称:Cookie缺失Secure属性
风险级别:低风险
风险描述:当Secure属性设置为Flase时,Cookie存在被窃听的风险
测试过程:使用https协议,用测试账号成功登录某站点,在不登出的情况下,再使用http协议访问该站点,确认是否会跳转至登录页面,或确认使用http协议访问过程中cookie是否正常发送
风险分析:只有当Secure属性设置为True时,Cookie只有在HTTPS协议下才能上传到服务器,而在HTTP协议下是没法上传的,未设置Secure的Cookie存在被窃听的风险
加固建议:
启用Cookie中的Secure属性,以下网址为详细介绍Cookie中的Secure属性
HttpCookie.Secure 属性 (System.Web) | Microsoft Learn
2.7 Cookie-Domain属性设置不当
风险名称:Cookie-Domain属性设置不当
风险级别:低风险
风险描述:Domain表示的是Cookie所在的域,Domain设置错误,攻击者可以进行跨域访问
测试过程:抓取数据包查看cookie的domain属性设定是否合理
风险分析:如果Domain设置错误,则允许其它存在漏洞的服务器接收到Cookie
加固建议:
应该将 Domain 设置为需要接收该 Cookie 的服务器。例如:如果应用存在于 app.mysite.com 服务器上,那幺它应该被设置成”;domain=app.mysite.com”而不能设置成 domain=.mysite.com
2.8 请求Token 泄漏
风险名称:请求Token泄漏
风险级别:中风险
风险描述:功能访问时Token可获取,可对本部分功能进行暴力猜解等攻击
测试过程:观察Token是否可破解,如使用MD5加密,或使用时间戳(请求或服务器时间)为Token等等。
风险分析:可利用该地址使用自写脚本对部分功能进行暴力猜解如:私密问题答案等
加固建议:
建议Token在请求时生成并不返回到客户端,改为内置函数
2.9 CSRF漏洞
风险名称:CSRF漏洞
风险级别:高风险
风险描述:CSRF(跨站请求伪造),是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。
测试过程:使用CSRFTester或Burp Suite中Engagement tools构造CSRF Poc为HTML,修改表单中某些参数,使用浏览器打开该HTML,提交表单后查看响应结果,看该操作是否成功执行。
风险分析:未验证Referrer或者使用Token导致用户或者管理员可被CSRF添加,
加固建议:
- 在表单中添加form token(隐藏域中的随机字符串);
- 请求referrer验证;
- 关键请求使用验证码
2.10 WebLogic SSRF漏洞
风险名称:WebLogic SSRF漏洞
风险级别:高风险
风险描述:WebLogic 10.0.2-10.3.6版本的SearchPublicRegistries.jsp处会引起SSRF漏洞
测试过程:可以使用UDDI功能对 WebLogic 可访问的所有主机端口进行探测。探测到的服务会返回合法的 SOAP 响应信息,甚至可以看到相应的完整信息。例如,可使用 https://[vulnerablehost]/uddiexplorer/SearchPublicRegistries.jsp?operator=http://10.0.0.4:23&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search尝试探测某内部主机是否监听23 端口。
风险分析:攻击者可以利用该漏洞绕过访问限制(如防火墙),进而将受感染的服务器作为代理进行端口扫描,甚至访问系统中的数据,
加固建议:
1.如果业务不需要UDDI功能,就关闭这个功能。可以删除uddiexporer文件夹,可以可在/weblogicPath/server/lib/uddiexplorer.war解压后,注释掉上面的jsp再打包。
2.安装oracle的更新包。http://www.oracle.com/technetwork/topics/security/cpujul2014-1972956.html
2.11无会话超时设置
风险名称:无会话超时设置
风险级别:中风险
风险描述:会话超时设置不当。即用户使用公共计算机访问网站,离开时,该用户没有点击退出,而是直接关闭浏览器。攻击者在一个小时后能使用相同浏览器通过身份认证。
测试过程:登录后静置或直接关闭网页,一小时后再直接打开主页链接进行操作,如访问资料或修改资料等。
风险分析:没有会话超时限制,攻击者在长时间后能使用相同浏览器通过身份认证,使用受害者的账号对数据进行更改,如增加垃圾数据或删改数据等操作。
加固建议:
限制会话寿命,增加合适的会话超时限制。
2.12会话标识未失效漏洞
风险名称:会话标识未失效漏洞
风险级别:中风险
风险描述:会话标识未失效导致登录校验绕过,即攻击者可以在浏览器中打开系统登录后的主页直接登入系统,获取账户操作权限。
测试过程:使用账号密码成功登录后点击退出系统,再在浏览器中直接打开登录后的主页。
风险分析:攻击者无需用户账户或密码即可绕过登录验证,使用受害者的账号对数据进行更改,如增加垃圾数据或删改数据等有害正常业务的操作。
加固建议:
用户登出系统后要销毁会话标识
三、数据校验类
3.1 XSS跨站脚本攻击-存储型
风险名称:XSS跨站脚本攻击-存储型
风险级别:高风险
风险描述:XSS跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息的方式诱使管理员浏览,从而获得管理员权限,控制整个网站。攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇请求、修改口令和下载非法的内容等请求
测试过程:Message一栏输入测试代码,提交。
风险分析:该漏洞可能被攻击者利用窃取或操纵客户会话和Cookie,它们可能用于模仿合法用户,从而使黑客能够以合法用户身份登录系统进行渗透。可执行攻击者恶意脚本
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测
2.当客户端输入限定值意外的字符后,立即转向自定义的错误页,而不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、等)特殊字符的传入
4.对应用层防火墙配置策略进行审查,是否配置了过滤特殊字符
3.2 XSS跨站脚本攻击-反射型
风险名称:XSS跨站脚本攻击-反射型
风险级别:高风险
风险描述:跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息的方式诱使管理员浏览,从而获得管理员权限,控制整个网站。攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇请求、修改口令和下载非法的内容等请求
测试过程:查询时,输入测试代码,提交
风险分析:该漏洞可能被攻击者利用窃取或操纵客户会话和Cookie,它们可能用于模仿合法用户,从而使黑客能够以合法用户身份登录系统进行渗透。可执行攻击者恶意脚本
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测
2.当客户端输入限定值意外的字符后,立即转向自定义的错误页,而不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、等)特殊字符的传入
4.对应用层防火墙配置策略进行审查,是否配置了过滤特殊字符
3.3 SQL注入
风险名称:SQL注入
风险级别:高风险
风险描述:恶意攻击者可通过SQL注入漏洞构造SQL注入语句,对服务器端返回特定的错误信息来获取有利用价值的信息,甚至可篡改数据库中的内容并进行提权
测试过程:参数aid存在注入。
风险分析:因没有对用户输入数据的合法性进行判断和限制,应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得数据库内容,如库名、表名、字段名、数据内容等。进一步可修改数据,甚至操控服务器
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测,对传入的参数进行限定
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、and、select等)特殊字符的传入
4.加密数据库内存储信息
5.与数据库链接并访问数据时,使用参数化查询方式进行链接访问
3.4 CRLF注入
风险名称:CRLF注入
风险级别:高风险
风险描述:HTTP消息头截断注入,可以向http消息头写入或覆盖任意数据
测试过程:
抓取数据包,在language参数加入%0aSet-cookie:JSPSESSID%3D1111,输入通过验证。
风险分析:HTTP使用CRLF来表示每一行的结束。这就意味着用户可以通过CRLF注入自定义HTTP Header,导致用户可以不经过应用层直接与Server对话。HTTP Header的定义就是基于这样的”Key:Value”的结构,用CRLF命令表示一行的结尾。”Location:”头用来表示重定向的URL地址,”Set-Cookie:”头用来设置Cookies。如果用户的输入经过验证,其中存在CRLF的字符就可以被用来达到欺骗的目的
加固建议:
服务端检测传递参数是否包含“%0d%0a”,对参数进行危险字符过滤,禁止(“%0d”、“%0a”等)特殊字符的传入
3.5 XPath注入
风险名称:XPath注入
风险级别:高风险
风险描述:XPath注入攻击利用两种技术,即XPath扫描和 XPath查询布尔化。通过该攻击,攻击者可以控制用来进行XPath查询的XML数据库。这种攻击可以有效地对付使用XPath查询(和XML数据库) 来执行身份验证、查找或者其它操作
测试过程:正常查询如下http://192.168.0.104/bWAPP/xmli_2.php?genre=action&action=search
构造查询语句http://192.168.0.104/bWAPP/xmli_2.php?genre=action')] | //* | //*[(‘ &action=search
注入成功。
风险分析:因没有对用户输入数据的合法性进行判断和限制,应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得数据库内容,如库名、表名、字段名、数据内容等。进一步可修改数据,甚至操控服务器
加固建议:
1.数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证
2.检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串
3.对于系统出现的错误信息,以IE错误编码信息替换,屏蔽系统本身的出错信息
4.参数化XPath查询,将需要构建的XPath查询表达式,以变量的形式表示,变量不是可以执行的脚本
5.通过MD5、SSL等加密算法,对于数据敏感信息和在数据传输过程中加密,即使某些非法用户通过非法手法获取数据包,看到的也是加密后的信息。
3.6 XML注入
风险名称:XML注入
风险级别:高风险
风险描述:XML注入是通过改写XML的数据内容来实现。XML通常用于存储数据,如果用户提供的数据是以XML的方式进行存储,那么对攻击者来说添加恶意代码至XML中进行攻击
测试过程:输入836239账户,显示的余额100,可兑换的只有3类奖品。
修改应答包,构造xml代码。
风险分析:Web程序代码中把用户提交的参数未做过滤就直接输出到XML中,可能引起XML注入攻击
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测,对传入的参数进行限定
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、and、select等)特殊字符的传入
4.在代码级输出时对XML特殊字符(“<”、“>”、“>]]”)进行转义
3.7 ORM注入
风险名称:ORM注入
风险级别:高风险
风险描述:ORM注入几乎与SQL注入攻击相同。但是注入漏洞存在于由ORM工具生成的代码中
测试过程:
风险分析: 在大多数情况下,ORM层中的漏洞是没有正确验证输入参数的定制代码的结果。大多数ORM工具提供安全的函数来逃避用户输入。但是,如果不使用这些函数,并且开发人员使用接受用户输入的自定义函数,则可能执行SQL注入攻击
加固建议:
1.使用ORM提供的安全函数
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.对标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、and、select等)特殊字符的传入
3.8 SSI注入
风险名称:SSI注入
风险级别:高风险
风险描述:Web服务器通常允许开发人员在静态HTML中嵌入小片段的动态代码,而不必处理全部的服务器端或客户端语言,称作服务器包含(SSI)在网页内容被返回给用户之前,服务器会执行网页内容中的SSI标签。恶意攻击者输入的内容可以显示在页面中
测试过程:在first name输入测试代码
可以看到由于没有正确配置服务器,我们已经可以看到网站目录中所有文件
打开一个终端,启动端口4444上的netcat侦听器
再次提交
风险分析:此漏洞允许攻击者将代码插入到HTML代码中执行,通过构造甚至执行远程代码执行
加固建议:
1.清理用户输入:禁止可能支持SSI的模式或字符
2.由于SSI会带来许多安全风险,建议您不在Web站点中使用SSI
3.9 HTTP响应头注入
风险名称:HTTP响应头注入
风险级别:高风险
风险描述:Web程序代码中把用户提交的参数未做过滤就直接输出到HTTP响应头中,攻击者可以利用该漏洞来注入HTTP响应头,可以造成XSS攻击、欺骗用户下载恶意可执行文件等攻击
测试过程:输入foobar%0a%0aContent-Length:%200%0a%0a%0a%0aHTTP/1.1%20200%20OK%0a%0aContent-Type:%20texthtml%0a%0aContent-Length:%2047%0a%0a%0d%0aHacked
风险分析:通过恶意攻击者构造的参数直接输入到HTTP响应头中,从而进行攻击
加固建议:
- 在设置HTTP响应头的代码中,过滤回车换行(%0d%0a、%0D%0A)字符。
- 不采用有漏洞版本的Apache服务器,同时对参数做合法性校验以及长度限制,谨慎的根据用户所传入参数做HTTP返回包的Header设置
3.10 XXE外部实体注入
风险名称:XXE外部实体注入
风险级别:高风险
风险描述:系统存在XXE外部实体注入,可通过外部引用dtd的方式获取系统文件信息
测试过程:
风险分析:攻击者可利用外部引用dtd的方式来执行服务器系统命令,从而获取服务器敏感信息,可造成资料丢失等风险产生
加固建议:
1.检查所使用的底层XML解析库,默认禁止外部实体的解析
2.使用第三方应用代码及时升级补丁
3.同时增强对系统的监控,防止此问题被人利用
3.11 命令注入漏洞
风险名称:命令注入漏洞
风险级别:高风险
风险描述:Web程序代码中把用户提交的参数未做过滤就直接使用Shell执行,攻击者可以执行任意系统命令
测试过程:输入127.0.0.1提交,正常结果如下
输入127.0.0.1&net user,提交。用户名被列举出来了。
风险分析:Web程序代码中把用户提交的参数未做过滤就直接输出,通过修改参数,攻击者可直接使用Shell,对系统执行命令
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测,对传入的参数进行限定
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.在代码级调用Shell时,对命令行中的特殊字符进行转义(|、&、;等),防止执行其他非法命令。
3.12 本地文件包含漏洞
风险名称:本地文件包含漏洞
风险级别:高风险
风险描述:测试发现下载相关链接中参数未进行过滤,用户可任意下载文件
测试过程:http://192.168.116.129/DVWA-master/vulnerabilities/fi/?page=include.php
构造url
http://192.168.116.129/DVWA-master/vulnerabilities/fi/?page=/etc/shadow
报错,显示没有这个文件,说明不是服务器系统不是Linux,但同时暴露了服务器文件的绝对路径
构造url(绝对路径)成功读取了服务器的php.ini文件
风险分析:由于程序员未对用户可控的变量进行输入检查,导致用户可以控制被包含的文件,成功利用时可以使服务器将特定文件当成服务端脚本执行,从而导致攻击者可获取一定的服务器权限,同时可能导致服务器上的敏感配置文件被攻击者读取
加固建议:
建议对URL参数内容进行检测和过滤,禁止参数内容中出现 “.”“\”“?”“空字符”“/”“%”等特殊字符。同时保持现有文件与目录访问权限,防范利用此漏洞读取服务器配置文件
3.13 远程文件包含漏洞
风险名称:远程文件包含漏洞
风险级别:高风险
风险描述:如果PHP的配置选项allow_url_include为on的话,则include/require函数是可以加载远程文件的,这种漏洞被成为远程文件包含
测试过程:在远程服务器 192.168.116.128上传一个文件 phpinfo.txt
构造url
http://192.168.116.129/DVWA-master/vulnerabilities/fi/?page=http://192.168.116.128/phpinfo.txt
远程执行命令成功
风险分析:由于程序员未对用户可控的变量进行输入检查,导致用户可以控制被包含的文件,成功利用时可以使服务器将特定文件当成服务端脚本执行,从而导致攻击者可获取一定的服务器权限,同时可能导致服务器上的敏感配置文件被攻击者读取
加固建议:
- 修改配置文件,在php.ini中进行设置allow_url_include = ‘off’,在.htaccess中进行设置php_flag allow_url_include off
- 建议对URL参数内容进行检测和过滤,禁止参数内容中出现 “.”“\”“?”“空字符”“/”“%”等特殊字符。同时保持现有文件与目录访问权限,防范利用此漏洞读取服务器配置文件
3.14 文件上传漏洞
风险名称:文件上传漏洞
风险级别:高风险
风险描述:接受文件上传的Web程序未对文件类型和格式做合法性校验,导致攻击者可以上传Webshell(.php、.jsp等)或者非期望格式的文件(.jpg后缀的HTML文件)
测试过程:上传文件,选择文件进行上传
得知上传路径/hackable/uploads/test.php,使用菜刀连接。
风险分析:未对上传文件的格式内容进行校验,恶意攻击者通过上传包含恶意代码的文件,从而攻击利用获得服务器的权限
加固建议:
对上传文件格式进行严格控制,建立文件格式白名单制,限定只允许上传文档类或图片类格式附件,如PDF、DOC、JPG、GIF等,除名单内的任何格式均不能上传
**3.15 **
风险名称:未验证文件上传类型
风险级别:中风险
风险描述:通过检测,发现未对上传文件类型进行严格控制,可以上传asp、exe、asa、1.asp;1.jpg等危险类型文件
测试过程:新增资料处,可以选择任意类型的文件上传。
风险分析:经过分析,当前对上传文件进行逻辑路径的分离是较为合理的架构方式,能够防范Webshell的解析执行并起到防盗链的效果,但是由于未对上传文件格式进行限制,一旦后台管理被突破,不法分子就可以将木马地址绑定在pdf文件中,或将pdf文档替换成exe木马,从而对访问本站的用户造成一定的危害
加固建议:
对上传文件格式进行严格控制,建立文件格式白名单制,限定只允许上传文档类或图片类格式附件,如PDF、DOC、JPG、GIF等,除名单内的任何格式均不能上传
3.16 本地校验绕过
风险名称:本地校验绕过
风险级别:中风险
风险描述:恶意攻击者截取数据绕过本地验证上传恶意文件,从而进行恶意攻击
测试过程:直接上传其它类型的文件,被禁止上传
先上传图片,通过抓取数据包,修改文件后缀为jsp,上传成功。
风险分析:恶意攻击者通过阶段数据包,上传而恶意文件从而对服务器,网站进行破坏攻击
加固建议:
对于文件上传等校验应在前后端均进行校验。
四、通信安全类
4.1 未使用加密传输协议
风险名称:未使用加密传输协议
风险级别:低风险
风险描述:服务器Request信息中涉及系统敏感信息,HTTP协议明文传送该敏感信息
测试过程:利用数据拦截工具,制作一个中间人攻击的场景,获取到一个登陆操作的请求包,发现包中的登陆账号密码都是明文传输
风险分析:可导致账户敏感信息泄露,攻击者可以截获上述信息,查看、篡改数据内容,或者进一步攻击
加固建议:
建议对敏感信息数据以加密方式传输
4.2通过未加密信道发送敏感数据
风险名称:通过未加密信道发送敏感数据
风险级别:中风险
风险描述:在目此表单是从不安全网页(HTTP)页面提供的。此页面可能使用中间人攻击劫持,攻击者可以替换表单目标
测试过程:利用数据拦截工具,制作一个中间人攻击的场景,发现一个未使用https加密通信的网站,从拦截的请求包中发现一个未加密处理及传输的表单,可以在表单中获取到用户提交的表单信息。
风险分析:可能受到恶意攻击者的劫持,可替换原目标网站
加固建议:
数据所在的表单应该被安全的(HTTPS)页面提供服务
**4.3 SSL/TLS RC4 信息泄露漏洞 **
风险名称:SSL/TLS RC4 信息泄露漏洞
风险级别:中风险
风险描述:在TLS协议和SSL协议中使用的RC4算法可以允许远程攻击者获取由包含多个单字节偏置引起的敏感信息。攻击者可以通过使用相同明文进行纯文本恢复攻击并获取敏感信息的大量会话中的密文的统计分析来利用此漏洞
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
nmap -p 443 –script=ssl-enum-ciphers TARGET
风险分析:恶意攻击者可通过此漏洞恢复纯文本信息,因此造成信息泄露
加固建议:
1.切换到使用CBC模式密码套件
2.切换到使用AEAD密码组,如AES-GCM
3.更多修复信息: On the Security of RC4 in TLS
4.4 OpenSSL Heartbleed漏洞
风险名称:OpenSSL Heartbleed漏洞
风险级别:高风险
风险描述:SSL标准包含一个心跳选项,允许连接一端的主机发出一条简短的信息确认另一端的主机是否存活,并获取反馈。可以通过巧妙的手段发出恶意心跳信息,欺骗另一端的主机泄露机密信息,受影响的主机可能会因此而被骗,并发送服务器内存中的信息
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
nmap -p 443 –script= ssl-heartbleed TARGET
确定存在heartbleed漏洞后可利用msf工具模块进行漏洞利用
风险分析:窃取对方主机内存中的信息,对方的内存信息可能存在用户名,密码等敏感信息
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
4.5 OpenSSL CCS注入
风险名称:OpenSSL CCS注入
风险级别:高风险
风险描述:CCS消息本应该是在握手加密参数协商完成之后最终确认消息发送之前来发送,但是CCS消息却在加密参数协商完成之前发送,中间人攻击可以利用这点特性在一个SSL握手过程中向客户端和服务端分别发送一个CCS包并用长度为零的预主密钥来协商会话密钥,这样攻击者就可以知道会话密钥 并可以篡改或截获SSL通信数据
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
Nmap -p 443 –script=ssl-ccs-injection TARGET
风险分析:攻击者可以发起中间人攻击并利用此漏洞篡改或监听SSL加密传输的数据
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
4.6 OpenSSL POODLE漏洞
风险名称:OpenSSL POODLE注入
风险级别:中风险
风险描述:俗称“贵宾犬”漏洞,此漏洞是针对SSL3.0中CBC模式加密算法的一种Padding Oracle攻击,可以让攻击者获取SSL通信中的部分信息明文,如果将明文中的重要部分获取了,比如Cookie,Session,则信息的安全则出现了隐患
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
Nmap -p 443 –script=ssl-poodle TARGET
风险分析:黑客可利用“POODLE”漏洞劫持用户与网站之间传输的数据,窃取用户名、密码等敏感信息。此外,攻击者还可随意篡改用户接收到的信息,甚至向传输数据中植入恶意代码,进而对用户进行钓鱼、挂马等一系列攻击
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
4.7 OpenSSL Encrypt-Then-Mac renegotiation DDOS漏洞
风险名称:OpenSSL Encrypt-Then-Mac renegotiation DDOS漏洞
风险级别:中风险
风险描述:OpenSSL 1.1.0版本在握手阶段的重协商过程中,所用的Encrypt-Then-Mac扩展若不在初始握手中(或反之易然),则会造成OpenSSL崩溃(取决于密码套件),服务器和客户端均受到影响
测试过程:检测openssl的版本,若版本是1.1.0则漏洞存在。
风险分析:恶意攻击者可对存在此漏洞的服务器和客户端进行拒绝服务攻击
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
OpenSSL Project已经为此发布了一个安全公告(20170216)以及相应补丁地址:
https://www.openssl.org/news/secadv/20170216.txt
4.8 OpenSSL受戒礼漏洞
风险名称:OpenSSL受戒礼漏洞
风险级别:低风险
风险描述:服务器支持RC4协议,存在受戒礼攻击(Bar Mitzvah Attack)风险
测试过程:利用openssl工具,执行下列语句:
1 | openssl s_client -TARGET:443 –cipher RC4 |
如果能够查看到证书信息,那么就是存在风险漏洞
如果显示sslv3 alerthandshake failure,表示该服务器没有这个漏洞。
风险分析:攻击者可能解密经过RC4加密的通信数据,从而造成用户敏感信息、数据泄漏
加固建议:
1、禁止apache服务器使用RC4加密算法
vi /etc/httpd/conf.d/ssl.conf修改为如下配置
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!RC4
需要重启apache服务/etc/init.d/httpd restart
2、在WebLogic配置文件中填写只允许服务器支持的加密协议,例如:
想要支持的加密协议A
想要支持的加密协议B
3.更多修复信息:
《Attacking SSL when using RC4》.Itsik Mantin.BLACK HAT ASIA 2015.
访问的文章审核中… - FreeBuf网络安全行业门户
4.9 OpenSSL Weak ciphers漏洞
风险名称:OpenSSL Weak ciphers漏洞
风险级别:中风险
风险描述:远程主机支持SSL加密,提供弱加密或者不加密的应用
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
Nmap -p 443 –script=ssl-enum-ciphers TARGET
风险分析:远程主机支持SSL加密使用弱密码,如果在同一网段中更容易被利用,可能造成敏感数据泄漏
加固建议:
配置受影响的应用程序以避免使用弱加密SSL,详情请查阅: https://www.openssl.org/
五、业务流程安全类
5.1 越权漏洞
风险名称:越权漏洞
风险级别:高风险
风险描述:服务器端对用户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致恶意攻击者账号拥有了其他账户的增删改查功能
测试过程:1、在需要登陆的功能点中,查看url,header头部,post数据中是否有userid,username,token等身份id或名称的字段,通过修改这些字段重新发包测试是否增删改查到其它用户的数据
2、使用普通权限用户,直接访问高权限用户(管理员)才能访问的功能点和API等
风险分析:服务器过分信任用户提交的数据请求并且未对用户权限进行判定,可能导致恶意攻击者拥有其他用户的操作权限,平行越权可导致相同权限的用户之间可以进行增改删查等功能,可能造成大批量数据泄露,垂直越权可导致低权限的用户拥有着高权限的执行操作能力,可能会造成更严重的安全事故
加固建议:
在进行用户操作时,通过Session判断该用户是否具有该功能的操作权限
5.2 用户未授权访问
风险名称:用户未授权访问
风险级别:高风险
风险描述:未授权访问页面,未授权就可访问指定资源
测试过程:1、通过目录扫描,直接扫描到需要登陆才能访问的功能点地址,并成功访问
2、通过正常登陆后,收集登陆后的各功能点url地址、操作地址和API等,退出登陆或使用另一浏览器进行测试这些地址和操作在未登录时能否访问操作
风险分析:攻击者如为外部人员,可通过此风险查询管理功能,实行更有针对性的攻击
加固建议:
建议对指定界面内容进行访问授权,只收授权成功才有权限进行访问
5.3 后台管理系统未授权访问
风险名称:后台管理系统未授权访问
风险级别:高风险
风险描述:网站中,部分界面只有管理员才能够访问,但是未对用户访问权限进行设置,导致用户只要构造出了正确的URL,就能够访问到这些网页,存在未授权访问后台管理系统,存在未授权审批添加修改网站数据
测试过程:1、直接扫描后台目录文件,直接访问扫描到的后台功能地址
2、登陆后台后,收集后台功能点、API等地址,退出后台,未登陆状态直接访问后台各功能点和API
风险分析:未经授权访问网站管理后台,未授权对数据进行增改删查操作
加固建议:
基于页面严格规范访问控制
5.4 绕过原密码修改密码
风险名称:绕过原密码修改密码
风险级别:高风险
风险描述:绕过修改密码时原密码的安全限制,从而达到任意原密码即可修改当前密码的目的
测试过程:1、原密码与修改密码分开两步,通过修改url地址直接跳转到修改密码的步骤从而直接绕过了原密码的校验
2、原密码与新密码修改分开两步,通过修改原密码校验步骤的返回数据包(改为ok,success,true,1等成功标识),从而直接跳转到下一步输入新密码
风险分析:在不知道原密码的情况下,绕过原密码的安全限制,任意修改员工的密码
加固建议:
建议在服务端判断原密码的正确性,服务端在原密码校验后才允许修改密码
5.5 任意重置用户密码
风险名称:任意重置用户密码
风险级别:高风险
风险描述:系统未对重置密码的用户身份进行校验或校验不严谨,导致可以绕过用户身份校验或篡改校验结果,从而能够重置任意用户的密码,甚至包括管理员的密码。
测试过程:1、通过修改返回数据包中的标识篡改身份校验结果从而进入输入新密码的步骤,成功重置用户密码
2、手机或邮箱验证码过于简单,可以直接爆破,从而进入下一步重置用户密码
3、发送手机或邮箱验证码,验证码直接在发送数据包的返回数据包中泄露,导致绕过验证直接重置用户密码
风险分析:攻击者可利用该方式重置任意用户的密码,从而登陆系统获取相应的操作权限,甚至直接重置管理员密码,获取到系统管理员权限。
加固建议:
建议在重置密码的功能点中,禁止仅以返回数据包中的标识作为跳转下一步的标识,更新密码时,再一次在服务端对用户身份进行校验,或直接使用服务端保存session进行对应用户密码的更新,加强验证码的校验机制,禁止反馈验证码到客户端,验证码不可复用,且存在较短的时效性。
5.6 密码重置url可爆破
风险名称:密码重置url可爆破
风险级别:高风险
风险描述:系统密码重置的url中,使用时间戳或弱token作为当前用户重置密码的链接区分,导致可以通过爆破的手段直接获取到用户的密码重置链接地址。
测试过程:1、输入任意的邮箱地址,发送密码重置链接,然后通过爆破链接中的时间戳或token值,直接获取该邮箱用户的重置链接进行密码重置。
风险分析:攻击者可利用该漏洞重置任意邮箱用户的密码,从而获取到该用户的系统权限进行操作。
加固建议:
使用md5加盐随机码或自定义加密方式等加密时间戳或token
5.7 批量重置所有用户密码
风险名称:批量重置所有用户密码
风险级别:高风险
风险描述:系统使用客户端传递的身份凭证作为修改密码的用户身份依据,且更新密码的数据包可以重复发送,导致可以批量的修改userid等重置所有用户的密码
测试过程:1、更新密码的最后一步,通过userid,username等客户端传递的数据进行更新对应用户密码,且该数据包可以重复发送,导致可以修改userid等批量重置所有用户密码
风险分析:攻击者利用该漏洞,可以直接批量快速重置所有系统用户的密码,甚至包括管理员密码,
加固建议:
使用服务端的session等信息校验用户身份,并修改密码
5.8 修改任意用户信息
风险名称:修改任意用户信息
风险级别:高风险
风险描述:系统未对用户权限进行限制,普通用户可修改同级甚至超级管理员的用户资料信息
测试过程:1、修改自己的个人信息时,抓取数据包,篡改用户凭证(userid等),直接修改到其它用户的个人信息。
2、管理员修改用户信息的API接口没有权限限制,任意已登陆用户只要知道API地址,就可以直接访问进行修改任意用户信息
风险分析:攻击者可利用任意用户操控同级用户或者管理员权限进行操作,通过管理员权限进行增删改查用户资料等操作甚至影响系统安全
加固建议:
建议对各级用户进行权限限制,例如水平越权服务端通过Cookie获取当前用户ID,Cookie进行加密传输,无法修改加密信息。垂直越权需要对每个页面的加载之前进行权限验证即可
5.9 支付逻辑漏洞
风险名称:支付逻辑漏洞
风险级别:高风险
风险描述:用户在支付过程中,通过修改提交数据包的数据,实行“刷钱”、“免费购买”等非工作逻辑行为
测试过程:1、支付时,截取数据包,修改单价为负数,导致用户不花钱甚至直接余额增长,且买到了商品
2、支付时,截取数据包,篡改购买数量为负数或尽可能大,导致低价格购买大量商品等情况。
风险分析:支付逻辑代码控制不严谨,对输入参数控制不严格,导致绕过,异常购买
加固建议:
对购买参数进行严格的过滤,如购买数量为大于0的整数,产品单价不能为负数,并且对支付界面做一些异常处理等
5.10 恶意注册用户
风险名称:恶意注册用户
风险级别:中风险
风险描述:在用户注册过程中通过截取数据包,重放注册数据包绕过验证码进行批量注册
测试过程:1、用户注册功能,无验证码,抓取注册的数据包,重复发送,批量注册大量账号
2、用户注册功能,验证码可绕过或爆破,重复发送注册的数据包,批量注册大量账号
风险分析:后台未校验验证码的使用次数和时间,只校验了其准确性,可被利用进行多次注册
加固建议:
后台校验验证码的使用测试和时间
5.11 注册覆盖
风险名称:注册覆盖
风险级别:高风险
风险描述:在注册时,系统未对新注册的账户名进行校验是否已存在,导致直接覆盖了已存在用户的注册用户名和密码,可以登陆该用户进行操作。
测试过程:1、注册时,输入已存在用户的手机号或用户名等登陆名,直接注册,成功后登陆该账号,可以获取到该账号所有的信息以及进行相关权限的操作
风险分析:利用该漏洞,可以直接覆盖所有账号的密码,登陆任意已存在账号,并进行账号对应权限的操作
加固建议:
注册时校验用户名或手机号等是否已存在
5.12 手机号/用户名爆破
风险名称:手机号/用户名爆破
风险级别:低风险
风险描述:用户注册,登陆,忘记密码功能,用户名或手机号的单独校验存在与否,且无验证码,或验证码可绕过,导致可以批量爆破获取大量已存在的用户名或手机号
测试过程:1、在注册,登陆,忘记密码功能,抓取数据包,发现用户名或手机号单独校验是否存在,且该数据包可以重复发送,利用burpsuite进行批量爆破操作
风险分析:利用该漏洞,可以获取到系统大量的已存在用户名或手机号,并用于进一步渗透。
加固建议:
加入验证码防止暴力破解,或限制数据包访问频率,或模糊化反馈信息
5.13 验证码重放攻击
风险名称:验证码重放攻击
风险级别:中风险
风险描述:在提交信息的时候,输入的验证码通过抓包进行重放,重放时验证码没有进行重置更新,造成重复信息提交,可能引起重放攻击
测试过程:1、在存在验证码的功能点,如登陆,直接截取登陆校验数据包,验证码没有自动更新,可以重复提交校验的数据包,爆破用户名密码
风险分析:可能遭到恶意攻击者进行重复留言,恶意注册等重放攻击
加固建议:
增加验证码时效性,限制验证码不可复用,且自动更新
5.14 手机验证码暴力破解
风险名称:手机验证码爆力破解
风险级别:高风险
风险描述:通过暴力破解手机验证码,猜解正确的验证码的数值从而进行验证
测试过程:1、直接利用burpsuite抓取校验手机验证码的数据包,对验证码进行暴力破解
风险分析:弱验证码可导致恶意攻击者进行暴力猜解,导致进行一些修改密码,修改信息的一些恶意操作
加固建议:
增强验证码混淆度,为数字字母等,增加验证码时效机制
5.15 验证码绕过
风险名称:验证码绕过
风险级别:高风险
风险描述:服务端没有对手机/邮箱验证码进行二次校验,导致当攻击者可以利用修改返回值的方式直接跳转到设置新密码页面,然后重置用户的密码
测试过程:1、输入任意的手机/邮箱验证码,截取返回数据包,修改返回数据包中的标识值(ok,scuess,true等),直接进入下一步设置新密码
风险分析:通过修改返回数据包,可绕过短信/邮箱验证码直接重置该账号密码
加固建议:
服务端对手机/邮箱的验证码进行二次校验
5.16 短信验证码泄露
风险名称:短信验证码劫泄露
风险级别:高风险
风险描述:在进行短信功能验证模块时,用户通过抓取数据包得知验证码的数值,从而进行验证绕过
测试过程:1、发送短信验证码时,利用burpsuite直接截取返回数据包,发现返回数据包中存在发送的验证码明文,直接使用该验证码进入下一步
风险分析:通过抓取的数据包得知验证码的数值进行验证,绕过了短信验证功能模块
加固建议:
短信验证码禁止发送给客户端,而是由服务端直接发送给手机
5.17 验证码无绑定
风险名称:验证码无绑定
风险级别:高风险
风险描述:验证码没有与唯一的手机号/邮箱绑定校验,导致可以使用其它手机/邮箱的验证码成功验证,从而绕过验证机制
测试过程:1、输入任意手机号/邮箱发送验证码,再输入自己的手机号/邮箱发送验证码,利用自己的手机/邮箱收到的验证码,与第一次发送验证码的手机号/邮箱进行校验,成功绕过验证进入下一步
风险分析:利用该漏洞,可以绕过手机/邮箱验证码的校验机制,直接进入下一步进行操作
加固建议:
验证码与手机/邮箱进行绑定校验
5.18 验证码不唯一
风险名称:验证码不唯一
风险级别:高风险
风险描述:手机/邮箱验证码可以同时存在多个,导致可以同时发送大量验证码,然后轻易的就可以利用爆破得到其中一个正确验证码并使用,从而绕过验证码校验
测试过程:1、同时给同一手机/邮箱发送两个验证码,然后使用第一次发送的验证码进行校验,发现可以校验成功,则可以同时发送多个验证码给同一手机/邮箱,只要爆破出其中一个就可以进入下一步,大大降低了爆破难度。
风险分析:利用该漏洞,攻击者可以轻易的就爆破得到正确的手机/邮箱验证码,绕过手机/邮箱校验从而进入下一步操作
加固建议:
限制同一手机/邮箱,在同一时间只能拥有一个正确的验证码
5.19 短信轰炸
风险名称:短信轰炸
风险级别:中风险
风险描述:短信验证功能可向绑定手机发送任意次数验证码
测试过程:1、抓取发送手机验证码的数据包,利用burpsuite大量重复发送该数据包成功
风险分析:该漏洞可向绑定手机发送验证信息,可以用自写脚本遍历银行卡号发送任意数量短信,影响用户体验以及造成短信服务过度消费
加固建议:
发送功能处加入验证码限制,或限制短信发送频次
5.20 邮件轰炸
风险名称:邮件轰炸
风险级别:中风险
风险描述:邮件验证功能可向绑定手机发送任意次数验证码
测试过程:1、抓取发送邮箱验证码的数据包,利用burpsuite大量重复发送该数据包成功
风险分析:该漏洞可向绑定邮箱发送验证信息,可以用自写脚本遍历银行卡号发送任意数量邮件验证码,影响用户体验以及造成邮件服务过度消费
加固建议:
发送功能处加入验证码限制,或限制邮件发送频次
5.21 密保答案泄露
风险名称:密保答案泄露
风险级别:高风险
风险描述:密保答案直接在返回数据包中泄露,导致可以直接使用泄露的答案绕过密保校验,进入下一步设置新密码
测试过程:1、忘记密码功能,使用密保的方式重置密码,获取密保问题的时候,抓取数据包,发现返回数据包中同时存在密保问题和答案,直接使用该问题和答案,成功进入下一步设置新密码
风险分析:利用该漏洞,攻击者可以修改任意有密保的用户密码,从而登陆系统获取相应权限
加固建议:
密保答案禁止返回给客户端
5.22 不安全的Sessionid机制
风险名称:不安全的Sessionid机制
风险级别:高风险
风险描述:用于登陆用户身份识别判断的SessionId保存于客户端或url中,且只要客户端存在已分配未过期的SessionId值时,登陆后台系统不会重新分配SessionId,而是直接使用已分配的SessionId作为登陆后的凭证,导致可以钓鱼或中间人攻击获取和覆盖用户sessionid,得到用户账号权限
测试过程:1、登陆系统,发现sessionid直接存在于url当中
2、在cookie中设置seesionid值,并登陆系统,发现系统直接使用该sessionid值作为登录后的身份凭证,未重新更新分配sessionid
风险分析:利用该漏洞,攻击者可以对后台用户进行钓鱼,中间人等多种手段的攻击,且一旦成功则获取到该用户所有的操作权限。
加固建议:
1、 禁止以客户端传递的sessionid作为登陆之后的身份凭证,应以每次登陆,服务端新生成的凭证为准
2、 禁止未登陆便分配sessionid给客户端,且作为登陆之后的用户凭证
3、 sessionid禁止保存于url和客户端中
六、敏感信息保护类
6.1 数据库错误信息
风险名称:数据库错误信息
风险级别:低风险
风险描述:在发生输入错误时,数据库报错提示过于详细,可能导致恶意攻击者的进一步利用
测试过程:漏洞证明:
正常页面回显。
报错页面回显。
风险分析:可能导致数据库系统敏感信息的泄露或者被进行更深一步的攻击利用
加固建议:
屏蔽或者隐藏记录此类信息,
6.2 敏感信息提示泄露
风险名称:敏感信息提示泄露
风险级别:中风险
风险描述:精准的提示信息讲给恶意攻击者带来明确的攻击信息
测试过程:测试过程::
用户猜解返回:
风险分析:恶意攻击者可根据提示的信息,判断系统是否存在该用户,造成信息泄漏或者对齐有效的攻击
加固建议:
模糊化提示信息,如提示“用户名或密码不正确”,“用户名或密码错误”等
6.3 内部IP泄露
风险名称:内部IP泄露
风险级别:低风险
风险描述:应用程序代码中可能包含一些注释语句或测试语句,组织机构的内部IP可能出现在这些不被执行的语句中
测试过程:漏洞证明:
发送不存在的脚本页面均会返回本地内网真实IP
服务器配置错误回显,处理不当造成泄露内网真实IP。
风险分析:此信息在渗透测试中属于辅助信息,攻击者通过此信息可对内部网络结构进行大致的了解,以便渗透到内网时进行利用
加固建议:
删除相关注释语句、测试语句,或者使用域名替换真实IP
6.4 报错敏感信息泄露
风险名称:报错敏感信息泄露
风险级别:低风险
风险描述:攻击者可通过此风险,获取系统敏感信息,如:数据库信息、服务器信息、源代码查询语句结构等
测试过程:
邮箱尝试注入
返回sql数据库报错页面。
风险分析:攻击者可先根据系统提示精心构造错误,使服务器爆出更明确的敏感信息
加固建议:
建议只输出基本信息或相对能排错的信息,对于敏感信息(如:数据库查询语句、服务器信息等)不要泄漏
6.5 数据库明文存储
风险名称:数据库明文存储
风险级别:中风险
风险描述:数据库使用明文传输,如果存在漏洞,数据库的敏感信息将直接会泄露
测试过程:漏洞证明:
加密密码采用MD5,可破解。
破解成功。
风险分析:采用明文存储的敏感信息,存在漏洞的系统中,可悲攻击者直接获取并利用
加固建议:
建议使用MD5+Salt加密存储敏感信息
6.6 注释敏感信息泄露
风险名称:注释敏感信息泄露
风险级别:低风险
风险描述:攻击者可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名或敏感文件位置
测试过程:
开发商处理页面脚本,修改页面信息处理不当。打开脚本Url:
http://www.wanhu.com.cn/wangzhankaifa/ezsite
得知厦门银行门户网站实在这里购买系统并实施搭建web服务器搭建。
风险分析:攻击者可能会收集有关Web程序的敏感路径等信息,收集到相关敏感信息能辅助进一步的渗透
加固建议:
- 请勿在 HTML 注释中遗留任何重要信息(如文件名或文件路径)
- 从生产站点注释中除去以前(或未来)站点链接的跟踪信息
- 避免在 HTML 注释中放置敏感信息
- 确保 HTML 注释不包括源代码片段
- 确保程序员没有遗留重要信息
6.7 文件内泄露敏感信息
风险名称:文件内泄露敏感信息
风险级别:低风险
风险描述:在HTML、JS、CSS文件中包含敏感信息,导致敏感信息被恶意攻击者收集利用操作
测试过程:
泄漏真实路径信息。
风险分析:攻击者可能会收集有关Web程序的敏感路径等信息,收集到相关敏感信息能辅助进一步的渗透
加固建议:
1.请勿在 HTML 注释中遗留任何重要信息(如文件名或文件路径)
2.请勿在 JS文件中遗留任何重要信息(如文件名或文件路径)
3.请勿在 CSS文件中遗留任何重要信息(如文件名或文件路径)
6.8 JBOSS管理敏感信息泄露
风险名称:JBOSS管理敏感信息泄露
风险级别:低风险
风险描述:JBOSS服务器敏感信息泄露,使攻击者可更快速了解到服务器部署内容,攻击者可根据对应版本的漏洞进行进一步渗透
测试过程:
风险分析:攻击者可得到JBOSS服务器的敏感信息,从而构造更深一层的攻击
加固建议:
在服务器端配置禁止互联网用户访问该页面
6.9 站点的绝对路径泄露
风险名称:站点的绝对路径泄露
风险级别:中风险
风险描述:由于未对服务器返回的出错信息进行良好的处理,一旦用户提交了异常的数据或指令后,服务器将会返回异常的出错信息,通常会包含敏感的配置内容,如WEB绝对路径、数据库路径等
测试过程:
风险分析:此信息在渗透测试中属于辅助性的关键信息,获取绝对路径后攻击者即可了解WEB站点的存放目录,随后可以配合先前获取的权限进行Webshll等恶意文件的上传,通过此信息,攻击者可以很快的定位到上传后文件的访问路径,进而进行下一步攻击
加固建议:
建立错误信息预控制机制,在脚本中加入出错后的处理机制,一旦访问者提交了异常数据,立即返回预定制的出错页面,或者直接返回首页
6.10 Robots包含敏感信息
风险名称:Robots包含敏感信息
风险级别:低风险
风险描述:在网站robots.txt文件中包含敏感信息,可能造成信息泄露
测试过程:
风险分析:Robots.txt文件包含敏感的路径信息,系统信息,可能被恶意攻击者利用进行更深一层的攻击
加固建议:
严格规范robots.txt内数据信息,删除无用的数据
6.11 敏感信息泄露
风险名称:敏感信息泄露
风险级别:高风险
风险描述:发现临时存储的敏感文件,可任意查看敏感文件内容,包括数据库的配置信息
测试过程:
风险分析:服务器配置信息或数据库配置信息非法获取,导致服务器可能被入侵
加固建议:
删除服务器无用的、临时的或者备份的文件
6.12 WSDL接口信息泄漏
风险名称:WSDL接口信息泄露
风险级别:中风险
风险描述:WSDL接口信息泄露,通过泄露可获取系统WSDL信息
测试过程:
http://gpms.foton.com.cn/uapws/service/nc.itf.ses.inittool.PortalSESInitToolService?wsdl
风险分析:攻击者可通过问问WSDL接口获取系统支持的方法信息并构造相关数据包实现访问系统接口的功能,严重时可导致未授权获取系统信息
加固建议:
1、 限制对WSDL接口的访问限制
1、 限制对Services目录的访问
6.13帮助页面疑似泄露内部功能
风险名称:帮助页面疑似泄露内部功能
风险级别:低风险
风险描述:界面存在帮助页面,可能泄露登陆后功能,有可能被恶意攻击者进行更深一层的攻击
测试过程:
风险分析:攻击者可利用该页面了解内部功能,可用来制定详细攻击方案
加固建议:
修改页面,将该功能隐藏,或设计为登录后显示
6.14 配置信息文件泄露
风险名称:配置信息文件泄漏
风险级别:高风险
风险描述:在目录中找到了备份/临时的配置文件。现已证实,此文件包含 Web 应用程序部署描述符 (通常存储在文件中 /WEB-INF/web.xml)。当 web 服务器备份时,开发者创建这种类型的文件进行备份他们的工作或由管理员创建
测试过程:
System.web信息
风险分析:这些配置文件将泄露敏感信息、目录等信息,攻击者可根据收集泄露的提示信息深一步制定攻击方案
加固建议:
从 web 服务器中删除该文件,建议在组织中实施安全策略不允许从Web访问的目录创建临时备份文件
6.15 Cookie内包含敏感信息
风险名称:Cookie内包含敏感信息
风险级别:低风险
风险描述:在Cookie内部包含敏感信息,指定字段信息,如用户名等
测试过程:
Cookie泄漏用户名。
风险分析:攻击者可根据收集泄露的提示信息深一步制定攻击方案
加固建议:
加密Cookie字段,加密相关敏感信息字段
6.16 SVN/GIT等源代码泄露
风险名称:SVN/GIT等源代码泄露
风险级别:高风险
风险描述:造成SVN源代码漏洞的主要原因是管理员操作不规范。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。当前大量开发人员使用GIT进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境,这就引起了GIT泄露漏洞
测试过程:
风险分析:恶意攻击者可以利用该漏洞下载网站的源代码,再从源代码里获得数据库的连接密码;或者通过源代码分析出新的系统漏洞,从而进一步入侵系统
加固建议:
删除指定SVN生成的各种文件,如“/.svn/entries”,删除指定GIT生成的各种文件,如”/ .git/index”等
七、配置管理类
7.1 目录遍历
风险名称:目录遍历
风险级别:中风险
风险描述:路径遍历漏洞允许恶意攻击者突破Web应用程序的安全控制,直接访问攻击者想要的敏感数据 ,包括配置文件、日志、源代码等,配合其它漏洞的综合利用,攻击者可以轻易的获取更高的权限。
测试过程:利用目录枚举工具例如:dirbuster、御剑后台扫描等
当枚举结果存在upload、images等敏感文件目录可以访问时,证明开启了目录遍历。
风险分析:该漏洞可能导致攻击者可以使用浏览Web站点的所以目录及文件,甚至可以越权浏览到系统文件等重要文件数据
加固建议:
设置好对应文件的访问权限,安全Domino URL的OpenFileResource等危险命令
7.2 服务端允许列目录风险
风险名称:服务端允许列目录风险
风险级别:高风险
风险描述:目录未做限制,未授权用户可非法访问该目录下的文件
测试过程:利用目录枚举工具例如:dirbuster、御剑后台扫描等
当枚举结果存在upload、images等敏感文件目录可以访问时,证明开启了目录遍历。
风险分析:Web 服务器或应用程序服务器是以不安全的方式配置的
加固建议:
确保该目录不包含敏感信息,或者您从网络服务器配置中限制目录列表的访问
7.3 发现隐藏目录
风险名称:发现隐藏目录
风险级别:低风险
风险描述:提示信息可以判断系统是否存在此目录或功能模块
测试过程:根据输入不同的目录名,根据响应包不同的响应结果可以发现隐藏的目录。
不存在的目录响应:
存在的目录响应:
风险分析:该漏洞可能导致攻击者可以使用穷举目录名或常用目录名,并通过提示信息来判断系统是否存在此目录或功能模块
加固建议:
自定义错误页面,当服务器发生403错误时,跳至默认的错误页面。防止暴力猜解
7.4 存在备份文件
风险名称:存在备份文件
风险级别:中风险
风险描述:多余的备份文件可能会泄露重要的信息
测试过程:利用目录枚举工具例如:dirbuster、御剑后台扫描等
当枚举结果存在bak、rar、sql等敏感文件可以访问证明存在敏感文件。
风险分析:检测到敏感的备份文件、临时文件,可能导致旧的程序漏洞被利用
加固建议:
请勿将文件的备份文件放置在Web服务器的根目录下,当站点更新时,请将文件删除或者移动到虚拟目录以外的目录,确保在虚拟目录下只有实际在使用的文件
7.5 存在测试界面
风险名称:存在测试界面
风险级别:低风险
风险描述:有时开发者会忘记从生产环境中除去某些调试或测试页面。这些页面有可能包括 Web 用户所不应访问的敏感信息。它们也可能易受到攻击,且或有助于攻击者获取服务器的相关信息,以帮助进行攻击
测试过程:通过目录扫描软件,会发现一些test.txt等测试存留文件
风险分析:攻击者可能会利用测试界面对网站进行攻击从而导致网站的资源受到窃取或者破坏
加固建议:
删除网站中的测试界面数据以及临时文件
7.6 存在WEB默认首页
风险名称:存在Web默认界面
风险级别:低风险
风险描述:未配置首页信息,导致Apache存在默认首页,可能是恶意攻击者进行近一步攻击
测试过程:通过目录扫描发现存在的默认首页
例如一个nginx安装成功的默认首页:
风险分析:攻击者可以通过此风险来获取Web中间件级版本信息,根据已有漏洞进行攻击
加固建议:
建议删除默认首页,配置自定义首页信息
7.7 服务器端口开放过多
风险名称:服务器端口开放过多
风险级别:中风险
风险描述:该服务器开放过多的端口,导致一旦出现新的系统漏洞或者蠕虫病毒,可能导致服务器被入侵,存在安全隐患
测试过程:通常互联网系统应只开放80 http和443 https两种端口
互联网最有可能开放的10个TCP端口。
80 (http)
23 (telnet)
22 (ssh)
443 (https)
3389 (ms-term-serv)
445 (microsoft-ds)
139 (netbios-ssn)
21 (ftp)
135 (msrpc)
25 (smtp)
最有可能开放的10个UDP端口。
137 (netbios-ns)
161 (snmp)
1434 (ms-sql-m)
123 (ntp)
138 (netbios-dgm)
445 (microsoft-ds)
135 (msrpc)
67 (dhcps)
139 (netbios-ssn)
53 (domain)
风险分析:服务器都开放很多端口,导致一旦出现新的系统漏洞或者蠕虫病毒,可能会导致服务器被入侵,有安全隐患
加固建议:
架设硬件防火墙,将端口隐藏在内网,或者对服务器进行加固,将一些不需要使用的端口关闭
7.8 HP Management服务器系统管理口开放
风险名称:HP Management服务器系统管理口开放
风险级别:中风险
风险描述:HP Management提供对服务器的远程系统管理支持,管理员可以通过此接口对服务器进行系统状态查看,远程控制等功能
测试过程:通过端口扫描发现开放的管理端口
风险分析:此接口的登录接口为HTTPS,通过Web进行访问,开放管理接口的同时将面临登录口令被暴力探测的风险,若猜测成功,攻击者将拥有该主机的控制权
加固建议:
评估是否有必要开放HP Management远程管理接口,建议将端口进行关闭
7.9 管理控制台对外开放
风险名称:管理控制台对外开放
风险级别:中风险
风险描述:服务器管理控制台界面开放,可能容易被猜解到,导致攻击者可以暴力破解帐号密码或利用进行下一步攻击
测试过程:例如tomcat管理后台地址是8080端口
风险分析:恶意攻击者可对网站后台管理界面进行暴力破解等一系列攻击,可能对导致网站数据泄露等危害
加固建议:
- 管理后台的服务绑定到内网IP上,禁止开放在外网。
- 如果该管理后台必须提供给外网访问,则未登录页面不要显示过多内容,防止敏感信息泄漏,登录帐号需经过认证,且密码设置规则尽量复杂,增加验证码,以防止暴力破解
7.10 WebLogic管理界面开放
风险名称:WebLogic管理界面开放
风险级别:高风险
风险描述:WebLogic服务器默认安装后,为管理员提供了Web方式的管理入口,如果没有限制,任何人都可以访问到管理页面,可能导致管理员口令被暴力破解
测试过程:通过端口扫描通常管理界面开放在7001端口
风险分析:在公网开放WebLigic管理接口可能遭受恶意攻击者的暴力口令猜测攻击;WebLigic后台的管理权限较大,可直接对操作系统进行修改、执行命令等操作,因此一旦管理入口被突破,将给系统本身带来较大危害,并影响其他服务器安全
加固建议:
1、更改WebLogic默认管理口令(weblogic/weblogic),建议设置复杂的不易猜测的目录名。同时建议帐号不要使用通用的admin、root等。给猜测带来更大的复杂性。使用强壮的口令策略
2、建议将业务系统访问端口与WebLogic管理接口进行分离
3、对WebLogic管理接口配置访问控制,使外网普通用户无法直接访问。或对外关闭管理接口
7.11 启用OPTIONS方法
风险名称:启用OPTIONS方法
风险级别:低风险
风险描述:WEB服务器配置允许一个(或多个)HTTP方法,这些方法可能表示在服务器上启用了WebDAV,可能允许未授权的用户对其进行利用
测试过程:利用HTTP的OPTIONS请求访问系统,若系统返回HTTP请求方法信息证明OPTIONS方法开启。
风险分析:攻击者可能会在WEB服务器上载、修改或删除WEB页面、脚本和文件
加固建议:
如果服务器不需要支持WebDAV,请务必禁用它,或禁止不必要的HTTP方法
7.12 不安全的HTTP请求方法
风险名称:不安全的HTTP请求方法
风险级别:中风险
风险描述:Web服务器开启了不必要的方法,如DELETE,PUT等方法,可能导致恶意用户破坏服务器资源
测试过程:利用HTTP的OPTIONS请求访问系统,通过返回的内容知道开启的方法。
风险分析:可能导致信息泄漏,跨站脚本漏洞,文件上传等风险
加固建议:
如非必要,仅启用GET和POST方法
7.13 启用ASP.NET调试
风险名称:启用ASP.NET调试
风险级别:低风险
风险描述:可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、或敏感文件位置
测试过程:利用HTTP的DEBUGS请求访问系统,通过返回的内容收集敏感的信息。
风险分析:Microsoft ASP.NET 很容易受到信息泄露攻击。攻击者可以发送一个通知是否支持调试支持的恶意请求。攻击者可以利用 DEBUG 动词来发送恶意请求
加固建议:
在 ASP.NET 中禁用调试,编辑 web.config 文件,使它含有下列属性:
7.14 启用TRACE方法
风险名称:启用TRACE方法
风险级别:低风险
风险描述:在此Web服务器上启用HTTP TRACE方法。在Web浏览器中存在其他跨域漏洞的情况下,可以从支持HTTP TRACE方法的任何域读取敏感的标头信息
测试过程:利用trace方法访问系统
Trace被禁用
风险分析:攻击者可以通过TRACE方法返回的信息了解到网站前端的某些信息也可以进行XSS攻击,盗取会话Cookie、获取账户、模拟其他用户身份,甚至可篡改网页,即使网站对关键页面启用了HttpOnly头标记,禁止脚本读取Cookie信息时,通过使用TRACE方法,攻击者可以绕过这个限制,读取Cookie信息
加固建议:
禁用 Web 服务器的TRACE方法
7.15 Slow HTTP Dos 慢速拒绝服务攻击
风险名称:Slow HTTP Dos 慢速拒绝服务攻击
风险级别:中风险
风险描述:存在HTTP慢速拒绝服务攻击风险(Slow HTTP Denial of Service Attack),可造成服务器被拒绝服务攻击
测试过程:利用慢攻击工具slowhttptest对可能存在的风险的服务器发起测试攻击
风险分析:Web服务器很容易受到慢HTTP DOS(拒绝服务)攻击,一个HTTP请求是不完整的,或者转移率很低,服务器把资源忙等待其余的数据。如果服务器保存资源太多忙,这创造了一个拒绝服务
加固建议:
修改中间件配置,设置会话超时时间,设置最少入站传输速率
7.16 缺少“Content-Security-Policy”头
风险名称:缺少“Content-Security-Policy”头
风险级别:低风险
风险描述:“Content-Security-Policy”头主要是定义页面可以加载哪些资源,减少XSS的风险,缺少则可能会被恶意攻击者加载恶意信息,对网站造成损失
测试过程:查看response头信息:
若配置了在头信息中会有 Content-Security-Policy信息
风险分析:缺少“Content-Security-Policy”头可能会让恶意用户在页面上加载一个恶意的信息,以导致用户信息,网站信息泄露的风险
加固建议:
启用“Content-Security-Policy”头
7.17 缺少“X-XSS-Protection”头
风险名称:缺少“X-XSS-Protection”头
风险级别:低风险
风险描述:虽说主流浏览器存在XSS的保护机制,但是效果不太完美,关闭此选项可能会造成XSS攻击的风险
测试过程:查看response头信息:
若配置了在头信息中会有X-XSS-Protection信息
风险分析:缺少“X-XSS-Protection”头,可能会加大攻击者利用XSS对网站进行攻击,可能会导致不必要的损失
加固建议:
启用“X-XSS-Protection”头
7.18 缺少“X-Content-Type-Options”头
风险名称:缺少“X-Content-Type-Options”头
风险级别:低风险
风险描述:互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型,然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行
测试过程:查看response头信息:
若配置了在头信息中会有X-Content-Type-Options信息
风险分析:缺少“X-Content-Type-Options”头可能会造成恶意用户上传恶意文件,危害网站的安全
加固建议:
启用“X-Content-Type-Options”头
7.19 X-Frame-Options未配置
风险名称:X-Frame-Options未配置
风险级别:低风险
风险描述:HTTP 响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个 iframe 中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险
测试过程:查看response头信息:
风险分析:如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险,网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持
加固建议:
修改web服务器配置,添加X-Frame-Options响应头。赋值有如下三种:
1、DENY:不能被嵌入到任何iframe或者frame中。
2、SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
3、ALLOW-FROM url:只能被嵌入到指定域名的框架中。
例如:
apache可配置http.conf如下:
Header always append X-Frame-Options “DENY”
7.20 启用自动完成的密码类型输入
风险名称:启用自动完成的密码类型输入
风险级别:低风险
风险描述:当一个新的用户名和密码输入表单式,并提交表单时,浏览器会询问如果密码是否保存。此后显示表单时,用户名和密码将自动填充或完成的输入用户名。具有本地访问权限的攻击者可以获取从浏览器缓存中的明文密码
测试过程:登陆失败后,系统返回登陆界面时,账号密码已经自动填充。
风险分析:登录框未限制历史信息隐藏,可能会造成信息泄露的风险
加固建议:
密码自动完成填充应在敏感的应用中被禁用。 要禁用自动完成功能,您可以使用类似代码:<INPUT TYPE=”密码”AUTOCOMPLETE=”关闭” >
7.21 Banner信息泄露
风险名称:Banner信息泄露
风险级别:低风险
风险描述:服务器Response信息中泄露了服务器组件等信息
测试过程:查看response信息
风险分析:若攻击者获知服务器组件等信息及版本信息,会使下一步的攻击和漏洞测试提供便利
加固建议:
建议屏蔽或简单显示此类信息
7.22 长密码拒绝服务攻击
风险名称:长密码拒绝服务攻击
风险级别:中风险
风险描述:未对密码输入长度做有效限制,存在密码长度过长,服务端处理消耗大量资源,可造成服务器被拒绝服务攻击
测试过程:在密码栏输入超长密码字符并提交,提交后服务器无法访问。
风险分析:当攻击者输入密码长度达到服务端处理极限,或者连续发送长密码请求,导致服务端处理时资源耗尽,产生拒绝服务
加固建议:
限制有效密码输入长度
7.23 编辑器漏洞
风险名称:编辑器漏洞
风险级别:高风险
风险描述:Ewebeditor,fckeditor,kindeditor,southidceditor,cfeditor等很多浏览器本身包含漏洞,可导致恶意攻击者进行目录遍历,webshell上传等,从而窃取服务器信息或者获取目标服务器权限
测试过程:利用用目录枚举工具例如:dirbuster、御剑后台扫描等工具确认编辑器地址
枚举后可尝试历遍、上传等操作。
风险分析:可通过编辑器漏洞窃取服务器敏感信息或者获取到服务器权限
加固建议:
1.更新编辑器至最新版本
2.修改编辑器默认管理后台访问权限
3.修改编辑器默认管理界面,口令
4.更多编辑器漏洞介绍请查看以下网址:
编辑器漏洞手册 - 血梦博客 - 专注于网络安全|黑客学习|渗透测试|代码审计|国内最专业的黑客技术博客
八、框架漏洞
8.1 Struts2代码执行漏洞
风险名称:Struts2代码执行漏洞
风险级别:高风险
风险描述:Struts2是一个基于MVC设计模式的Web应用框架,当Apache Struts2开了其动态方法Dynamic Method Invocation,会允许远程的攻击者使用method:前缀执行任意构造的链式ONGL,影响版本如下:<2.3.20.2,2.3.24.0-2.3.24.2,2.3.28.0-2.3.28.1>
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:攻击者可利用该漏洞执行任意命令如写入后门、上传木马等进而完全控制服务器,盗取网站数据
加固建议:
升级Struts2到最新版本,下载地址http://struts.apache.org/
8.2 jBoss远程执行漏洞
风险名称:jBoss远程执行漏洞
风险级别:高风险
风险描述:jBoss默认配置会有一个后台漏洞,漏洞函数为addURL(),会远程下载一个war压缩包并解压访问后台,通过写入war压缩文件webshell的url地址,从而获得webshell获得服务器的权限
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:远程执行下在一个包含恶意文件的war文件,从而获得服务器权限
加固建议:
1.在 ${jboss.server.home.dir}/deploy下面找到jmx-console.war目录编辑WEB-INF/web.xml文件 去掉 security-constraint 块的注释,使其起作用
2.编辑WEB-INF/jboss-web.xml去掉 security-domain 块的注释 ,security-domain值的映射文件为 login-config.xml
3.编辑WEB-INF/classes/jmx-console-users.properties添加用户名密码
8.3 Thinkphp命令执行
风险名称:ThinkPHP命令执行漏洞
风险级别:高风险
风险描述:ThinkPHP是国内使用比较广泛的一款老牌PHPMVC框架,Think主要问题在于Dispatcher.class.php文件,文件中把pathinfo作为restful类型URL进行解析的,主要作用是把pathinfo中的数据解析并合并到$_GET数组中。在用正则解析pathinfo的时候$var[‘\1’]=\2” 又是双引号,而双引号中的php变量语法能够被解析,所以造成了任意代码执行漏洞。
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:攻击者可利用该漏洞执行任意命令如写入后门、上传木马等进而完全控制服务器,盗取网站数据
加固建议:
- 升级ThinkPHP到最新版本。 框架下载 - ThinkPHP框架
- 将$var[‘\1’]=\2” 双引号改写成单引号
8.4 Spring MVC 命令执行漏洞
风险名称:Spring MVC 命令执行漏洞(CVE-2010-1622)
风险级别:高风险
风险描述:由于Spring框架允许使用客户端所提供的数据来更新对象,而这以机制允许攻击者修改class.classloader加载对象的类加载器属性,这可能导致执行任意命令
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:这个漏洞将直接危害到使用Spring MVC框架的网站
加固建议:
升级 Spring 到最新版本。 http://spring.io/
8.5 Django命令执行漏洞
风险名称:Django命令执行漏洞
风险级别:高风险
风险描述:Django0.95版本存在命令执行漏洞,攻击者就可以构造出包含有恶意代码的序列化字串,将其传递给服务器,服务器在解析即反序列化会话的同时,就有可能导致任意命令执行
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:服务器在解析即反序列化会话时,有可能导致任意命令执行
加固建议:
升级Django 到最新版本。Download Django | Django
8.6 Java反序列化任意命令执行漏洞
风险名称:Java反序列化任意命令执行漏洞
风险级别:高风险
风险描述:Weblogic Java反序列化可导致任意命令执行
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:攻击者利用此漏洞可直接威胁服务器安全,高级别的攻击,会造成严重影响
加固建议:
建议尽快升级Weblogic版本,下载最新补丁,及时更新
九、服务漏洞
9.1 IIS写文件漏洞
风险名称:IIS写文件漏洞
风险级别:高风险
风险描述:恶意攻击者可以向该目录写入文件,通过HTTP协议的PUT方法,向该目录写入文件或以指定的内容覆盖当前目录下的现有文件
测试过程:第一步,通过OPTIONS探测服务器所支持的HTTP方法,(这里决定后面能不能操作)
第二步,通过PUT方法向服务器上传脚本文件
第三步,通过Move或Copy方法改名
风险分析:可能会被上传带有后门的恶意程序,从而获取到对服务器的控制权,从而造成数据丢失或者系统损坏等
加固建议:
禁用WebDAV功能,或者关闭不安全的HTTP方法
9.2 IIS解析漏洞
风险名称:IIS解析漏洞
风险级别:高风险
风险描述:当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都将被IIS当作ASP文件来解析。2.当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行
测试过程:Iis、apach、php分别有不同的测试方法,详情可参考: https://blog.csdn.net/hitwangpeng/article/details/46913957
险分析 IIS6.0解析文件时,存在两个解析漏洞,攻击者可利用解析漏洞获取webshell
加固建议:
升级IIS版本,对上传进行过滤
9.3 Apache解析漏洞
风险名称:Apache解析漏洞
风险级别:高风险
风险描述:Apache在解析文件时当遇到无法识别的扩展名时,将会从后向前解析,直到遇到识别的扩展名为止
测试过程:Iis、apach、php分别有不同的测试方法,详情可参考:
当apache 容器碰到不认识的扩展名时,将会从后面向前解析,直到碰到认识的扩展名为止,如果都不认识,则会暴露其源代码。
这种方法可以绕过基于黑名单的检查。
Apache认识的扩展名保存在安装目录下”/conf/mime.types”文件中。
风险分析:如果开发人员在控制上传文件是,判断文件名是否是PHP、ASP、ASPX、ASA、CER、ASPX等脚本扩展名,如果是,则不允许上传,这是攻击者就有可能上传1.php.rar等扩展名来绕过程序检测,配合解析漏洞,或得webshell
加固建议:
- 版本升级
- 使用白盒测试对上传做控制
9.4 CGI路径解析漏洞
风险名称:CGI路径解析漏洞
风险级别:高风险
风险描述:在使用Nginx作为web server时,一般使用fastcgi的方式调用脚本解释器,当访问一个不存在的文件时,会解析上级路径文件
测试过程:在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo在本机中位于C:\wamp\bin\php\php5.3.10\php.ini,默认是开启的,当URL中有不存在的文件,PHP就会向前递归解析
风险分析:通过上传一张包含恶意代码的文件,使用fastcgi方式调用脚本编辑器,构造攻击,从而导致包含恶意代码的文件执行
加固建议:
将配置文件中的cgi.fix_pathinfo设置为0
一、认证测试类
1.1 敏感数据明文传输
风险名称:敏感数据明文传输
风险级别:中风险
风险描述:恶意攻击者可能通过嗅探等攻击方式截取用户的登录信息
测试过程:浏览网站的过程中可使用抓包工具抓取请求包,查看请求和返回的信息中是否含有用户的敏感信息,如用户名、密码及个人信息(姓名、身份证号、手机号及住址等等)
风险分析:恶意攻击者如果对网站所在的网段进行嗅探,则当用户登录的时候该攻击者就可以获取到用户的用户名和密码等信息
加固建议:
进行数据传输时,对用户名和密码信息进行先加密、再发送的模式,可以有效的规避登录凭证被攻击者截取利用
1.2 后台存在默认密码
风险名称:后台存在默认密码
风险级别:高风险
风险描述:网站存在默认的后台管理密码,恶意攻击者凭借默认密码随意登入管理系统
测试过程:使用形如账号为admin,密码为123456,尝试登录网站
风险分析:恶意攻击者登入系统后,可进行增删改查操作,从而导致信息泄露以及服务器被入侵
加固建议:
立刻修改默认密码,使用数字,特殊符号,大小写字母混合的高强度密码
1.3 新用户使用默认密码
风险名称:新用户使用默认密码
风险级别:高风险
风险描述:新用户登录普遍存在使用默认密码现象,无初次登录修改密码策略
测试过程:新用户可使用密码为123456/111111/888888(根据系统提示的默认密码),登录网站
风险分析:可利用此方法尝试获取其他用户的敏感信息,造成不必要的风险
加固建议:
建议增加初次登录修改密码策略,初始密码必须需要修改才能使用
1.4 账户无错误锁定机制
风险名称:账户无错误锁定机制
风险级别:低风险
风险描述:攻击者可通过暴力破解、口令猜解等手段,尝试攻击获取管理账户的权限
测试过程:使用错误的账户/密码登录,抓包后重放多次(如10次或以上),查看其返回是否一致,是否无账户登录错误锁定机制
风险分析:账户无锁定策略可能会导致攻击者尝试攻击破解获取账户的权限
加固建议:
建议用户登录时添加锁定策略,错误次数达到指定次数以上锁定该账户指定时长,或者锁定IP等手段,不同权限等级的账户使用不同的锁定策略
1.5 认证绕过
风险名称:认证绕过
风险级别:高风险
风险描述:通过会话标识、参数来管理认证(Session IDs)因此如果使用会话标识或参数可推倒其产生结果算法,就回给一个恶意攻击者去发现其他的有效的会话标识或用户参数,从而冒充通过认证的用户进行操作
测试过程:输入任意账户密码,提交数据时拦截请求的响应包,修改为登录成功的响应标识(返回成功+测试账户或其他用户会话标识)后放行。
风险分析:通过构造会话标识、参数来猜解用户的会话标识、参数,冒充用户进行操作
加固建议:
使用高强度的加密算法加密会话标识段参数段
1.6 认证重放攻击
风险名称:认证重放攻击
风险级别:高风险
风险描述:攻击者发送一个目标主机已经接收过的包,特别是在认证过程中,用于认证用户身份所接收的包
测试过程:向服务器重放请求包,查看请求是否成功执行
风险分析:攻击者可以用重放方式伪装成用户,冒充用户进行下一步操作
加固建议:
1、可以利用时间戳进行防御,这个方法实现的前提是服务器的时间必须和用户的时间保持同步,在同一个时间,服务器和用户每隔一段时间就会更改自己的标识,用户输入登录之后,一段时间后标识就会改变,时间戳越小越保险
2、加随机数
3、加流水号
1.7 认证弱口令
风险名称:认证弱口令
风险级别:高风险
风险描述:弱口令是指容易被人猜测到或被破解工具破解的口令,一些仅包含简单数字或字母的简单口令,如“1234”、“abcd”、“admin”、“888888”等
测试过程:已知账户,使用弱口令形如“1234”、“abcd”、“admin”、“888888”等密码尝试登录
风险分析:通过弱口令攻击者可以进入后台修改资料,进入金融系统盗取钱财,进入OA系统可以获取企业内部资料,进入监控系统可以进行实时监控等等
加固建议:
- 不使用空口令或者系统缺省的口令
- 口令长度不小于八个字符
- 口令应该符合四分之三原则,既应包括大小写字母,数字和特殊字符中至少三项
- 至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令
1.8 不安全的验证码
风险名称:不安全的验证码
风险级别:中风险
风险描述:通过截取数据包,重复多次使用同一验证码,或验证码存在一定规律
测试过程:输入正确验证码并提交事务,截取带正确验证码的请求包,将该请求包进行重放,看事务是否正常执行或是否有一致的响应
风险分析:验证码更新机制较弱,较规律性可能会导致恶意攻击者的恶意利用
加固建议:
增强验证码随机性,增强验证码更新机制
1.9 验证码前端校验
风险名称:验证码前端校验
风险级别:高风险
风险描述:通过截取数据包,分析返回值中是否含有验证码,可用于绕过验证
测试过程:点击获取验证码后查看返回的响应包,是否含有明文的验证码或base64编码的验证码图片。
风险分析:验证码返回至前端,可能被攻击者用于绕过验证,如绕过手机验证码或邮箱等验证
加固建议:
验证码校验放在后台执行,禁止返回至前端
1.10 暴力破解
风险名称:暴力破解
风险级别:高风险
风险描述:在登录页面,输入用户名密码后,未设置验证码机制,可利用暴力破解窃取用户信息
测试过程:使用Burp Suite里Intruder模块尝试进行暴力破解
风险分析:登录界面缺少多因子验证机制,恶意攻击者可通过暴力猜解用户的用户名密码信息
加固建议:
登录界面添加动态随机验证码辅助认证
1.11 用户名/账户可以枚举
风险名称:用户名/账户可以枚举
风险级别:中风险
风险描述:通过登录失败时服务器反馈的信息来判断是否存在有效账户
测试过程:通过登录的返回信息,显示“用户名/密码不正确”,或响应包返回的信息不一致,即可判断有此漏洞,可使用Burp Suite里Intruder模块进行用户名/账户枚举
风险分析:攻击者可以通过尝试登录网页回复信息判断账户是否存在,如果网页回复信息如下:
• 客户端请求:有效的用户/密码错误-“服务器回答: ‘密码不正确’
• 客户端请求:错误的用户/密码错误-“服务器回答: ‘用户名不存在’
通过上述答复,用户就能知道第一次请求的是一个有效的用户名,因此可以枚举有效用户列表
加固建议:
在登录认证失败时回复统一使用“账户或密码错误”,而不是直接返回“账户错误”,“密码错误”等信息
1.12 HTTP认证泄露漏洞
风险名称:HTTP认证泄漏漏洞
风险级别:中风险
风险描述:Web目录开启了HTTP Basic认证,但未做IP限制,导致攻击者可以暴力破解帐号破解或者其他进一步的操作
测试过程:尝试打开该站点下/basic/index.php,成功打开,可尝试登录或进行暴力破解
风险分析:未对Web目录进行IP登录限制可能会被恶意攻击者利用构造攻击
加固建议:
对指定目录进行限制IP访问
二、会话管理类
2.1 会话固定攻击
风险名称:会话固定攻击
风险级别:高风险
风险描述:Web服务的Session ID是不变的,会话ID通过URL地址的查询参数携带道服务器,服务器不做检查,Web会话可能被劫持利用
测试过程:可在不同浏览器,重复/重新登录用户账号,观察其携带的参数是否不变,如不变,可尝试在清空缓存的状态下,直接打开带有该参数的链接,看该账号是否登录成功,是否可以正常使用该账号下的权限进行增删查改
风险分析:指Web服务的会话ID是确知不变的,攻击者为受害者确定一个会话ID从而达到攻击的目的
加固建议:
1.用户登录时生成新的Session ID。判断用户是否包含有效的会话标识符,否则服务器将会要求用户重新登录。
2.设置HttpOnly,关闭透明化Session ID,User-Agent验证,Token校验等
2.2 URL重定向漏洞
风险名称:重定向漏洞
风险级别:中风险
风险描述:攻击者可以将 参数中URL 值引入任意开发者的URL或钓鱼网站
测试过程:修改参数中的合法URL为非法URL,然后查看是否能正常跳转或者响应包是否包含了任意的构造URL
风险分析:部分HTTP参数会保留 URL 值,且会导致 Web 应用程序将请求重定向到指定的 URL,攻击者可以将 URL 值改成指向恶意站点,从而顺利启用网络钓鱼欺骗并窃得用户凭证
加固建议:
避免重定向到基于参数值的外部站点。倘若必须如此,请务必验证应用程序重定向到的 URL,避免重定向到不明站点
2.3 点击劫持漏洞
风险名称:点击劫持漏洞
风险级别:低风险
风险描述:通过覆盖不可见的框架误导受害者点击,虽然受害者点击的是他所看到的网页,但其实他所点击的是被黑客精心构建的另一个置于原网页上面的透明页面。这种攻击利用了HTML
测试过程:使用
风险分析:通过劫持功能页面,可以诱骗受害者输入敏感数据,截取数据
加固建议:
X-FRAME-OPTIONS是微软提出的一个HTTP头,专门用来防御利用
这个头有三个值:
DENY // 拒绝任何域加载
SAMEORIGIN // 允许同源域下加载
ALLOW-FROM // 可以定义允许frame加载的页面地址
PHP中设置:
header(“X-FRAME-OPTIONS:DENY”)
2.4 Apache HttpOnly Cookie泄露
风险名称:Apache HttpOnly Cookie泄露
风险级别:中风险
风险描述:Apache HTTP Server 2.2.x到2.2.21在构建Bad Request(aka 400)错误文档期间没有正确地限制头信息,这允许远程攻击者通过构造的脚本获得HttpOnly Cookie的值
测试过程:利用恶意构造的脚本,使用户cookie大于4k,再请求该网站时会得到响应为400且当前用户cookie会显示出来,再使用正则匹配即可得出正常的cookie值
风险分析:攻击者可通过恶意Js脚本来访问/窃取网站的Cookie信息,并在稍后用于身份盗窃或用户伪装从而达到获取相关权限、数据等目的
加固建议:
将Apache升级到最新版本
2.5 Cookie缺失HttpOnly标识
风险名称:Cookie缺失HttpOnly标识
风险级别:低风险
风险描述:未启用HttpOnly属性可能导致 Cookie被窃取。窃取的Cookie可以包含标识站点用户的敏感信息,攻击者可以重放窃取的Cookie,以便伪装成用户或获取敏感信息
测试过程:查看响应包中的cookie中是否含有HttpOnly标识
风险分析:该属性未设置可能会导致跨站脚本威胁,可能导致Cookie及站点用户的资料被窃取
加固建议:
在Cookie中加上HttpOnly标识,以下网址为详细介绍Cookie中的HttpOnly标识
HttpCookie.HttpOnly 属性 (System.Web) | Microsoft Learn
2.6 Cookie缺失Secure属性
风险名称:Cookie缺失Secure属性
风险级别:低风险
风险描述:当Secure属性设置为Flase时,Cookie存在被窃听的风险
测试过程:使用https协议,用测试账号成功登录某站点,在不登出的情况下,再使用http协议访问该站点,确认是否会跳转至登录页面,或确认使用http协议访问过程中cookie是否正常发送
风险分析:只有当Secure属性设置为True时,Cookie只有在HTTPS协议下才能上传到服务器,而在HTTP协议下是没法上传的,未设置Secure的Cookie存在被窃听的风险
加固建议:
启用Cookie中的Secure属性,以下网址为详细介绍Cookie中的Secure属性
HttpCookie.Secure 属性 (System.Web) | Microsoft Learn
2.7 Cookie-Domain属性设置不当
风险名称:Cookie-Domain属性设置不当
风险级别:低风险
风险描述:Domain表示的是Cookie所在的域,Domain设置错误,攻击者可以进行跨域访问
测试过程:抓取数据包查看cookie的domain属性设定是否合理
风险分析:如果Domain设置错误,则允许其它存在漏洞的服务器接收到Cookie
加固建议:
应该将 Domain 设置为需要接收该 Cookie 的服务器。例如:如果应用存在于 app.mysite.com 服务器上,那幺它应该被设置成”;domain=app.mysite.com”而不能设置成 domain=.mysite.com
2.8 请求Token 泄漏
风险名称:请求Token泄漏
风险级别:中风险
风险描述:功能访问时Token可获取,可对本部分功能进行暴力猜解等攻击
测试过程:观察Token是否可破解,如使用MD5加密,或使用时间戳(请求或服务器时间)为Token等等。
风险分析:可利用该地址使用自写脚本对部分功能进行暴力猜解如:私密问题答案等
加固建议:
建议Token在请求时生成并不返回到客户端,改为内置函数
2.9 CSRF漏洞
风险名称:CSRF漏洞
风险级别:高风险
风险描述:CSRF(跨站请求伪造),是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。
测试过程:使用CSRFTester或Burp Suite中Engagement tools构造CSRF Poc为HTML,修改表单中某些参数,使用浏览器打开该HTML,提交表单后查看响应结果,看该操作是否成功执行。
风险分析:未验证Referrer或者使用Token导致用户或者管理员可被CSRF添加,
加固建议:
- 在表单中添加form token(隐藏域中的随机字符串);
- 请求referrer验证;
- 关键请求使用验证码
2.10 WebLogic SSRF漏洞
风险名称:WebLogic SSRF漏洞
风险级别:高风险
风险描述:WebLogic 10.0.2-10.3.6版本的SearchPublicRegistries.jsp处会引起SSRF漏洞
测试过程:可以使用UDDI功能对 WebLogic 可访问的所有主机端口进行探测。探测到的服务会返回合法的 SOAP 响应信息,甚至可以看到相应的完整信息。例如,可使用 https://[vulnerablehost]/uddiexplorer/SearchPublicRegistries.jsp?operator=http://10.0.0.4:23&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search尝试探测某内部主机是否监听23 端口。
风险分析:攻击者可以利用该漏洞绕过访问限制(如防火墙),进而将受感染的服务器作为代理进行端口扫描,甚至访问系统中的数据,
加固建议:
1.如果业务不需要UDDI功能,就关闭这个功能。可以删除uddiexporer文件夹,可以可在/weblogicPath/server/lib/uddiexplorer.war解压后,注释掉上面的jsp再打包。
2.安装oracle的更新包。http://www.oracle.com/technetwork/topics/security/cpujul2014-1972956.html
2.11无会话超时设置
风险名称:无会话超时设置
风险级别:中风险
风险描述:会话超时设置不当。即用户使用公共计算机访问网站,离开时,该用户没有点击退出,而是直接关闭浏览器。攻击者在一个小时后能使用相同浏览器通过身份认证。
测试过程:登录后静置或直接关闭网页,一小时后再直接打开主页链接进行操作,如访问资料或修改资料等。
风险分析:没有会话超时限制,攻击者在长时间后能使用相同浏览器通过身份认证,使用受害者的账号对数据进行更改,如增加垃圾数据或删改数据等操作。
加固建议:
限制会话寿命,增加合适的会话超时限制。
2.12会话标识未失效漏洞
风险名称:会话标识未失效漏洞
风险级别:中风险
风险描述:会话标识未失效导致登录校验绕过,即攻击者可以在浏览器中打开系统登录后的主页直接登入系统,获取账户操作权限。
测试过程:使用账号密码成功登录后点击退出系统,再在浏览器中直接打开登录后的主页。
风险分析:攻击者无需用户账户或密码即可绕过登录验证,使用受害者的账号对数据进行更改,如增加垃圾数据或删改数据等有害正常业务的操作。
加固建议:
用户登出系统后要销毁会话标识
三、数据校验类
3.1 XSS跨站脚本攻击-存储型
风险名称:XSS跨站脚本攻击-存储型
风险级别:高风险
风险描述:XSS跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息的方式诱使管理员浏览,从而获得管理员权限,控制整个网站。攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇请求、修改口令和下载非法的内容等请求
测试过程:Message一栏输入测试代码,提交。
风险分析:该漏洞可能被攻击者利用窃取或操纵客户会话和Cookie,它们可能用于模仿合法用户,从而使黑客能够以合法用户身份登录系统进行渗透。可执行攻击者恶意脚本
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测
2.当客户端输入限定值意外的字符后,立即转向自定义的错误页,而不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、等)特殊字符的传入
4.对应用层防火墙配置策略进行审查,是否配置了过滤特殊字符
3.2 XSS跨站脚本攻击-反射型
风险名称:XSS跨站脚本攻击-反射型
风险级别:高风险
风险描述:跨站脚本攻击是通过在网页中加入恶意代码,当访问者浏览网页时恶意代码会被执行或者通过给管理员发信息的方式诱使管理员浏览,从而获得管理员权限,控制整个网站。攻击者利用跨站请求伪造能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇请求、修改口令和下载非法的内容等请求
测试过程:查询时,输入测试代码,提交
风险分析:该漏洞可能被攻击者利用窃取或操纵客户会话和Cookie,它们可能用于模仿合法用户,从而使黑客能够以合法用户身份登录系统进行渗透。可执行攻击者恶意脚本
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测
2.当客户端输入限定值意外的字符后,立即转向自定义的错误页,而不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、等)特殊字符的传入
4.对应用层防火墙配置策略进行审查,是否配置了过滤特殊字符
3.3 SQL注入
风险名称:SQL注入
风险级别:高风险
风险描述:恶意攻击者可通过SQL注入漏洞构造SQL注入语句,对服务器端返回特定的错误信息来获取有利用价值的信息,甚至可篡改数据库中的内容并进行提权
测试过程:参数aid存在注入。
风险分析:因没有对用户输入数据的合法性进行判断和限制,应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得数据库内容,如库名、表名、字段名、数据内容等。进一步可修改数据,甚至操控服务器
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测,对传入的参数进行限定
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、and、select等)特殊字符的传入
4.加密数据库内存储信息
5.与数据库链接并访问数据时,使用参数化查询方式进行链接访问
3.4 CRLF注入
风险名称:CRLF注入
风险级别:高风险
风险描述:HTTP消息头截断注入,可以向http消息头写入或覆盖任意数据
测试过程:
抓取数据包,在language参数加入%0aSet-cookie:JSPSESSID%3D1111,输入通过验证。
风险分析:HTTP使用CRLF来表示每一行的结束。这就意味着用户可以通过CRLF注入自定义HTTP Header,导致用户可以不经过应用层直接与Server对话。HTTP Header的定义就是基于这样的”Key:Value”的结构,用CRLF命令表示一行的结尾。”Location:”头用来表示重定向的URL地址,”Set-Cookie:”头用来设置Cookies。如果用户的输入经过验证,其中存在CRLF的字符就可以被用来达到欺骗的目的
加固建议:
服务端检测传递参数是否包含“%0d%0a”,对参数进行危险字符过滤,禁止(“%0d”、“%0a”等)特殊字符的传入
3.5 XPath注入
风险名称:XPath注入
风险级别:高风险
风险描述:XPath注入攻击利用两种技术,即XPath扫描和 XPath查询布尔化。通过该攻击,攻击者可以控制用来进行XPath查询的XML数据库。这种攻击可以有效地对付使用XPath查询(和XML数据库) 来执行身份验证、查找或者其它操作
测试过程:正常查询如下http://192.168.0.104/bWAPP/xmli_2.php?genre=action&action=search
构造查询语句http://192.168.0.104/bWAPP/xmli_2.php?genre=action')] | //* | //*[(‘ &action=search
注入成功。
风险分析:因没有对用户输入数据的合法性进行判断和限制,应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得数据库内容,如库名、表名、字段名、数据内容等。进一步可修改数据,甚至操控服务器
加固建议:
1.数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证
2.检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串
3.对于系统出现的错误信息,以IE错误编码信息替换,屏蔽系统本身的出错信息
4.参数化XPath查询,将需要构建的XPath查询表达式,以变量的形式表示,变量不是可以执行的脚本
5.通过MD5、SSL等加密算法,对于数据敏感信息和在数据传输过程中加密,即使某些非法用户通过非法手法获取数据包,看到的也是加密后的信息。
3.6 XML注入
风险名称:XML注入
风险级别:高风险
风险描述:XML注入是通过改写XML的数据内容来实现。XML通常用于存储数据,如果用户提供的数据是以XML的方式进行存储,那么对攻击者来说添加恶意代码至XML中进行攻击
测试过程:输入836239账户,显示的余额100,可兑换的只有3类奖品。
修改应答包,构造xml代码。
风险分析:Web程序代码中把用户提交的参数未做过滤就直接输出到XML中,可能引起XML注入攻击
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测,对传入的参数进行限定
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.对以上标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、and、select等)特殊字符的传入
4.在代码级输出时对XML特殊字符(“<”、“>”、“>]]”)进行转义
3.7 ORM注入
风险名称:ORM注入
风险级别:高风险
风险描述:ORM注入几乎与SQL注入攻击相同。但是注入漏洞存在于由ORM工具生成的代码中
测试过程:
风险分析: 在大多数情况下,ORM层中的漏洞是没有正确验证输入参数的定制代码的结果。大多数ORM工具提供安全的函数来逃避用户输入。但是,如果不使用这些函数,并且开发人员使用接受用户输入的自定义函数,则可能执行SQL注入攻击
加固建议:
1.使用ORM提供的安全函数
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.对标签进行危险字符过滤,禁止(‘、”、+、%、&、<>、()、;、and、select等)特殊字符的传入
3.8 SSI注入
风险名称:SSI注入
风险级别:高风险
风险描述:Web服务器通常允许开发人员在静态HTML中嵌入小片段的动态代码,而不必处理全部的服务器端或客户端语言,称作服务器包含(SSI)在网页内容被返回给用户之前,服务器会执行网页内容中的SSI标签。恶意攻击者输入的内容可以显示在页面中
测试过程:在first name输入测试代码
可以看到由于没有正确配置服务器,我们已经可以看到网站目录中所有文件
打开一个终端,启动端口4444上的netcat侦听器
再次提交
风险分析:此漏洞允许攻击者将代码插入到HTML代码中执行,通过构造甚至执行远程代码执行
加固建议:
1.清理用户输入:禁止可能支持SSI的模式或字符
2.由于SSI会带来许多安全风险,建议您不在Web站点中使用SSI
3.9 HTTP响应头注入
风险名称:HTTP响应头注入
风险级别:高风险
风险描述:Web程序代码中把用户提交的参数未做过滤就直接输出到HTTP响应头中,攻击者可以利用该漏洞来注入HTTP响应头,可以造成XSS攻击、欺骗用户下载恶意可执行文件等攻击
测试过程:输入foobar%0a%0aContent-Length:%200%0a%0a%0a%0aHTTP/1.1%20200%20OK%0a%0aContent-Type:%20texthtml%0a%0aContent-Length:%2047%0a%0a%0d%0aHacked
风险分析:通过恶意攻击者构造的参数直接输入到HTTP响应头中,从而进行攻击
加固建议:
- 在设置HTTP响应头的代码中,过滤回车换行(%0d%0a、%0D%0A)字符。
- 不采用有漏洞版本的Apache服务器,同时对参数做合法性校验以及长度限制,谨慎的根据用户所传入参数做HTTP返回包的Header设置
3.10 XXE外部实体注入
风险名称:XXE外部实体注入
风险级别:高风险
风险描述:系统存在XXE外部实体注入,可通过外部引用dtd的方式获取系统文件信息
测试过程:
风险分析:攻击者可利用外部引用dtd的方式来执行服务器系统命令,从而获取服务器敏感信息,可造成资料丢失等风险产生
加固建议:
1.检查所使用的底层XML解析库,默认禁止外部实体的解析
2.使用第三方应用代码及时升级补丁
3.同时增强对系统的监控,防止此问题被人利用
3.11 命令注入漏洞
风险名称:命令注入漏洞
风险级别:高风险
风险描述:Web程序代码中把用户提交的参数未做过滤就直接使用Shell执行,攻击者可以执行任意系统命令
测试过程:输入127.0.0.1提交,正常结果如下
输入127.0.0.1&net user,提交。用户名被列举出来了。
风险分析:Web程序代码中把用户提交的参数未做过滤就直接输出,通过修改参数,攻击者可直接使用Shell,对系统执行命令
加固建议:
1.对产生漏洞模块的传入参数进行有效性检测,对传入的参数进行限定
2.当用户输入限定字符时,立刻转向自定义的错误页,不能使用服务器默认的错误输出方式
3.在代码级调用Shell时,对命令行中的特殊字符进行转义(|、&、;等),防止执行其他非法命令。
3.12 本地文件包含漏洞
风险名称:本地文件包含漏洞
风险级别:高风险
风险描述:测试发现下载相关链接中参数未进行过滤,用户可任意下载文件
测试过程:http://192.168.116.129/DVWA-master/vulnerabilities/fi/?page=include.php
构造url
http://192.168.116.129/DVWA-master/vulnerabilities/fi/?page=/etc/shadow
报错,显示没有这个文件,说明不是服务器系统不是Linux,但同时暴露了服务器文件的绝对路径
构造url(绝对路径)成功读取了服务器的php.ini文件
风险分析:由于程序员未对用户可控的变量进行输入检查,导致用户可以控制被包含的文件,成功利用时可以使服务器将特定文件当成服务端脚本执行,从而导致攻击者可获取一定的服务器权限,同时可能导致服务器上的敏感配置文件被攻击者读取
加固建议:
建议对URL参数内容进行检测和过滤,禁止参数内容中出现 “.”“\”“?”“空字符”“/”“%”等特殊字符。同时保持现有文件与目录访问权限,防范利用此漏洞读取服务器配置文件
3.13 远程文件包含漏洞
风险名称:远程文件包含漏洞
风险级别:高风险
风险描述:如果PHP的配置选项allow_url_include为on的话,则include/require函数是可以加载远程文件的,这种漏洞被成为远程文件包含
测试过程:在远程服务器 192.168.116.128上传一个文件 phpinfo.txt
构造url
http://192.168.116.129/DVWA-master/vulnerabilities/fi/?page=http://192.168.116.128/phpinfo.txt
远程执行命令成功
风险分析:由于程序员未对用户可控的变量进行输入检查,导致用户可以控制被包含的文件,成功利用时可以使服务器将特定文件当成服务端脚本执行,从而导致攻击者可获取一定的服务器权限,同时可能导致服务器上的敏感配置文件被攻击者读取
加固建议:
- 修改配置文件,在php.ini中进行设置allow_url_include = ‘off’,在.htaccess中进行设置php_flag allow_url_include off
- 建议对URL参数内容进行检测和过滤,禁止参数内容中出现 “.”“\”“?”“空字符”“/”“%”等特殊字符。同时保持现有文件与目录访问权限,防范利用此漏洞读取服务器配置文件
3.14 文件上传漏洞
风险名称:文件上传漏洞
风险级别:高风险
风险描述:接受文件上传的Web程序未对文件类型和格式做合法性校验,导致攻击者可以上传Webshell(.php、.jsp等)或者非期望格式的文件(.jpg后缀的HTML文件)
测试过程:上传文件,选择文件进行上传
得知上传路径/hackable/uploads/test.php,使用菜刀连接。
风险分析:未对上传文件的格式内容进行校验,恶意攻击者通过上传包含恶意代码的文件,从而攻击利用获得服务器的权限
加固建议:
对上传文件格式进行严格控制,建立文件格式白名单制,限定只允许上传文档类或图片类格式附件,如PDF、DOC、JPG、GIF等,除名单内的任何格式均不能上传
**3.15 **
风险名称:未验证文件上传类型
风险级别:中风险
风险描述:通过检测,发现未对上传文件类型进行严格控制,可以上传asp、exe、asa、1.asp;1.jpg等危险类型文件
测试过程:新增资料处,可以选择任意类型的文件上传。
风险分析:经过分析,当前对上传文件进行逻辑路径的分离是较为合理的架构方式,能够防范Webshell的解析执行并起到防盗链的效果,但是由于未对上传文件格式进行限制,一旦后台管理被突破,不法分子就可以将木马地址绑定在pdf文件中,或将pdf文档替换成exe木马,从而对访问本站的用户造成一定的危害
加固建议:
对上传文件格式进行严格控制,建立文件格式白名单制,限定只允许上传文档类或图片类格式附件,如PDF、DOC、JPG、GIF等,除名单内的任何格式均不能上传
3.16 本地校验绕过
风险名称:本地校验绕过
风险级别:中风险
风险描述:恶意攻击者截取数据绕过本地验证上传恶意文件,从而进行恶意攻击
测试过程:直接上传其它类型的文件,被禁止上传
先上传图片,通过抓取数据包,修改文件后缀为jsp,上传成功。
风险分析:恶意攻击者通过阶段数据包,上传而恶意文件从而对服务器,网站进行破坏攻击
加固建议:
对于文件上传等校验应在前后端均进行校验。
四、通信安全类
4.1 未使用加密传输协议
风险名称:未使用加密传输协议
风险级别:低风险
风险描述:服务器Request信息中涉及系统敏感信息,HTTP协议明文传送该敏感信息
测试过程:利用数据拦截工具,制作一个中间人攻击的场景,获取到一个登陆操作的请求包,发现包中的登陆账号密码都是明文传输
风险分析:可导致账户敏感信息泄露,攻击者可以截获上述信息,查看、篡改数据内容,或者进一步攻击
加固建议:
建议对敏感信息数据以加密方式传输
4.2通过未加密信道发送敏感数据
风险名称:通过未加密信道发送敏感数据
风险级别:中风险
风险描述:在目此表单是从不安全网页(HTTP)页面提供的。此页面可能使用中间人攻击劫持,攻击者可以替换表单目标
测试过程:利用数据拦截工具,制作一个中间人攻击的场景,发现一个未使用https加密通信的网站,从拦截的请求包中发现一个未加密处理及传输的表单,可以在表单中获取到用户提交的表单信息。
风险分析:可能受到恶意攻击者的劫持,可替换原目标网站
加固建议:
数据所在的表单应该被安全的(HTTPS)页面提供服务
**4.3 SSL/TLS RC4 信息泄露漏洞 **
风险名称:SSL/TLS RC4 信息泄露漏洞
风险级别:中风险
风险描述:在TLS协议和SSL协议中使用的RC4算法可以允许远程攻击者获取由包含多个单字节偏置引起的敏感信息。攻击者可以通过使用相同明文进行纯文本恢复攻击并获取敏感信息的大量会话中的密文的统计分析来利用此漏洞
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
nmap -p 443 –script=ssl-enum-ciphers TARGET
风险分析:恶意攻击者可通过此漏洞恢复纯文本信息,因此造成信息泄露
加固建议:
1.切换到使用CBC模式密码套件
2.切换到使用AEAD密码组,如AES-GCM
3.更多修复信息: On the Security of RC4 in TLS
4.4 OpenSSL Heartbleed漏洞
风险名称:OpenSSL Heartbleed漏洞
风险级别:高风险
风险描述:SSL标准包含一个心跳选项,允许连接一端的主机发出一条简短的信息确认另一端的主机是否存活,并获取反馈。可以通过巧妙的手段发出恶意心跳信息,欺骗另一端的主机泄露机密信息,受影响的主机可能会因此而被骗,并发送服务器内存中的信息
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
nmap -p 443 –script= ssl-heartbleed TARGET
确定存在heartbleed漏洞后可利用msf工具模块进行漏洞利用
风险分析:窃取对方主机内存中的信息,对方的内存信息可能存在用户名,密码等敏感信息
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
4.5 OpenSSL CCS注入
风险名称:OpenSSL CCS注入
风险级别:高风险
风险描述:CCS消息本应该是在握手加密参数协商完成之后最终确认消息发送之前来发送,但是CCS消息却在加密参数协商完成之前发送,中间人攻击可以利用这点特性在一个SSL握手过程中向客户端和服务端分别发送一个CCS包并用长度为零的预主密钥来协商会话密钥,这样攻击者就可以知道会话密钥 并可以篡改或截获SSL通信数据
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
Nmap -p 443 –script=ssl-ccs-injection TARGET
风险分析:攻击者可以发起中间人攻击并利用此漏洞篡改或监听SSL加密传输的数据
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
4.6 OpenSSL POODLE漏洞
风险名称:OpenSSL POODLE注入
风险级别:中风险
风险描述:俗称“贵宾犬”漏洞,此漏洞是针对SSL3.0中CBC模式加密算法的一种Padding Oracle攻击,可以让攻击者获取SSL通信中的部分信息明文,如果将明文中的重要部分获取了,比如Cookie,Session,则信息的安全则出现了隐患
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
Nmap -p 443 –script=ssl-poodle TARGET
风险分析:黑客可利用“POODLE”漏洞劫持用户与网站之间传输的数据,窃取用户名、密码等敏感信息。此外,攻击者还可随意篡改用户接收到的信息,甚至向传输数据中植入恶意代码,进而对用户进行钓鱼、挂马等一系列攻击
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
4.7 OpenSSL Encrypt-Then-Mac renegotiation DDOS漏洞
风险名称:OpenSSL Encrypt-Then-Mac renegotiation DDOS漏洞
风险级别:中风险
风险描述:OpenSSL 1.1.0版本在握手阶段的重协商过程中,所用的Encrypt-Then-Mac扩展若不在初始握手中(或反之易然),则会造成OpenSSL崩溃(取决于密码套件),服务器和客户端均受到影响
测试过程:检测openssl的版本,若版本是1.1.0则漏洞存在。
风险分析:恶意攻击者可对存在此漏洞的服务器和客户端进行拒绝服务攻击
加固建议:
建议到官方更新最新OpenSSL版本,官方网站网址为:www.openssl.org
OpenSSL Project已经为此发布了一个安全公告(20170216)以及相应补丁地址:
https://www.openssl.org/news/secadv/20170216.txt
4.8 OpenSSL受戒礼漏洞
风险名称:OpenSSL受戒礼漏洞
风险级别:低风险
风险描述:服务器支持RC4协议,存在受戒礼攻击(Bar Mitzvah Attack)风险
测试过程:利用openssl工具,执行下列语句:
1 | openssl s_client -TARGET:443 –cipher RC4 |
如果能够查看到证书信息,那么就是存在风险漏洞
如果显示sslv3 alerthandshake failure,表示该服务器没有这个漏洞。
风险分析:攻击者可能解密经过RC4加密的通信数据,从而造成用户敏感信息、数据泄漏
加固建议:
1、禁止apache服务器使用RC4加密算法
vi /etc/httpd/conf.d/ssl.conf修改为如下配置
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!RC4
需要重启apache服务/etc/init.d/httpd restart
2、在WebLogic配置文件中填写只允许服务器支持的加密协议,例如:
想要支持的加密协议A
想要支持的加密协议B
3.更多修复信息:
《Attacking SSL when using RC4》.Itsik Mantin.BLACK HAT ASIA 2015.
访问的文章审核中… - FreeBuf网络安全行业门户
4.9 OpenSSL Weak ciphers漏洞
风险名称:OpenSSL Weak ciphers漏洞
风险级别:中风险
风险描述:远程主机支持SSL加密,提供弱加密或者不加密的应用
测试过程:利用nmap扫描工具下的脚本,执行下列语句:
Nmap -p 443 –script=ssl-enum-ciphers TARGET
风险分析:远程主机支持SSL加密使用弱密码,如果在同一网段中更容易被利用,可能造成敏感数据泄漏
加固建议:
配置受影响的应用程序以避免使用弱加密SSL,详情请查阅: https://www.openssl.org/
五、业务流程安全类
5.1 越权漏洞
风险名称:越权漏洞
风险级别:高风险
风险描述:服务器端对用户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致恶意攻击者账号拥有了其他账户的增删改查功能
测试过程:1、在需要登陆的功能点中,查看url,header头部,post数据中是否有userid,username,token等身份id或名称的字段,通过修改这些字段重新发包测试是否增删改查到其它用户的数据
2、使用普通权限用户,直接访问高权限用户(管理员)才能访问的功能点和API等
风险分析:服务器过分信任用户提交的数据请求并且未对用户权限进行判定,可能导致恶意攻击者拥有其他用户的操作权限,平行越权可导致相同权限的用户之间可以进行增改删查等功能,可能造成大批量数据泄露,垂直越权可导致低权限的用户拥有着高权限的执行操作能力,可能会造成更严重的安全事故
加固建议:
在进行用户操作时,通过Session判断该用户是否具有该功能的操作权限
5.2 用户未授权访问
风险名称:用户未授权访问
风险级别:高风险
风险描述:未授权访问页面,未授权就可访问指定资源
测试过程:1、通过目录扫描,直接扫描到需要登陆才能访问的功能点地址,并成功访问
2、通过正常登陆后,收集登陆后的各功能点url地址、操作地址和API等,退出登陆或使用另一浏览器进行测试这些地址和操作在未登录时能否访问操作
风险分析:攻击者如为外部人员,可通过此风险查询管理功能,实行更有针对性的攻击
加固建议:
建议对指定界面内容进行访问授权,只收授权成功才有权限进行访问
5.3 后台管理系统未授权访问
风险名称:后台管理系统未授权访问
风险级别:高风险
风险描述:网站中,部分界面只有管理员才能够访问,但是未对用户访问权限进行设置,导致用户只要构造出了正确的URL,就能够访问到这些网页,存在未授权访问后台管理系统,存在未授权审批添加修改网站数据
测试过程:1、直接扫描后台目录文件,直接访问扫描到的后台功能地址
2、登陆后台后,收集后台功能点、API等地址,退出后台,未登陆状态直接访问后台各功能点和API
风险分析:未经授权访问网站管理后台,未授权对数据进行增改删查操作
加固建议:
基于页面严格规范访问控制
5.4 绕过原密码修改密码
风险名称:绕过原密码修改密码
风险级别:高风险
风险描述:绕过修改密码时原密码的安全限制,从而达到任意原密码即可修改当前密码的目的
测试过程:1、原密码与修改密码分开两步,通过修改url地址直接跳转到修改密码的步骤从而直接绕过了原密码的校验
2、原密码与新密码修改分开两步,通过修改原密码校验步骤的返回数据包(改为ok,success,true,1等成功标识),从而直接跳转到下一步输入新密码
风险分析:在不知道原密码的情况下,绕过原密码的安全限制,任意修改员工的密码
加固建议:
建议在服务端判断原密码的正确性,服务端在原密码校验后才允许修改密码
5.5 任意重置用户密码
风险名称:任意重置用户密码
风险级别:高风险
风险描述:系统未对重置密码的用户身份进行校验或校验不严谨,导致可以绕过用户身份校验或篡改校验结果,从而能够重置任意用户的密码,甚至包括管理员的密码。
测试过程:1、通过修改返回数据包中的标识篡改身份校验结果从而进入输入新密码的步骤,成功重置用户密码
2、手机或邮箱验证码过于简单,可以直接爆破,从而进入下一步重置用户密码
3、发送手机或邮箱验证码,验证码直接在发送数据包的返回数据包中泄露,导致绕过验证直接重置用户密码
风险分析:攻击者可利用该方式重置任意用户的密码,从而登陆系统获取相应的操作权限,甚至直接重置管理员密码,获取到系统管理员权限。
加固建议:
建议在重置密码的功能点中,禁止仅以返回数据包中的标识作为跳转下一步的标识,更新密码时,再一次在服务端对用户身份进行校验,或直接使用服务端保存session进行对应用户密码的更新,加强验证码的校验机制,禁止反馈验证码到客户端,验证码不可复用,且存在较短的时效性。
5.6 密码重置url可爆破
风险名称:密码重置url可爆破
风险级别:高风险
风险描述:系统密码重置的url中,使用时间戳或弱token作为当前用户重置密码的链接区分,导致可以通过爆破的手段直接获取到用户的密码重置链接地址。
测试过程:1、输入任意的邮箱地址,发送密码重置链接,然后通过爆破链接中的时间戳或token值,直接获取该邮箱用户的重置链接进行密码重置。
风险分析:攻击者可利用该漏洞重置任意邮箱用户的密码,从而获取到该用户的系统权限进行操作。
加固建议:
使用md5加盐随机码或自定义加密方式等加密时间戳或token
5.7 批量重置所有用户密码
风险名称:批量重置所有用户密码
风险级别:高风险
风险描述:系统使用客户端传递的身份凭证作为修改密码的用户身份依据,且更新密码的数据包可以重复发送,导致可以批量的修改userid等重置所有用户的密码
测试过程:1、更新密码的最后一步,通过userid,username等客户端传递的数据进行更新对应用户密码,且该数据包可以重复发送,导致可以修改userid等批量重置所有用户密码
风险分析:攻击者利用该漏洞,可以直接批量快速重置所有系统用户的密码,甚至包括管理员密码,
加固建议:
使用服务端的session等信息校验用户身份,并修改密码
5.8 修改任意用户信息
风险名称:修改任意用户信息
风险级别:高风险
风险描述:系统未对用户权限进行限制,普通用户可修改同级甚至超级管理员的用户资料信息
测试过程:1、修改自己的个人信息时,抓取数据包,篡改用户凭证(userid等),直接修改到其它用户的个人信息。
2、管理员修改用户信息的API接口没有权限限制,任意已登陆用户只要知道API地址,就可以直接访问进行修改任意用户信息
风险分析:攻击者可利用任意用户操控同级用户或者管理员权限进行操作,通过管理员权限进行增删改查用户资料等操作甚至影响系统安全
加固建议:
建议对各级用户进行权限限制,例如水平越权服务端通过Cookie获取当前用户ID,Cookie进行加密传输,无法修改加密信息。垂直越权需要对每个页面的加载之前进行权限验证即可
5.9 支付逻辑漏洞
风险名称:支付逻辑漏洞
风险级别:高风险
风险描述:用户在支付过程中,通过修改提交数据包的数据,实行“刷钱”、“免费购买”等非工作逻辑行为
测试过程:1、支付时,截取数据包,修改单价为负数,导致用户不花钱甚至直接余额增长,且买到了商品
2、支付时,截取数据包,篡改购买数量为负数或尽可能大,导致低价格购买大量商品等情况。
风险分析:支付逻辑代码控制不严谨,对输入参数控制不严格,导致绕过,异常购买
加固建议:
对购买参数进行严格的过滤,如购买数量为大于0的整数,产品单价不能为负数,并且对支付界面做一些异常处理等
5.10 恶意注册用户
风险名称:恶意注册用户
风险级别:中风险
风险描述:在用户注册过程中通过截取数据包,重放注册数据包绕过验证码进行批量注册
测试过程:1、用户注册功能,无验证码,抓取注册的数据包,重复发送,批量注册大量账号
2、用户注册功能,验证码可绕过或爆破,重复发送注册的数据包,批量注册大量账号
风险分析:后台未校验验证码的使用次数和时间,只校验了其准确性,可被利用进行多次注册
加固建议:
后台校验验证码的使用测试和时间
5.11 注册覆盖
风险名称:注册覆盖
风险级别:高风险
风险描述:在注册时,系统未对新注册的账户名进行校验是否已存在,导致直接覆盖了已存在用户的注册用户名和密码,可以登陆该用户进行操作。
测试过程:1、注册时,输入已存在用户的手机号或用户名等登陆名,直接注册,成功后登陆该账号,可以获取到该账号所有的信息以及进行相关权限的操作
风险分析:利用该漏洞,可以直接覆盖所有账号的密码,登陆任意已存在账号,并进行账号对应权限的操作
加固建议:
注册时校验用户名或手机号等是否已存在
5.12 手机号/用户名爆破
风险名称:手机号/用户名爆破
风险级别:低风险
风险描述:用户注册,登陆,忘记密码功能,用户名或手机号的单独校验存在与否,且无验证码,或验证码可绕过,导致可以批量爆破获取大量已存在的用户名或手机号
测试过程:1、在注册,登陆,忘记密码功能,抓取数据包,发现用户名或手机号单独校验是否存在,且该数据包可以重复发送,利用burpsuite进行批量爆破操作
风险分析:利用该漏洞,可以获取到系统大量的已存在用户名或手机号,并用于进一步渗透。
加固建议:
加入验证码防止暴力破解,或限制数据包访问频率,或模糊化反馈信息
5.13 验证码重放攻击
风险名称:验证码重放攻击
风险级别:中风险
风险描述:在提交信息的时候,输入的验证码通过抓包进行重放,重放时验证码没有进行重置更新,造成重复信息提交,可能引起重放攻击
测试过程:1、在存在验证码的功能点,如登陆,直接截取登陆校验数据包,验证码没有自动更新,可以重复提交校验的数据包,爆破用户名密码
风险分析:可能遭到恶意攻击者进行重复留言,恶意注册等重放攻击
加固建议:
增加验证码时效性,限制验证码不可复用,且自动更新
5.14 手机验证码暴力破解
风险名称:手机验证码爆力破解
风险级别:高风险
风险描述:通过暴力破解手机验证码,猜解正确的验证码的数值从而进行验证
测试过程:1、直接利用burpsuite抓取校验手机验证码的数据包,对验证码进行暴力破解
风险分析:弱验证码可导致恶意攻击者进行暴力猜解,导致进行一些修改密码,修改信息的一些恶意操作
加固建议:
增强验证码混淆度,为数字字母等,增加验证码时效机制
5.15 验证码绕过
风险名称:验证码绕过
风险级别:高风险
风险描述:服务端没有对手机/邮箱验证码进行二次校验,导致当攻击者可以利用修改返回值的方式直接跳转到设置新密码页面,然后重置用户的密码
测试过程:1、输入任意的手机/邮箱验证码,截取返回数据包,修改返回数据包中的标识值(ok,scuess,true等),直接进入下一步设置新密码
风险分析:通过修改返回数据包,可绕过短信/邮箱验证码直接重置该账号密码
加固建议:
服务端对手机/邮箱的验证码进行二次校验
5.16 短信验证码泄露
风险名称:短信验证码劫泄露
风险级别:高风险
风险描述:在进行短信功能验证模块时,用户通过抓取数据包得知验证码的数值,从而进行验证绕过
测试过程:1、发送短信验证码时,利用burpsuite直接截取返回数据包,发现返回数据包中存在发送的验证码明文,直接使用该验证码进入下一步
风险分析:通过抓取的数据包得知验证码的数值进行验证,绕过了短信验证功能模块
加固建议:
短信验证码禁止发送给客户端,而是由服务端直接发送给手机
5.17 验证码无绑定
风险名称:验证码无绑定
风险级别:高风险
风险描述:验证码没有与唯一的手机号/邮箱绑定校验,导致可以使用其它手机/邮箱的验证码成功验证,从而绕过验证机制
测试过程:1、输入任意手机号/邮箱发送验证码,再输入自己的手机号/邮箱发送验证码,利用自己的手机/邮箱收到的验证码,与第一次发送验证码的手机号/邮箱进行校验,成功绕过验证进入下一步
风险分析:利用该漏洞,可以绕过手机/邮箱验证码的校验机制,直接进入下一步进行操作
加固建议:
验证码与手机/邮箱进行绑定校验
5.18 验证码不唯一
风险名称:验证码不唯一
风险级别:高风险
风险描述:手机/邮箱验证码可以同时存在多个,导致可以同时发送大量验证码,然后轻易的就可以利用爆破得到其中一个正确验证码并使用,从而绕过验证码校验
测试过程:1、同时给同一手机/邮箱发送两个验证码,然后使用第一次发送的验证码进行校验,发现可以校验成功,则可以同时发送多个验证码给同一手机/邮箱,只要爆破出其中一个就可以进入下一步,大大降低了爆破难度。
风险分析:利用该漏洞,攻击者可以轻易的就爆破得到正确的手机/邮箱验证码,绕过手机/邮箱校验从而进入下一步操作
加固建议:
限制同一手机/邮箱,在同一时间只能拥有一个正确的验证码
5.19 短信轰炸
风险名称:短信轰炸
风险级别:中风险
风险描述:短信验证功能可向绑定手机发送任意次数验证码
测试过程:1、抓取发送手机验证码的数据包,利用burpsuite大量重复发送该数据包成功
风险分析:该漏洞可向绑定手机发送验证信息,可以用自写脚本遍历银行卡号发送任意数量短信,影响用户体验以及造成短信服务过度消费
加固建议:
发送功能处加入验证码限制,或限制短信发送频次
5.20 邮件轰炸
风险名称:邮件轰炸
风险级别:中风险
风险描述:邮件验证功能可向绑定手机发送任意次数验证码
测试过程:1、抓取发送邮箱验证码的数据包,利用burpsuite大量重复发送该数据包成功
风险分析:该漏洞可向绑定邮箱发送验证信息,可以用自写脚本遍历银行卡号发送任意数量邮件验证码,影响用户体验以及造成邮件服务过度消费
加固建议:
发送功能处加入验证码限制,或限制邮件发送频次
5.21 密保答案泄露
风险名称:密保答案泄露
风险级别:高风险
风险描述:密保答案直接在返回数据包中泄露,导致可以直接使用泄露的答案绕过密保校验,进入下一步设置新密码
测试过程:1、忘记密码功能,使用密保的方式重置密码,获取密保问题的时候,抓取数据包,发现返回数据包中同时存在密保问题和答案,直接使用该问题和答案,成功进入下一步设置新密码
风险分析:利用该漏洞,攻击者可以修改任意有密保的用户密码,从而登陆系统获取相应权限
加固建议:
密保答案禁止返回给客户端
5.22 不安全的Sessionid机制
风险名称:不安全的Sessionid机制
风险级别:高风险
风险描述:用于登陆用户身份识别判断的SessionId保存于客户端或url中,且只要客户端存在已分配未过期的SessionId值时,登陆后台系统不会重新分配SessionId,而是直接使用已分配的SessionId作为登陆后的凭证,导致可以钓鱼或中间人攻击获取和覆盖用户sessionid,得到用户账号权限
测试过程:1、登陆系统,发现sessionid直接存在于url当中
2、在cookie中设置seesionid值,并登陆系统,发现系统直接使用该sessionid值作为登录后的身份凭证,未重新更新分配sessionid
风险分析:利用该漏洞,攻击者可以对后台用户进行钓鱼,中间人等多种手段的攻击,且一旦成功则获取到该用户所有的操作权限。
加固建议:
1、 禁止以客户端传递的sessionid作为登陆之后的身份凭证,应以每次登陆,服务端新生成的凭证为准
2、 禁止未登陆便分配sessionid给客户端,且作为登陆之后的用户凭证
3、 sessionid禁止保存于url和客户端中
六、敏感信息保护类
6.1 数据库错误信息
风险名称:数据库错误信息
风险级别:低风险
风险描述:在发生输入错误时,数据库报错提示过于详细,可能导致恶意攻击者的进一步利用
测试过程:漏洞证明:
正常页面回显。
报错页面回显。
风险分析:可能导致数据库系统敏感信息的泄露或者被进行更深一步的攻击利用
加固建议:
屏蔽或者隐藏记录此类信息,
6.2 敏感信息提示泄露
风险名称:敏感信息提示泄露
风险级别:中风险
风险描述:精准的提示信息讲给恶意攻击者带来明确的攻击信息
测试过程:测试过程::
用户猜解返回:
风险分析:恶意攻击者可根据提示的信息,判断系统是否存在该用户,造成信息泄漏或者对齐有效的攻击
加固建议:
模糊化提示信息,如提示“用户名或密码不正确”,“用户名或密码错误”等
6.3 内部IP泄露
风险名称:内部IP泄露
风险级别:低风险
风险描述:应用程序代码中可能包含一些注释语句或测试语句,组织机构的内部IP可能出现在这些不被执行的语句中
测试过程:漏洞证明:
发送不存在的脚本页面均会返回本地内网真实IP
服务器配置错误回显,处理不当造成泄露内网真实IP。
风险分析:此信息在渗透测试中属于辅助信息,攻击者通过此信息可对内部网络结构进行大致的了解,以便渗透到内网时进行利用
加固建议:
删除相关注释语句、测试语句,或者使用域名替换真实IP
6.4 报错敏感信息泄露
风险名称:报错敏感信息泄露
风险级别:低风险
风险描述:攻击者可通过此风险,获取系统敏感信息,如:数据库信息、服务器信息、源代码查询语句结构等
测试过程:
邮箱尝试注入
返回sql数据库报错页面。
风险分析:攻击者可先根据系统提示精心构造错误,使服务器爆出更明确的敏感信息
加固建议:
建议只输出基本信息或相对能排错的信息,对于敏感信息(如:数据库查询语句、服务器信息等)不要泄漏
6.5 数据库明文存储
风险名称:数据库明文存储
风险级别:中风险
风险描述:数据库使用明文传输,如果存在漏洞,数据库的敏感信息将直接会泄露
测试过程:漏洞证明:
加密密码采用MD5,可破解。
破解成功。
风险分析:采用明文存储的敏感信息,存在漏洞的系统中,可悲攻击者直接获取并利用
加固建议:
建议使用MD5+Salt加密存储敏感信息
6.6 注释敏感信息泄露
风险名称:注释敏感信息泄露
风险级别:低风险
风险描述:攻击者可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、机器名或敏感文件位置
测试过程:
开发商处理页面脚本,修改页面信息处理不当。打开脚本Url:
http://www.wanhu.com.cn/wangzhankaifa/ezsite
得知厦门银行门户网站实在这里购买系统并实施搭建web服务器搭建。
风险分析:攻击者可能会收集有关Web程序的敏感路径等信息,收集到相关敏感信息能辅助进一步的渗透
加固建议:
- 请勿在 HTML 注释中遗留任何重要信息(如文件名或文件路径)
- 从生产站点注释中除去以前(或未来)站点链接的跟踪信息
- 避免在 HTML 注释中放置敏感信息
- 确保 HTML 注释不包括源代码片段
- 确保程序员没有遗留重要信息
6.7 文件内泄露敏感信息
风险名称:文件内泄露敏感信息
风险级别:低风险
风险描述:在HTML、JS、CSS文件中包含敏感信息,导致敏感信息被恶意攻击者收集利用操作
测试过程:
泄漏真实路径信息。
风险分析:攻击者可能会收集有关Web程序的敏感路径等信息,收集到相关敏感信息能辅助进一步的渗透
加固建议:
1.请勿在 HTML 注释中遗留任何重要信息(如文件名或文件路径)
2.请勿在 JS文件中遗留任何重要信息(如文件名或文件路径)
3.请勿在 CSS文件中遗留任何重要信息(如文件名或文件路径)
6.8 JBOSS管理敏感信息泄露
风险名称:JBOSS管理敏感信息泄露
风险级别:低风险
风险描述:JBOSS服务器敏感信息泄露,使攻击者可更快速了解到服务器部署内容,攻击者可根据对应版本的漏洞进行进一步渗透
测试过程:
风险分析:攻击者可得到JBOSS服务器的敏感信息,从而构造更深一层的攻击
加固建议:
在服务器端配置禁止互联网用户访问该页面
6.9 站点的绝对路径泄露
风险名称:站点的绝对路径泄露
风险级别:中风险
风险描述:由于未对服务器返回的出错信息进行良好的处理,一旦用户提交了异常的数据或指令后,服务器将会返回异常的出错信息,通常会包含敏感的配置内容,如WEB绝对路径、数据库路径等
测试过程:
风险分析:此信息在渗透测试中属于辅助性的关键信息,获取绝对路径后攻击者即可了解WEB站点的存放目录,随后可以配合先前获取的权限进行Webshll等恶意文件的上传,通过此信息,攻击者可以很快的定位到上传后文件的访问路径,进而进行下一步攻击
加固建议:
建立错误信息预控制机制,在脚本中加入出错后的处理机制,一旦访问者提交了异常数据,立即返回预定制的出错页面,或者直接返回首页
6.10 Robots包含敏感信息
风险名称:Robots包含敏感信息
风险级别:低风险
风险描述:在网站robots.txt文件中包含敏感信息,可能造成信息泄露
测试过程:
风险分析:Robots.txt文件包含敏感的路径信息,系统信息,可能被恶意攻击者利用进行更深一层的攻击
加固建议:
严格规范robots.txt内数据信息,删除无用的数据
6.11 敏感信息泄露
风险名称:敏感信息泄露
风险级别:高风险
风险描述:发现临时存储的敏感文件,可任意查看敏感文件内容,包括数据库的配置信息
测试过程:
风险分析:服务器配置信息或数据库配置信息非法获取,导致服务器可能被入侵
加固建议:
删除服务器无用的、临时的或者备份的文件
6.12 WSDL接口信息泄漏
风险名称:WSDL接口信息泄露
风险级别:中风险
风险描述:WSDL接口信息泄露,通过泄露可获取系统WSDL信息
测试过程:
http://gpms.foton.com.cn/uapws/service/nc.itf.ses.inittool.PortalSESInitToolService?wsdl
风险分析:攻击者可通过问问WSDL接口获取系统支持的方法信息并构造相关数据包实现访问系统接口的功能,严重时可导致未授权获取系统信息
加固建议:
1、 限制对WSDL接口的访问限制
1、 限制对Services目录的访问
6.13帮助页面疑似泄露内部功能
风险名称:帮助页面疑似泄露内部功能
风险级别:低风险
风险描述:界面存在帮助页面,可能泄露登陆后功能,有可能被恶意攻击者进行更深一层的攻击
测试过程:
风险分析:攻击者可利用该页面了解内部功能,可用来制定详细攻击方案
加固建议:
修改页面,将该功能隐藏,或设计为登录后显示
6.14 配置信息文件泄露
风险名称:配置信息文件泄漏
风险级别:高风险
风险描述:在目录中找到了备份/临时的配置文件。现已证实,此文件包含 Web 应用程序部署描述符 (通常存储在文件中 /WEB-INF/web.xml)。当 web 服务器备份时,开发者创建这种类型的文件进行备份他们的工作或由管理员创建
测试过程:
System.web信息
风险分析:这些配置文件将泄露敏感信息、目录等信息,攻击者可根据收集泄露的提示信息深一步制定攻击方案
加固建议:
从 web 服务器中删除该文件,建议在组织中实施安全策略不允许从Web访问的目录创建临时备份文件
6.15 Cookie内包含敏感信息
风险名称:Cookie内包含敏感信息
风险级别:低风险
风险描述:在Cookie内部包含敏感信息,指定字段信息,如用户名等
测试过程:
Cookie泄漏用户名。
风险分析:攻击者可根据收集泄露的提示信息深一步制定攻击方案
加固建议:
加密Cookie字段,加密相关敏感信息字段
6.16 SVN/GIT等源代码泄露
风险名称:SVN/GIT等源代码泄露
风险级别:高风险
风险描述:造成SVN源代码漏洞的主要原因是管理员操作不规范。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。当前大量开发人员使用GIT进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境,这就引起了GIT泄露漏洞
测试过程:
风险分析:恶意攻击者可以利用该漏洞下载网站的源代码,再从源代码里获得数据库的连接密码;或者通过源代码分析出新的系统漏洞,从而进一步入侵系统
加固建议:
删除指定SVN生成的各种文件,如“/.svn/entries”,删除指定GIT生成的各种文件,如”/ .git/index”等
七、配置管理类
7.1 目录遍历
风险名称:目录遍历
风险级别:中风险
风险描述:路径遍历漏洞允许恶意攻击者突破Web应用程序的安全控制,直接访问攻击者想要的敏感数据 ,包括配置文件、日志、源代码等,配合其它漏洞的综合利用,攻击者可以轻易的获取更高的权限。
测试过程:利用目录枚举工具例如:dirbuster、御剑后台扫描等
当枚举结果存在upload、images等敏感文件目录可以访问时,证明开启了目录遍历。
风险分析:该漏洞可能导致攻击者可以使用浏览Web站点的所以目录及文件,甚至可以越权浏览到系统文件等重要文件数据
加固建议:
设置好对应文件的访问权限,安全Domino URL的OpenFileResource等危险命令
7.2 服务端允许列目录风险
风险名称:服务端允许列目录风险
风险级别:高风险
风险描述:目录未做限制,未授权用户可非法访问该目录下的文件
测试过程:利用目录枚举工具例如:dirbuster、御剑后台扫描等
当枚举结果存在upload、images等敏感文件目录可以访问时,证明开启了目录遍历。
风险分析:Web 服务器或应用程序服务器是以不安全的方式配置的
加固建议:
确保该目录不包含敏感信息,或者您从网络服务器配置中限制目录列表的访问
7.3 发现隐藏目录
风险名称:发现隐藏目录
风险级别:低风险
风险描述:提示信息可以判断系统是否存在此目录或功能模块
测试过程:根据输入不同的目录名,根据响应包不同的响应结果可以发现隐藏的目录。
不存在的目录响应:
存在的目录响应:
风险分析:该漏洞可能导致攻击者可以使用穷举目录名或常用目录名,并通过提示信息来判断系统是否存在此目录或功能模块
加固建议:
自定义错误页面,当服务器发生403错误时,跳至默认的错误页面。防止暴力猜解
7.4 存在备份文件
风险名称:存在备份文件
风险级别:中风险
风险描述:多余的备份文件可能会泄露重要的信息
测试过程:利用目录枚举工具例如:dirbuster、御剑后台扫描等
当枚举结果存在bak、rar、sql等敏感文件可以访问证明存在敏感文件。
风险分析:检测到敏感的备份文件、临时文件,可能导致旧的程序漏洞被利用
加固建议:
请勿将文件的备份文件放置在Web服务器的根目录下,当站点更新时,请将文件删除或者移动到虚拟目录以外的目录,确保在虚拟目录下只有实际在使用的文件
7.5 存在测试界面
风险名称:存在测试界面
风险级别:低风险
风险描述:有时开发者会忘记从生产环境中除去某些调试或测试页面。这些页面有可能包括 Web 用户所不应访问的敏感信息。它们也可能易受到攻击,且或有助于攻击者获取服务器的相关信息,以帮助进行攻击
测试过程:通过目录扫描软件,会发现一些test.txt等测试存留文件
风险分析:攻击者可能会利用测试界面对网站进行攻击从而导致网站的资源受到窃取或者破坏
加固建议:
删除网站中的测试界面数据以及临时文件
7.6 存在WEB默认首页
风险名称:存在Web默认界面
风险级别:低风险
风险描述:未配置首页信息,导致Apache存在默认首页,可能是恶意攻击者进行近一步攻击
测试过程:通过目录扫描发现存在的默认首页
例如一个nginx安装成功的默认首页:
风险分析:攻击者可以通过此风险来获取Web中间件级版本信息,根据已有漏洞进行攻击
加固建议:
建议删除默认首页,配置自定义首页信息
7.7 服务器端口开放过多
风险名称:服务器端口开放过多
风险级别:中风险
风险描述:该服务器开放过多的端口,导致一旦出现新的系统漏洞或者蠕虫病毒,可能导致服务器被入侵,存在安全隐患
测试过程:通常互联网系统应只开放80 http和443 https两种端口
互联网最有可能开放的10个TCP端口。
80 (http)
23 (telnet)
22 (ssh)
443 (https)
3389 (ms-term-serv)
445 (microsoft-ds)
139 (netbios-ssn)
21 (ftp)
135 (msrpc)
25 (smtp)
最有可能开放的10个UDP端口。
137 (netbios-ns)
161 (snmp)
1434 (ms-sql-m)
123 (ntp)
138 (netbios-dgm)
445 (microsoft-ds)
135 (msrpc)
67 (dhcps)
139 (netbios-ssn)
53 (domain)
风险分析:服务器都开放很多端口,导致一旦出现新的系统漏洞或者蠕虫病毒,可能会导致服务器被入侵,有安全隐患
加固建议:
架设硬件防火墙,将端口隐藏在内网,或者对服务器进行加固,将一些不需要使用的端口关闭
7.8 HP Management服务器系统管理口开放
风险名称:HP Management服务器系统管理口开放
风险级别:中风险
风险描述:HP Management提供对服务器的远程系统管理支持,管理员可以通过此接口对服务器进行系统状态查看,远程控制等功能
测试过程:通过端口扫描发现开放的管理端口
风险分析:此接口的登录接口为HTTPS,通过Web进行访问,开放管理接口的同时将面临登录口令被暴力探测的风险,若猜测成功,攻击者将拥有该主机的控制权
加固建议:
评估是否有必要开放HP Management远程管理接口,建议将端口进行关闭
7.9 管理控制台对外开放
风险名称:管理控制台对外开放
风险级别:中风险
风险描述:服务器管理控制台界面开放,可能容易被猜解到,导致攻击者可以暴力破解帐号密码或利用进行下一步攻击
测试过程:例如tomcat管理后台地址是8080端口
风险分析:恶意攻击者可对网站后台管理界面进行暴力破解等一系列攻击,可能对导致网站数据泄露等危害
加固建议:
- 管理后台的服务绑定到内网IP上,禁止开放在外网。
- 如果该管理后台必须提供给外网访问,则未登录页面不要显示过多内容,防止敏感信息泄漏,登录帐号需经过认证,且密码设置规则尽量复杂,增加验证码,以防止暴力破解
7.10 WebLogic管理界面开放
风险名称:WebLogic管理界面开放
风险级别:高风险
风险描述:WebLogic服务器默认安装后,为管理员提供了Web方式的管理入口,如果没有限制,任何人都可以访问到管理页面,可能导致管理员口令被暴力破解
测试过程:通过端口扫描通常管理界面开放在7001端口
风险分析:在公网开放WebLigic管理接口可能遭受恶意攻击者的暴力口令猜测攻击;WebLigic后台的管理权限较大,可直接对操作系统进行修改、执行命令等操作,因此一旦管理入口被突破,将给系统本身带来较大危害,并影响其他服务器安全
加固建议:
1、更改WebLogic默认管理口令(weblogic/weblogic),建议设置复杂的不易猜测的目录名。同时建议帐号不要使用通用的admin、root等。给猜测带来更大的复杂性。使用强壮的口令策略
2、建议将业务系统访问端口与WebLogic管理接口进行分离
3、对WebLogic管理接口配置访问控制,使外网普通用户无法直接访问。或对外关闭管理接口
7.11 启用OPTIONS方法
风险名称:启用OPTIONS方法
风险级别:低风险
风险描述:WEB服务器配置允许一个(或多个)HTTP方法,这些方法可能表示在服务器上启用了WebDAV,可能允许未授权的用户对其进行利用
测试过程:利用HTTP的OPTIONS请求访问系统,若系统返回HTTP请求方法信息证明OPTIONS方法开启。
风险分析:攻击者可能会在WEB服务器上载、修改或删除WEB页面、脚本和文件
加固建议:
如果服务器不需要支持WebDAV,请务必禁用它,或禁止不必要的HTTP方法
7.12 不安全的HTTP请求方法
风险名称:不安全的HTTP请求方法
风险级别:中风险
风险描述:Web服务器开启了不必要的方法,如DELETE,PUT等方法,可能导致恶意用户破坏服务器资源
测试过程:利用HTTP的OPTIONS请求访问系统,通过返回的内容知道开启的方法。
风险分析:可能导致信息泄漏,跨站脚本漏洞,文件上传等风险
加固建议:
如非必要,仅启用GET和POST方法
7.13 启用ASP.NET调试
风险名称:启用ASP.NET调试
风险级别:低风险
风险描述:可能会收集有关 Web 应用程序的敏感信息,如用户名、密码、或敏感文件位置
测试过程:利用HTTP的DEBUGS请求访问系统,通过返回的内容收集敏感的信息。
风险分析:Microsoft ASP.NET 很容易受到信息泄露攻击。攻击者可以发送一个通知是否支持调试支持的恶意请求。攻击者可以利用 DEBUG 动词来发送恶意请求
加固建议:
在 ASP.NET 中禁用调试,编辑 web.config 文件,使它含有下列属性:
7.14 启用TRACE方法
风险名称:启用TRACE方法
风险级别:低风险
风险描述:在此Web服务器上启用HTTP TRACE方法。在Web浏览器中存在其他跨域漏洞的情况下,可以从支持HTTP TRACE方法的任何域读取敏感的标头信息
测试过程:利用trace方法访问系统
Trace被禁用
风险分析:攻击者可以通过TRACE方法返回的信息了解到网站前端的某些信息也可以进行XSS攻击,盗取会话Cookie、获取账户、模拟其他用户身份,甚至可篡改网页,即使网站对关键页面启用了HttpOnly头标记,禁止脚本读取Cookie信息时,通过使用TRACE方法,攻击者可以绕过这个限制,读取Cookie信息
加固建议:
禁用 Web 服务器的TRACE方法
7.15 Slow HTTP Dos 慢速拒绝服务攻击
风险名称:Slow HTTP Dos 慢速拒绝服务攻击
风险级别:中风险
风险描述:存在HTTP慢速拒绝服务攻击风险(Slow HTTP Denial of Service Attack),可造成服务器被拒绝服务攻击
测试过程:利用慢攻击工具slowhttptest对可能存在的风险的服务器发起测试攻击
风险分析:Web服务器很容易受到慢HTTP DOS(拒绝服务)攻击,一个HTTP请求是不完整的,或者转移率很低,服务器把资源忙等待其余的数据。如果服务器保存资源太多忙,这创造了一个拒绝服务
加固建议:
修改中间件配置,设置会话超时时间,设置最少入站传输速率
7.16 缺少“Content-Security-Policy”头
风险名称:缺少“Content-Security-Policy”头
风险级别:低风险
风险描述:“Content-Security-Policy”头主要是定义页面可以加载哪些资源,减少XSS的风险,缺少则可能会被恶意攻击者加载恶意信息,对网站造成损失
测试过程:查看response头信息:
若配置了在头信息中会有 Content-Security-Policy信息
风险分析:缺少“Content-Security-Policy”头可能会让恶意用户在页面上加载一个恶意的信息,以导致用户信息,网站信息泄露的风险
加固建议:
启用“Content-Security-Policy”头
7.17 缺少“X-XSS-Protection”头
风险名称:缺少“X-XSS-Protection”头
风险级别:低风险
风险描述:虽说主流浏览器存在XSS的保护机制,但是效果不太完美,关闭此选项可能会造成XSS攻击的风险
测试过程:查看response头信息:
若配置了在头信息中会有X-XSS-Protection信息
风险分析:缺少“X-XSS-Protection”头,可能会加大攻击者利用XSS对网站进行攻击,可能会导致不必要的损失
加固建议:
启用“X-XSS-Protection”头
7.18 缺少“X-Content-Type-Options”头
风险名称:缺少“X-Content-Type-Options”头
风险级别:低风险
风险描述:互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型,然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行
测试过程:查看response头信息:
若配置了在头信息中会有X-Content-Type-Options信息
风险分析:缺少“X-Content-Type-Options”头可能会造成恶意用户上传恶意文件,危害网站的安全
加固建议:
启用“X-Content-Type-Options”头
7.19 X-Frame-Options未配置
风险名称:X-Frame-Options未配置
风险级别:低风险
风险描述:HTTP 响应头信息中的X-Frame-Options,可以指示浏览器是否应该加载一个 iframe 中的页面。如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险
测试过程:查看response头信息:
风险分析:如果服务器响应头信息中没有X-Frame-Options,则该网站存在ClickJacking攻击风险,网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持
加固建议:
修改web服务器配置,添加X-Frame-Options响应头。赋值有如下三种:
1、DENY:不能被嵌入到任何iframe或者frame中。
2、SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
3、ALLOW-FROM url:只能被嵌入到指定域名的框架中。
例如:
apache可配置http.conf如下:
Header always append X-Frame-Options “DENY”
7.20 启用自动完成的密码类型输入
风险名称:启用自动完成的密码类型输入
风险级别:低风险
风险描述:当一个新的用户名和密码输入表单式,并提交表单时,浏览器会询问如果密码是否保存。此后显示表单时,用户名和密码将自动填充或完成的输入用户名。具有本地访问权限的攻击者可以获取从浏览器缓存中的明文密码
测试过程:登陆失败后,系统返回登陆界面时,账号密码已经自动填充。
风险分析:登录框未限制历史信息隐藏,可能会造成信息泄露的风险
加固建议:
密码自动完成填充应在敏感的应用中被禁用。 要禁用自动完成功能,您可以使用类似代码:<INPUT TYPE=”密码”AUTOCOMPLETE=”关闭” >
7.21 Banner信息泄露
风险名称:Banner信息泄露
风险级别:低风险
风险描述:服务器Response信息中泄露了服务器组件等信息
测试过程:查看response信息
风险分析:若攻击者获知服务器组件等信息及版本信息,会使下一步的攻击和漏洞测试提供便利
加固建议:
建议屏蔽或简单显示此类信息
7.22 长密码拒绝服务攻击
风险名称:长密码拒绝服务攻击
风险级别:中风险
风险描述:未对密码输入长度做有效限制,存在密码长度过长,服务端处理消耗大量资源,可造成服务器被拒绝服务攻击
测试过程:在密码栏输入超长密码字符并提交,提交后服务器无法访问。
风险分析:当攻击者输入密码长度达到服务端处理极限,或者连续发送长密码请求,导致服务端处理时资源耗尽,产生拒绝服务
加固建议:
限制有效密码输入长度
7.23 编辑器漏洞
风险名称:编辑器漏洞
风险级别:高风险
风险描述:Ewebeditor,fckeditor,kindeditor,southidceditor,cfeditor等很多浏览器本身包含漏洞,可导致恶意攻击者进行目录遍历,webshell上传等,从而窃取服务器信息或者获取目标服务器权限
测试过程:利用用目录枚举工具例如:dirbuster、御剑后台扫描等工具确认编辑器地址
枚举后可尝试历遍、上传等操作。
风险分析:可通过编辑器漏洞窃取服务器敏感信息或者获取到服务器权限
加固建议:
1.更新编辑器至最新版本
2.修改编辑器默认管理后台访问权限
3.修改编辑器默认管理界面,口令
4.更多编辑器漏洞介绍请查看以下网址:
编辑器漏洞手册 - 血梦博客 - 专注于网络安全|黑客学习|渗透测试|代码审计|国内最专业的黑客技术博客
八、框架漏洞
8.1 Struts2代码执行漏洞
风险名称:Struts2代码执行漏洞
风险级别:高风险
风险描述:Struts2是一个基于MVC设计模式的Web应用框架,当Apache Struts2开了其动态方法Dynamic Method Invocation,会允许远程的攻击者使用method:前缀执行任意构造的链式ONGL,影响版本如下:<2.3.20.2,2.3.24.0-2.3.24.2,2.3.28.0-2.3.28.1>
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:攻击者可利用该漏洞执行任意命令如写入后门、上传木马等进而完全控制服务器,盗取网站数据
加固建议:
升级Struts2到最新版本,下载地址http://struts.apache.org/
8.2 jBoss远程执行漏洞
风险名称:jBoss远程执行漏洞
风险级别:高风险
风险描述:jBoss默认配置会有一个后台漏洞,漏洞函数为addURL(),会远程下载一个war压缩包并解压访问后台,通过写入war压缩文件webshell的url地址,从而获得webshell获得服务器的权限
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:远程执行下在一个包含恶意文件的war文件,从而获得服务器权限
加固建议:
1.在 ${jboss.server.home.dir}/deploy下面找到jmx-console.war目录编辑WEB-INF/web.xml文件 去掉 security-constraint 块的注释,使其起作用
2.编辑WEB-INF/jboss-web.xml去掉 security-domain 块的注释 ,security-domain值的映射文件为 login-config.xml
3.编辑WEB-INF/classes/jmx-console-users.properties添加用户名密码
8.3 Thinkphp命令执行
风险名称:ThinkPHP命令执行漏洞
风险级别:高风险
风险描述:ThinkPHP是国内使用比较广泛的一款老牌PHPMVC框架,Think主要问题在于Dispatcher.class.php文件,文件中把pathinfo作为restful类型URL进行解析的,主要作用是把pathinfo中的数据解析并合并到$_GET数组中。在用正则解析pathinfo的时候$var[‘\1’]=\2” 又是双引号,而双引号中的php变量语法能够被解析,所以造成了任意代码执行漏洞。
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:攻击者可利用该漏洞执行任意命令如写入后门、上传木马等进而完全控制服务器,盗取网站数据
加固建议:
- 升级ThinkPHP到最新版本。 框架下载 - ThinkPHP框架
- 将$var[‘\1’]=\2” 双引号改写成单引号
8.4 Spring MVC 命令执行漏洞
风险名称:Spring MVC 命令执行漏洞(CVE-2010-1622)
风险级别:高风险
风险描述:由于Spring框架允许使用客户端所提供的数据来更新对象,而这以机制允许攻击者修改class.classloader加载对象的类加载器属性,这可能导致执行任意命令
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:这个漏洞将直接危害到使用Spring MVC框架的网站
加固建议:
升级 Spring 到最新版本。 http://spring.io/
8.5 Django命令执行漏洞
风险名称:Django命令执行漏洞
风险级别:高风险
风险描述:Django0.95版本存在命令执行漏洞,攻击者就可以构造出包含有恶意代码的序列化字串,将其传递给服务器,服务器在解析即反序列化会话的同时,就有可能导致任意命令执行
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:服务器在解析即反序列化会话时,有可能导致任意命令执行
加固建议:
升级Django 到最新版本。Download Django | Django
8.6 Java反序列化任意命令执行漏洞
风险名称:Java反序列化任意命令执行漏洞
风险级别:高风险
风险描述:Weblogic Java反序列化可导致任意命令执行
测试过程:使用专用POC检测工具进行测试扫描。不同版本的漏洞位置不一样,需要自行下载测试工具。不同版本的漏洞位置不一样,需要自行下载测试工具。
风险分析:攻击者利用此漏洞可直接威胁服务器安全,高级别的攻击,会造成严重影响
加固建议:
建议尽快升级Weblogic版本,下载最新补丁,及时更新
九、服务漏洞
9.1 IIS写文件漏洞
风险名称:IIS写文件漏洞
风险级别:高风险
风险描述:恶意攻击者可以向该目录写入文件,通过HTTP协议的PUT方法,向该目录写入文件或以指定的内容覆盖当前目录下的现有文件
测试过程:第一步,通过OPTIONS探测服务器所支持的HTTP方法,(这里决定后面能不能操作)
第二步,通过PUT方法向服务器上传脚本文件
第三步,通过Move或Copy方法改名
风险分析:可能会被上传带有后门的恶意程序,从而获取到对服务器的控制权,从而造成数据丢失或者系统损坏等
加固建议:
禁用WebDAV功能,或者关闭不安全的HTTP方法
9.2 IIS解析漏洞
风险名称:IIS解析漏洞
风险级别:高风险
风险描述:当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都将被IIS当作ASP文件来解析。2.当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行
测试过程:Iis、apach、php分别有不同的测试方法,详情可参考: https://blog.csdn.net/hitwangpeng/article/details/46913957
险分析 IIS6.0解析文件时,存在两个解析漏洞,攻击者可利用解析漏洞获取webshell
加固建议:
升级IIS版本,对上传进行过滤
9.3 Apache解析漏洞
风险名称:Apache解析漏洞
风险级别:高风险
风险描述:Apache在解析文件时当遇到无法识别的扩展名时,将会从后向前解析,直到遇到识别的扩展名为止
测试过程:Iis、apach、php分别有不同的测试方法,详情可参考:
当apache 容器碰到不认识的扩展名时,将会从后面向前解析,直到碰到认识的扩展名为止,如果都不认识,则会暴露其源代码。
这种方法可以绕过基于黑名单的检查。
Apache认识的扩展名保存在安装目录下”/conf/mime.types”文件中。
风险分析:如果开发人员在控制上传文件是,判断文件名是否是PHP、ASP、ASPX、ASA、CER、ASPX等脚本扩展名,如果是,则不允许上传,这是攻击者就有可能上传1.php.rar等扩展名来绕过程序检测,配合解析漏洞,或得webshell
加固建议:
- 版本升级
- 使用白盒测试对上传做控制
9.4 CGI路径解析漏洞
风险名称:CGI路径解析漏洞
风险级别:高风险
风险描述:在使用Nginx作为web server时,一般使用fastcgi的方式调用脚本解释器,当访问一个不存在的文件时,会解析上级路径文件
测试过程:在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo在本机中位于C:\wamp\bin\php\php5.3.10\php.ini,默认是开启的,当URL中有不存在的文件,PHP就会向前递归解析
风险分析:通过上传一张包含恶意代码的文件,使用fastcgi方式调用脚本编辑器,构造攻击,从而导致包含恶意代码的文件执行
加固建议:
将配置文件中的cgi.fix_pathinfo设置为0
–EOF–