Skip to main content

分阶段学习

总体学习大纲

阶段一
1认识漏洞漏洞定义,漏洞产生原因,漏洞利用方式,web题目做题思路
2信息泄露信息泄露类型,信息泄露漏洞利用
3数据爆破BurpSuit数据抓包,BurpSuit数据爆破利用,401认证数据爆破
4web环境搭建php的语言基础,linux基础
5php的命令执行php的命令执行,命令执行bypass,不同命令长度限制下的命令执行
6php的代码执行5类代码执行的利用方式,包括危险函数型代码执行,字符过滤型代码执行,长度限制型代码执行,函数禁用型代码执行以及位运算绕过代码执行使用蚁剑进行远程一句话木马利用
7无回显下的命令执行无回显命令执行的五大信道利用反弹shell及排错
8php文件包含基本利用文件包含漏洞与php语法结构,php伪协议利用
9php文件包含高级利用文件包含的可控点,日志包含,临时文件包含,upload_progress包含,pear文件包含公开姿势1,2及未公开姿势3
10php的文件上传黑名单绕过,0字节截断,iconv字符转换截断,白名单过滤,IIS解析漏洞、ApacheHttpd解析漏洞、Nginx解析漏洞,ImageMagick解析漏洞
11文件上传高级利用配置文件绕过,内容过检测,二次渲染,配合Phar文件包含
12php敏捷开发从零开发php博客系统
13sql基础与sql注入sql注入完全覆盖手册,sql注入的绕过
14php面向对象php类与对象,php抽象类、接口、trait,类的继承与多态,类属性权限,匿名类
阶段二
15php的序列化与发序列化类的序列化与魔术方法,反序列化绕过反序列化字符逃逸
16php反序列化高级利用phar的反序列化利用session反序列化利用
17thinkphp的漏洞利用php代码审计thinkphp的基础设计与编码thinkphp的反序列化漏洞thinkphp的通用漏洞
18ssrf攻击面利用ssrf的四个攻击面利用ssrf的五个绕过方式
19jwt原理及利用jwt的原理jwt的四大利用方式
20xxe漏洞利用文件读取与盲注
21ssti 模板注入python的PIN计算,ssti利用及绕过
阶段三
22python的反序列化python反序列化的安全问题
23NodeJS与原型污染Nodejs开发基础,原型污染原理及原型污染链挖掘
24java基础java基础语法,servlet开发基础 配置开发环境 java的MVC
25java原生序列化与反序列号java的流,java的反序列化利用3大方式
26java的RMI远程方法调用基础,远程对象RMI客户端与服务端通讯,JAVA的RMI的反序列化
27java的JNDI注入JNDI结构,JNDI注入+RMI实现远程命令执行,基于JNDI的log4j漏洞利用
28java的SpringSpring基础
29javaSpring漏洞利用Spring的内省机制、Spring-2022的cve漏洞分析与利用
30内网渗透与权限维持内网渗透时的基本操作,Linux常见权限提升

信息收集

获得目标(域名/IP)

考虑到cdn的因素,在获得目标域名后

第一步是获取真实IP

其二是查询旁站等信息

主机发现

nmap扫描

利用nmap扫描目标,获得其开放端口及相关信息,从而决定下一步渗透方向

官方命令手册

Chapter 15. Nmap Reference Guide | Nmap Network Scanning

Nmap中文手册 - Nmap中文网

nmap脚本 NSEDoc Reference Portal: NSE Categories — Nmap Scripting Engine documentation eg:

nmap --script=vuln

常用命令

sudo nmap --min-rate 10000 -p- 10.10.10.19 #端口扫描

sudo nmap -sT -sV -O -p22,3128,8080 10.10.10.19
#-sT tcp扫描,-sV版本扫描,-O系统扫描,-p指定端口,可以指定上一条扫描出的开放端口

sudo nmap -sU -p22,3128,8080 10.10.10.19
#-sU udp扫描

web打点前的信息收集

  • 页面源代码: F12、 禁止右键时修改url格式:view-source:url

  • 看请求包和响应包

  • robots.txt防爬虫

  • 源码泄漏:

    • tar、tar.gz、zip、rar

    • .svn:url.svn 工具svnhack

    • .git:url/.git/xxx 工具githack

    • vim缓存:.swp、.swo、.swn 临时文件是在vim编辑文本时就会创建的文件, 如果程序正常退出,临时文件自动删除,如果意外退出就会保留 当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容

      index.php 为例 (注意:index前有 " . ") 第一次产生的缓存文件名为 .index.php.swp 第二次意外退出后,文件名为.index.php.swo 第三次产生的缓存文件则为 .index.php.swn

    • mdb:mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了

  • 一些网站信息泄漏:

    • 一些技术文档可能由于开发、运维人员失误放了一些东西在里面
    • 探针:如雅黑:url/tz.php
    • 管理员邮件、管理员帐号
    • (url/editor)某编辑器editor最新版默认配置下,如果目录不存在,则会遍历服务器根目录
  • 目录爆破:(字典是关键,自定义字典可以用这个工具生成:pydictor

  • 漏洞查询: SearchSploit —— kali自带

web基础

开发环境基础

linux基础

web渗透

PHP

命令执行

获得webshell后,针对可能存在的关键词限制/长度限制 进行绕过

关键词限制绕过

通常是利用语言以及系统特性进行绕过,如引号、异或计算、通配符等

  1. 引号,在linux下

    单引号:会将其中内容都当做字符串,忽略所有命令和特殊字符,单引号中的变量是无效的

    双引号:会解析其中的特殊字符和变量,如果要原样输出特殊字符需要用\转义

    反引号:会将反引号中的字符串当作命令执行,反引号类似$(command) (php同) (shell中有两种方法作命令替换:把shell命令用反引号或者$(…)结构括起来,其中,$(…)格式受到 POSIX标准支持,也利于嵌套。)

    eg:

    <?php
    if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
    eval($c);
    }

    利用正则匹配来过滤关键词,可利用引号拼接bypass

    ?c=system("tac fl''ag.php");
  1. linux下一些字符的作用:

    *           # 通配符,匹配任意字符
    ? # 占位符,匹配任意一个字符---作用类似正则 (可绕过文件名过滤,如:tac *、?at flag.php)
    %0a # (换行符)
    $ # 变量调用符号
    | # 第一条命令结果作为第二条命令的输入
    || # 第一条执行失败,执行第二条命令
    ; # 连续指令功能。
    & # 连接的两条命令都会执行
    && # 当第一条执行成功后执行后续命令
    > # 重定向输出符号(覆盖)
    >> # 重定向输出符号(追加)

代码执行

文件包含

文件上传

类、序列化和反序列化

JAVA

IDEA
Maven
Java Web
反射
ASM/Javassist
JNDI:8u191低版本和高版本怎么打(反序列化/本地工厂),以及如何审计
RMI是什么
Java Agent:启动原理和RASP的实现原理
JMX/JDWP
反序列化基础:gadget链、JEP290是什么
FastJson反序列化
WebLogic:二次反序列化、XML Decoder、IIOP/T3
Xstream反序列化
Hessian反序列化:dubbo
SnakeYAML反序列化
Shiro:Shiro经典漏洞、Padding Oracle漏洞形成原理、如何通过Shiro注入内存马
Struts2
Spring:Spring4Shell、Spring EL、SpringBoot Actuator利用
Tomcat:Tomcat AJP RCE
内存马原理:原理是什么、有哪些内存马
内存马如何查杀
Log4J
其他组件漏洞:Apache Solr、Flink
进阶:tabby、codeql等静态分析