安全测试-- WEB 实战

 

增:XSS、文件上传get shell
删:越权
查:sql注入、越权
改:XSS、越权
好  也可以用wvs先扫 根据报告找漏洞的点 

 

 

 

 

 

一  端口信息收集

kali :

nmap -A -T4 192.168.1.35

安全测试-- WEB 实战_第1张图片

端口信息收集  端口信息收集资料

问题:端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关)。攻击者可以通过它了解到从哪里可探寻到攻击弱点。

出口ip:192.168.1.35

中间件:nginx/1.8.0

检测结论

发现服务器主要开放了22,80,280,880,1521,8290等端口。

漏洞危害

攻击者可以通过它了解到从哪里可探寻到攻击弱点。

加固建议

把没用的端口不要对外开放,或者禁止ping。

危险端口:https://www.cnblogs.com/yutingmoran/p/6868890.htm

-----------------------------------------------------一 端口信息收集--------------------------------------------------------

 

 

 

二  登录、注册、改密、忘记密码

 

1 明文传输 

2.1 登录处

2.2 修改密码处

2.3 新增用户处

2.4 忘记密码处

安全测试-- WEB 实战_第2张图片

 

2 暴力破解

安全测试-- WEB 实战_第3张图片

 

 

3 验证码前端校验

 

输入手机号和验证码后点击获取验证码,抓包查看其返回,明文传输了验证码,使用该验证码可通过校验,进入下一步修改密码。

 

【危害】

攻击者发送验证码后无需在设备上查看验证码即可使用验证码,可越权修改其他账户密码

【修复建议】

验证码校验放在后台,不返回至前端;

 

 

4 前端密码校验

修改密码时,密码返回到前端做校验,修改请求可以查出id对应的账号及密码

危害

修改请求可以查出id对应的账号及密码;使用加密后密码,修改请求,可以直接修改其他账户的密码,造成越权操作。

修复建议

用户密码不应返回到前端,密码校验时可在后台进行校验后返回校验结果到前端并在后台执行相关操作

 

 

 

5  短信炸弹 & 邮箱

抓包后连续重放获取验证码的请求10/50/200

 

【危害】

攻击者可利用重放请求,不断往同一手机号码发重复短信,达到恶意骚扰的效果

【修复建议】

1、限制每个手机号的每日发送次数,超过次数则拒发送,提示超过当日次数。

2、限制每个手机号发送的时间间隔,比如没超过2分钟不允许发送,提示操作频繁。

3、每个ip限制最大限制次数。超过次数则提示超过ip当日发送最大次数。

 邮箱炸弹

同上

 

【危害】

攻击者可利用重放请求,不断往同一邮箱发重复邮件,直到超出邮箱规定空间,使目标邮箱无法再处理信件,导致邮箱报废的一种破坏性攻击

【修复建议】

1、限制每个邮箱的每日发送次数,超过次数则拒发送,提示超过当日次数。

2、限制每个邮箱发送的时间间隔,比如没超过2分钟不允许发送,提示操作频繁。

3、每个ip限制最大限制次数。超过次数则提示超过ip当日发送最大次数。

-----------------------------------------------------二 登录、改密、注册、忘记密码-------------------------------------------------------

 

 

 

三 越权

 

越权遍历系统账户

登录任意用户后抓取请求包,发现为请求中带有用户id:

 

 

 

遍历用户id可以得到系统中所有用户的资料,如:

 

 

 

【危害】

攻击者通过重放请求遍历系统中全部账户,可结合其他漏洞进行进一步攻击

【修复建议】

1、对用户身份会话信息进行严格验证,禁止通过重放攻击手段进行越权访问。

2、使用HTTPS协议对传输数据进行加密保护,即使传输的数据被截获,也无法解密和还原

 

 

 

 

越权重置任意账户密码

企业招聘子系统首页点击忘记密码,输入正确验证码后设置新密码:

