该篇文章主要是写给WEB安全入门者的基础与思路
基础
HTTP协议
网站访问过程
-
静态页访问
首先用户通过浏览器打开kw0ng.top,此时浏览器会向DNS服务器请求解析,将kw0ng.top转换为IP地址120.78.132.122,接着数据包开始一层层封装,以便于在网络中传输,数据包HTTP Request会被发往120.78.132.122,中间可能经过运营商,过了很多跳路由直到送达到目的地址120.78.132.122,此时120.78.132.122上的Apache正在运行,120.78.132.122经过网络层还原回应用层HTTP协议,送达至Apache,我们一般称Apache这类功能软件为中间件,其他中间件还有Nginx,Tomcat等,Apache将默认的index.html页面读取后作为HTTP Response返回给浏览器,浏览器解析后将页面展现出来。此时就完成了一个静态页面的访问过程。
-
动态页访问
前期与上相同,一直到Apache中间件,Apache发现请求的是PHP文件,于是将数据包转发至PHP应用,PHP应用接受请求后解析数据包发现存在参数id=1,PHP应用开始计算,如果是需要连接数据库的方法,则将id值组装成SQL语句,向数据库发起查询,最后将结果返回给中间件,此时的结果也是静态内容,因为结果最终都要返回给浏览器,因此无论是PHP还是Python编写的网站,最终浏览器展现的都是HTML,JS与CSS。
代理
Burpsuite
HTTPS协议
HTTPS中间人
APP与小程序
灰盒
主动与被动漏洞扫描-发现通用漏洞
Nessus与AWVS
Nessus使用
AWVS使用
AWVS主要用来扫描WEB站点
https://ip:3443/#/login
添加单个扫描目标
开启Site Login
Xray
xray_windows_amd64.exe genca
运行命令之后,将在当前文件夹生成 ca.crt 和 ca.key 两个文件
证书是ca.crt文件,安装后这两个文件保留即可,不要删除
-
系统安装
-
火狐浏览器单独安装
打开
config.yaml
允许扫描的域添加个*,不允许扫描的域也可以略做删减
.xray_windows_amd64.exe webscan --listen 127.0.0.1:7777 --html-output xray-testphp.html
-
127.0.0.1:7777为Xray监听的端口 -
xray-testphp.html为输出的报告文件
浏览器使用代理插件将流量转发至Xray,Xray会针对经过的流量进行漏洞扫描
CMS历史漏洞检查
漏洞猜想与验证-发现功能漏洞
-
用户名枚举 -
用户密码爆破 -
万能密码 -
登录绕过 -
密码找回逻辑缺陷
而在灰盒测试中,我们往往有了一个可登录的账户,因此本轮我们重点关注的是一些敏感功能,如文件/头像上传功能,个人信息修改功能,这两个往往会存在任意文件上传与存储型XSS。还有就是要关注一个功能点的数据包实现,功能实现的不严谨往往就会存在逻辑漏洞,如修改密码处,是否需要传递原密码,是否通过传递用户id来作为用户修改密码的身份凭据。
流量审计-查缺补漏
权限、配置-寻找配置问题
黑盒
扫描目录/接口
-
备份文件泄漏 -
接口文档泄漏:在一些使用自动化接口文档的WEB应用,开发可能忘记关闭接口文档展示
devtools查看前端代码
-
文件读取漏洞:常出现在需要下载插件或客户端的web应用 -
用户遍历:通过登录失败的提示来遍历用户名,尝试寻找弱口令用户 -
任意用户密码重置:密码找回逻辑是否合理 -
未授权访问漏洞:前后端分离模式中,接口基本都可以在js文件中找到,测试是否存在未授权访问
寻找源码
-
通过前端代码特征在Github中寻找相同代码转为白盒测试。 -
通过前端代码特征在Fofa等网站寻找相同站点,尝试扫描网站备份文件或弱口令转为灰盒或白盒测试。
白盒
基础信息
-
WEB应用使用了什么开发模式、路由规则 -
使用了哪些组件、组件的密码 -
Token、Key强度是否足够 -
跨域、HTTP等返回头配置
可能存在的问题: -
使用存在已知漏洞的组件,如Fastjson 1.70以下版本 -
数据库、Shiro AES Key、JWT Key强度不足 -
跨域资源共享配置缺陷、未配置HttpOnly、SameSite
访问控制
-
Shiro -
Spring Security -
Java Filter -
Java Interceptor
可能存在的问题: -
权限配置不严格,导致存在未授权访问漏洞 -
未做权限分离,导致存在垂直越权漏洞 -
使用Filter、Interceptor黑名单的方式限制用户访问授权接口,可能存在权限绕过漏洞
常规漏洞
-
SQL注入 -
文件处理 -
命令执行 -
反序列化 -
URL重定向 -
SSRF -
XXE
一些特征:
寻找拼接SQL语句的方法、查看Mybatis的xml中是否有使用${}的,且追溯后参数可被用户控制
grep -rn "${" *
FileInputStream
FileOupputStream
RandomAccessFile
FileUtils
AsynchronousFileChannel
Files
FileUtil
有时还可以通过HTTP返回头快速定位文件下载方法
Content-Disposition
Runtime.exec
ProcessBuilder.start
GroovyShell.evaluate
ObjectInputStream.readObject
ObjectInputStream.readUnshared
XMLDecoder.readObject
Yaml.load
XStream.fromXML
ObjectMapper.readValue
JSON.parseObject
Redirect
HttpClient.execute
HttpClient.executeMethod
HttpURLConnection.connect
HttpURLConnection.getInputStream
URL.openStream
判断使用哪种XML解析器
搜索是否有禁用外部实体配置(修护部分有具体代码)
是否有外部输入点进行解析
业务逻辑
本文始发于微信公众号(乌雲安全):干货|Web安全入门基础与思路总结(附思维导图)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论