安全测试-- WEB 实战

article/2025/10/2 4:55:10

 

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

 

 

 

 

 

一  端口信息收集

kali :

nmap -A -T4 192.168.1.35

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

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

出口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 忘记密码处

 

2 暴力破解

 

 

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配置:<constantname=”struts.devMode” value=”false” />

 

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文件,找到如下信息:

<Connectorport="8080" protocol="HTTP/1.1"

              connectionTimeout="20000"

               redirectPort="8443"/>

<!-- A "Connector" using the shared threadpool-->

 

20000修改为20:

 

<Connectorport="8080" protocol="HTTP/1.1"

               connectionTimeout="20"

               redirectPort="8443"/>

<!-- A "Connector" using the shared threadpool-->

 

 

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>alert('xss')</script>

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

        <ScripT>alert('xss')</ScripT>

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

        <img src='xx' onerror=alert('xss')>

    **  进行了html编码

        没得玩!!!

 

*   常见XSS攻击代码

    **  锚标记一句话执行

        <script>eval(location.hash.substring(1))</script></br>

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

        <a href="javasc

ript:alert(1)">click</a> </br>

    **  img标签带上事件

        <IMG “”><SCRIPT>alert(\'bask-slash no change to run\')</SCRIPT>”></br>

        <IMG “”><SCRIPT>alert('img1')</SCRIPT>”></br>

        <IMG “”"><SCRIPT>alert('img2')</SCRIPT>”></br>

        <IMG “”><SCRIPT>alert('img3')</SCRIPT>></br>

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

            <img src="x" onerror="\u0061\u006c\u0065\u0072\u0074('js-unicode-encoded')"></br>

            <img src="x" onerror="alert(1)"></br>

            <img src="x" onerror="&#x61&#x6c&#x65&#x72&#x74&#x28&#x27&#x68&#x74&#x6d&#x6c&#x7f16&#x7801&#x27&#x29"></br>

            <script>\u0061\u006c\u0065\u0072\u0074('js-unicode-encoded1111')</script>

    **  data中对网页内容进行base64编码,比如 <img src=x onerror=alert('base64')>

        <a href="data:text/html;base64, PGltZyBzcmM9eCBvbmVycm9yPWFsZXJ0KCdiYXNlNjQnKT4=">test</a></br>

 

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

        比如 "<img src="x" onerror="alert(1)"></br>"

        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‘;

 

 

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

 

2 反射性XSS

login_name=admin<script>alert("1")</script>&pwd=E10ADC3949BA59ABBE56E057F20F883E

 或在登录页面输入用户名:admin<script>alert("1")</script>点击登录,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---------------------------------------------

 

 


http://chatgpt.dhexx.cn/article/EL8Aewj6.shtml

相关文章

Web应用安全测试扫盲

最近新闻热点《西北工业大学遭美国国家安全局网络攻击事件》想必大家都看到了&#xff0c;攻击的目的无外乎获取涉及到国安的机密数据。 移动互联网时代&#xff0c;Web应用产生并存储海量用户隐私以及交易数据&#xff0c;对Web应用进行安全测试变得越来越重要。 本文属于扫…

Web 安全测试之信息泄漏测试

随着因特网的不断发展&#xff0c;人们对网络的使用越来越频繁&#xff0c;通过网络进行购物、支付等其他业务操作。而一个潜在的问题是网络的安全性如何保证&#xff0c;一些黑客利用站点安全性的漏洞来窃取用户的信息&#xff0c;使用户的个人信息泄漏&#xff0c;所以站点的…

MYSQL数据库安全测试

1.利用渗透机场景kali中的工具确定MySQL的端口&#xff0c;将MySQL端口作为Flag提交&#xff1b; Nmap -sV -p- 172.16.101.243 flag{3358} 2.管理者曾在web界面登陆数据库&#xff0c;并执行了 {select ‘<?php echo ;system($_GET[\cmd\]); echo ; ?>’ INTO OUTFI…

Web安全测试-WebScarab工具

转载自web安全测试—WebScarab工具介绍&#xff08;中间攻击&#xff0c;可以修改请求参数&#xff09; 1.1 Webscarab1.1.1 工具安装1.1.2 功能原理1.1.3 工具使用1.1.34 使用心得 工具下载&#xff1a;WebScarab工具下载 1.1 Webscarab 【功能】 WebScarab是一个用来分析使…

web安全测试概述

一、关于安全 1、安全问题的根源&#xff1a; 1&#xff09;、分层思想&#xff0c;这个分层包括网络分层和软件分层等&#xff0c;分层可以将大的问题划分为不同的层次&#xff0c;层次与层次之间通过一定的接口标准进行信息交换&#xff0c;从而将一个大问题拆分开来由不同…

【安全】Web渗透测试(全流程)

1 信息收集 1.1 域名、IP、端口 域名信息查询&#xff1a;信息可用于后续渗透 IP信息查询&#xff1a;确认域名对应IP&#xff0c;确认IP是否真实&#xff0c;确认通信是否正常 端口信息查询&#xff1a;NMap扫描&#xff0c;确认开放端口 如果不会用Nmap&#xff0c;看这里…

WEB渗透之数据库安全——MySQL

意识薄弱-弱口令爆破 安全机制-特定安全漏洞 0x00 MySQL默认配置root用户禁止外连 就算爆破出正确用户名密码也无法登录&#xff0c;如果爆破出非root用户账号密码&#xff0c;价值也不大 所以如果目标网站部署了phpMyAdmin,找到phpMyAdmin目录&#xff08;如果使用phpStudy…

web安全渗透测试

通过浏览器访问http://靶机服务器IP/1&#xff0c;对该页面进行渗透测试, 找到flag格式&#xff1a;flag&#xff5b;Xxxx123&#xff5d;&#xff0c;括号中的内容作为flag值并提交&#xff1b;&#xff08;2分&#xff09;通过浏览器访问http://靶机服务器IP/2&#xff0c;对…

菜鸟浅谈——web安全测试

本文仅为小白了解安全测试提供帮助 一&#xff1a;安全测试注意事项 1&#xff09;要注意白帽子与黑客之间的区别 2&#xff09;在挖漏洞挣外快时&#xff0c;注意不要使用安全扫描或暴力破解软件对上线网站进行扫描或攻击。 不要对上线网站造成破坏&#xff0c;不要去获取网…

WEB安全_基础入门_系统及数据库,明确安全测试思路(演示只需要熟悉流程)

目录 前言一、操作系统层面背景知识点1.识别操作系统的常见方法方式一&#xff1a;改变大小写看操作系统的类型方式二&#xff1a;TTL判断方式三&#xff1a;nmap端口判断 2.简要两者区别及识别意义3.操作系统层面漏洞类型对应意义SQL注入漏洞跨站脚本漏洞弱口令漏洞HTTP报头追…

web平台安全测试方案

平台安全测试方案 1、 测试目的 能尽可能发现当前系统存在的安全隐患&#xff0c;在漏洞报告提供出有价值的建议通过报告修复漏洞后&#xff0c;能减少系统出现严重的安全事故 2、测试对象 Web应用程序服务器操作系统 3、测试工具及环境 AppScan&#xff08;Windows10&am…

什么是web安全测试

1.1什么是web安全测试&#xff1f; Web安全测试就是要提供证据表明&#xff0c;在面对敌意和恶意输入的时候&#xff0c;web系统应用仍然能够充分地满足它的需求 1.2为什么进行Web安全测试 2005年06月&#xff0c;CardSystems&#xff0c;黑客恶意侵入了它的电脑系统&#x…

web安全测试内容

一. 首先你得了解Web Web分为好几层&#xff0c;一图胜千言&#xff1a; 事实是这样的&#xff1a; 如果你不了解这些研究对象是不可能搞好安全研究的。 这样看来&#xff0c;Web有八层&#xff08;如果把浏览器也算进去&#xff0c;就九层啦&#xff0c;九阳神功……&#xff…

解决报错RuntimeError: set_sizes_and_strides is not allowed on a Tensor created from .data or .detach().

完整报错信息如下 RuntimeError: set_sizes_and_strides is not allowed on a Tensor created from .data or .detach(). If your intent is to change the metadata of a Tensor (such as sizes / strides / storage / storage_offset) without autograd tracking the change…

基于keras的卷积神经网络(CNN)

1 前言 本文以MNIST手写数字分类为例&#xff0c;讲解使用一维卷积和二维卷积实现 CNN 模型。关于 MNIST 数据集的说明&#xff0c;见使用TensorFlow实现MNIST数据集分类。实验中主要用到 Conv1D 层、Conv2D 层、MaxPooling1D 层和 MaxPooling2D 层&#xff0c;其参数说明如下…

Grad strides do not match bucket view strides.This may indicate grad was not created according to th

家人们来看看是不是报这个 warning: [W reducer.cpp:283] Warning: Grad strides do not match bucket view strides. This may indicate grad was not created according to the gradient layout contract, or that the params strides changed since DDP was constructed.…

Python多维数组跨度strides(学习笔记)

Python多维数组跨度 今天就来搞明白有关于多维数组的跨度 strides的知识 先构建一个四位数组&#xff1a; arrnp.arange(1,25.0).reshape(2,2,2,3) print(轴(维度):,arr.ndim) arr分析&#xff1a;arange(1,25.0)是1~24共24个数字&#xff0c;注意到25.0是float类型 再来看看…

RuntimeError: sparse tensors do not have strides

这是一个可以复现的问题。 归根结底在于 torch不支持Sparse与Sparse的矩阵乘法(mm)。 也不支持Dense 与 Sparse的矩阵乘法。 只支持Sparse与Dense的矩阵乘法。 torch.mm是消边的矩阵乘法&#xff0c;mm matrix multiply。 而torch.mul是同形矩阵的element-wise点乘。 所谓s…

Warning: Grad strides do not match bucket view strides pytorch利用DDP报错

遇到报错&#xff1a; [W reducer.cpp:362] Warning: Grad strides do not match bucket view strides. This may indicate grad was not created according to the gradient layout contract, or that the param’s strides changed since DDP was constructed. This is not a…

Python ndarray.strides用法

用法 ndarray.strides: 跨越数组各个维度所需要经过的字节数元组 a np.array([[10,2,4],[3, 4,11]],dtypenp.int32) print(a.strides) #(12,4) 12表示在内存中a[n, 0]到a[n1, 0]跨过多少byte; 4表示在内存中a[n, 0]到a[n, 1]跨过多少byte# 查看数组a所有元素占用内存大小&…