抓包后发现修改密码无需验证码验证,且修改为系统中用户手机号(结合漏洞2.5     越权遍历系统账户)或修改密码为其他(使用MD5加密),重放请求,提示密码修改成功:

 

 

 

使用修改后的密码登录对应账户,可成功登录

 

【危害】

该功能无需短信验证码,抓包后可通过重放修改密码请求越权修改其他账户密码。

【修复建议】

修改密码时需添加验证码校验,且仅需校验为当前手机号

 

 

 

3  数据提交越权漏洞

抓取一个签约的请求,经过URL解码可得到明文信息,修改内容后,进行URL编码,重放请求,仍可签约成功。

 

【危害】

攻击者利用越权访问漏洞,可以抓包并提交敏感数据信息,可以造成重要信息的更改,甚至可以结合其他漏洞对系统进一步渗透。

【修复建议】

对用户身份会话信息进行严格验证,禁止通过重放攻击手段进行越权访问。如使用HTTPS协议对传输数据进行加密保护,即使传输的数据被截获,也无法解密和还原。

 

 

 

4 水平越权漏洞

抓取一个签约的请求,修改身份证信息后重放请求,仍可签约成功

 

【危害】

攻击者利用越权访问漏洞,可以抓包并提交敏感数据信息,可以造成重要信息的更改,甚至可以结合其他漏洞对系统进一步渗透。

【修复建议】

对用户身份会话信息进行严格验证,禁止通过重放攻击手段进行越权访问。如使用HTTPS协议对传输数据进行加密保护,即使传输的数据被截获,也无法解密和还原。

 

 

 

5 任意URL跳转漏洞

 

危害

攻击者可通过该漏洞外链到任意指定的挂马站点,有钓鱼风险。

修复建议

根据业务需求设置安全的URL站点白名单。

-----------------------------------------------------三 越权-------------------------------------------------------

 

 

 

四 服务器部署

 

1 Tomcat样例目录session操纵漏洞

危害

Apache Tomcat默认安装包含”/examples”目录,里面存着众多的样例,其中session样例(/examples/servlets/servlet/SessionExample)允许用户对session进行操纵。因为session是全局通用的,所以用户可以通过操纵session获取管理员权限。

修复建议

删掉“/examples”目录下的样例页面或对该目录进行权限控制。

 

 2 Struts2开发模式OGNL后门漏洞

危害

Struts2在开发模式下时,存在OGNL后门漏洞,可使攻击者通过该漏洞执行任意代码。

修复建议

1.     删除该页面或对该页面进行权限控制;

2.     打开WEB-INF/classes/struts.properties配置文件,设置struts.devMode=false

3.     struts.xml配置:

 

3 慢速HTTP拒接服务攻击(DoS)

在Kali Linux上安装SlowHTTPTest

# apt-get install slowhttptest 

 

攻击命令:

slowhttptest -c 1000 -H -i 10 -r 200 -t GET -u https://yourtarget.com/index.html -x 24 -p 3

 

危害

攻击者利用的HTTPPOST方法,POST的时候,指定一个非常大的content-length,然后以很低的速度发包,比如10-100s发一个字节,hold住这个连接不断开。这样当客户端连接多了后,占用住了webserver的所有可用连接,从而导致DOS。

修复建议

对web服务器的http头部传输的最大许可时间进行限制,修改成最大许可时间为20秒。

修复示例:

找到tomcat目录下的server.xml文件,找到如下信息:

              connectionTimeout="20000"

               redirectPort="8443"/>

 

20000修改为20:

 

               connectionTimeout="20"

               redirectPort="8443"/>

 

 

4 Nginx SPDY 堆缓冲溢出漏洞(CVE-2014-0133)

Nginx 的SPDY 模块爆堆缓冲溢出的漏洞,影响的版本从 1.3.15 到 1.5.11 版本。4343/4545/4646环境下nginx版本均为1.5.6

危害

远程攻击者利用漏洞可使应用程序崩溃或执行任意代码。

【修复建议】

可通过打补丁解决,或者更新版本。

 

 

 

OpenSSL Heartbleed Bug (心脏出血)

OpenSSL Heartbleed Bug (心脏出血),该漏洞发生在OpenSSL对TLS的心跳扩展(RFC6520)的实现代码中,由于遗漏了一处边界检查,使攻击者无需任何特权信息或身份验证,每次能够从内存中读取请求存储位置之外最多达64 KB的数据,可能包含证书私钥、用户名与密码、聊天消息、电子邮件以及重要的商业文档和通信等数据。

使用该漏洞POC可读取到服务器内存中的数据,下图为读到的某段包含cookie的数据:

危害

攻击者无需任何特权信息或身份验证,每次能够从内存中读取最多达64KB的数据,因为内存的内容可能在不断变化,每次读到的信息可能都不一样,可能包含证书私钥、用户名与密码、聊天消息、电子邮件以及重要的商业文档和通信等数据。

修复建议

升级OpenSSL到 1.0.1g以上的版本。

-----------------------------------------------------四 服务器部署问题-------------------------------------------------------

 

 

 

五 cookie session问题

 

1 会话标识未更新

在IE浏览器中输入用户名密码登录成功后,cookie值如下图:

在点击退出系统重新登录,截取请求,可发现cookie值并未更新,如下图:

退出登陆后,chrome浏览器依然可以使用原来cookie操作页面内容,证明cookie并未失效。

危害

攻击者可窃取或操纵客户会话和cookie用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。

修复建议

请勿接受在登录时由用户的浏览器提供的会话标识;始终生成新会话以供用户在成功认证后登录。在关闭会话或重新登录时废除之前的会话,并强制用户再次登录。

 

 

2 错误信息泄露

 

危害

错误信息泄露不会直接对服务器和WEB程序的运行造成危害,但可能会给攻击者提供有价值的信息,以便于攻击者进行进一步的攻击。

修复建议

应用运行报错时不应未经处理就把错误信息直接输出到前台,报错时应强制跳转到专有的错误信息页面。

 

 

 

Cookie存放未加密的敏感信息

截取某个请求,可查看到明文的用户名和密码以及仅仅进行了URL编码的姓名、身份证号、手机号、地址等敏感信息

进行解码后即可查看敏感信息

 

危害

Cookie被拦截或窃取时会泄露未加密的敏感信息,如账号密码,身份证、手机号等个人信息,可被攻击者非法利用。

修复建议

Cookie一般情况下不建议存放除了用户标识以外的其他敏感信息,如业务需要必须存放其他敏感信息时,应进行加密处理。

-----------------------------------------------------五 cookie session 问题-------------------------------------------------------

 

 

六  XSS

1 存储型XSS跨站脚本攻击

*   XSS攻击试探

    **  没有任何过滤

        

    **  过滤关键字script,但大小写不敏感

        

    **  过滤了模式串<*s*c*r*i*p*t,而且大小写敏感

        'xx' onerror=alert('xss')>

    **  进行了html编码

        没得玩!!!

 

*   常见XSS攻击代码

    **  锚标记一句话执行

        

    **  续行、冒号进行html编码

        click

    **  img标签带上事件

        ”>

        ”>

        ”>

        >

        -   js的unicode编码,html十进制、十六进制编码

            "x" onerror="\u0061\u006c\u0065\u0072\u0074('js-unicode-encoded')">

            "x" onerror="alert(1)">

            "x" onerror="alert('html编码')">

            

    **  data中对网页内容进行base64编码,比如 'base64')>

        "data:text/html;base64, PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KCdiYXNlNjQnKT4=">test

 

    **  js8进制、16进制编码字符串变量

        比如 "
"

        document.body.innerHTML='\x61\x6c\x65\x72\x74\x28\x27\x6a\x73\x31\x36\x8fdb\x5236\x27\x29';

        document.body.innerHTML=’\74\151\155\147\40\163\162\143\75\42\170\42\40\157\156\145\162\162\157\162\75\42\141\154\145\162\164\50\61\51\42\76\74\57\142\162\76‘;

 

 

挨个输入框试下(可以输入文本+可以读取刚输入的文本)

安全测试-- WEB 实战_第4张图片

 

2 反射性XSS

login_name=admin&pwd=E10ADC3949BA59ABBE56E057F20F883E

 或在登录页面输入用户名:admin点击登录,js脚本被执行

提交表单 post get  &

 

【危害】

没有过滤或过滤不严,这些恶意代码将储存到服务器中,攻击者能在受害者的浏览器中执行js脚本以劫持用户会话、破坏网站、插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器。这种XSS比较危险,容易造成蠕虫,盗窃cookie等等。

【修复建议】

1、检测并过滤输入的特殊字符,如: <>(尖括号)、"(引号)、'(单引号)、%(百分比符号)、;(分号)、 ()(括号)、&(& 符号)、+(加号)

(注意在过滤某些特殊字符时判断是否对业务有影响)

2、针对输出数据具体的上下文语境进行针对性的编码

3、为cookie设置Httponly属性

抵御XSS攻击,只需做到两点:

    1、所有前端的页面渲染,尽量使用ajax异步进行,从后台获取要显示的数据。

    2、前端提交过来的数据,在后台入口处统统对HTML中的关键字进行html编码转义。

做到上面方可基本无忧。

-----------------------------------------------------六 XSS--------------------------------------------------------

 

 

 

 

七 SQL 注入

怎么找到的SQL注入点?(这里只举一个例子,其它类似)

1.找到可以提交数据(特别是可以查询数据)的地方,尝试输入数据,开启代理,burp suite ,拦截该请求。

2.拦截到该请求后复制该信息到1.txt文件,为了好找,放在sqlmap根目录下。

在cmd输入:

python c:\sqlmap\sqlmap.py -r c:\sqlmap\get.txt --threads=10 --tamper=space2comment --current-db -v 3

 

1、获取到数据库名        dXX
2、命令改为 猜表          -D dXX --tables
3、得到表             tXXX
4、命令改为 猜列        -T tXXX --columns
5、得到列             cXXXX
6、或可以尝试转储数据库  -T tXXX  --dump

 

危害

攻击者可通过SQL注入漏洞窃取数据库资源。

修复建议

1、最佳的解决方式是使用参数化查询;

2、检测并过滤用户输入的特殊字符,如:'|(|)|,|-|and|like|select|from|regexp|or 等。

(注意在过滤某些特殊字符时判断是否对业务有影响)

-----------------------------------------------------七 SQL 注入--------------------------------------------------------

 

 

 

八  任意文件上传(可getshell) 上传漏洞

在模版图片处可上传webshell文件

 

危害

攻击者可直接上传木马、病毒、恶意脚本、webshell等可执行文件到服务器,从而直接获取服务器的权限。

修复建议

1、服务端设置白名单,检测并过滤掉可执行文件类型,如jsp、php、asp等;

2、控制文件上传目录的权限,使上传的文件不可执行;

3、对上传的文件进行重命名为安全的文件类型和存储在指定的有严格限权控制的路径。

-----------------------------------------------------八 SQL 注入--------------------------------------------------------

 

 

 

九 CSRF跨站请求伪造

1.抓取一个修改密码的请求,修改请求内容(修改js脚本及提交的参数等)并生成一个链接,点击链接会使cookie中保存的用户账户密码被修改

 

2.抓取一个居民解约的请求,结合sql注入盗取的数据库信息或用户cookie信息,修改person_id、doctor_group_id、doctor_id的参数范围,在参数范围内重放请求,极大可能实现大批居民的解约操作

 

 

 

【危害】

该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权的情况下执行在权限保护之下的操作,具有很大的危害性。攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作。

【修复建议】

1.验证HTTP Referer字段

2.在请求地址中添加token并验证

3. 在HTTP头中自定义属性并验证

-----------------------------------------------------九 CSRF---------------------------------------------

 

 

你可能感兴趣的:(测试)