21-FTP 看是否存在匿名访问
22-SSH 看是否存在弱口令
25-SMTP
80-HTTP 常见web漏洞
443-HTTPS openSSl心脏出血漏洞
445-smb ms08-067、 ms17-010
1433-mssql 弱口令
1521-oracle, 弱口令
3306-mysql 数据库的默认端口
3389-windows远程桌面 弱口令
7001-weblogic的默认端口
8080-tomcat漏洞
应用层:为应用程序提供网络服务
表示层:数据格式化、加密、解密
会话层:建立、管理和维护会话连接
传输层:建立、管理和维护端到端连接
网络层:IP寻址和路由选择
数据链路层:控制物理层与网络层的通信
物理层:比特流传输
TCP3次握手:
第一次握手
客户端发送带有SYN标记、带有客户端seq序列号x和源目端口的包
第二次握手
服务器发送带有ACK、SYN标记、Ack=x+1、带有服务器seq序列号y和源目端口的包
第三次握手
客户端发送带有ACK标记、ACK=y+1、seq=上一个包服务器发送的ack、源目端口的包
TCP4次挥手
第一次挥手
结束方发送带有FIN、ACK标识的包,告诉对方需要关闭连接,等待对方确认
第二次挥手
被结束方发送第一个带有ACK标识的包,告诉对方收到关闭连接请求但是还没准备好。
第三次挥手
被结束方发送第二个带有FIN标识的包,告诉对方需要关闭连接,等待对方确认
第四次挥手
结束方发送带有ACK标识的包。被请求端收到ack确认包后关闭连接,请求端收不到对方一段时间后关闭。
TCP是面向有传输、UDP是面向无传输。UDP比TCP快
Linux:
ps -aux
#查看进程
ps -aux | grep
软件名/端口 #查看内某个软件或者端口的进程
kill -9
进程号
#杀死进程
windows:
netstat -aon|findstr
端口号
#查看进程
taskkill /pid
进程号 /f
#杀死进程
ping服务器
,返还得TTL值
不一样,windows一般在100以上,linux一般是100一下。
ping linux内网机器的ttl为64
ping window内网机器的ttl为126
渗透测试基础:
1.
寻找开放渠道情报:
比如用搜索引擎搜索网站相关的企业和个人信息
2.
网络踩点
:进行主动探测(端口扫描)、建立目标列表等
3.
识别系统防御机制
4.
对网站进行漏洞分析
5.
渗透攻击
:绕过防御机制、绕过检测机制、定制渗透攻击路径
6.
后渗透阶段:
清理痕迹等
Nmap
、Nessus
通过工具ping,看显示的ip地址是否唯一,如果不唯一,则这些ip地址为CDN的地址
Windows下使用nslookup命令进行查询,若返回域名解析结果为多个ip,多半使用了CDN,是不真实的ip。
1. 子域名入手
某些企业业务线众多,有些站点的主站使用了CDN,或者部分域名使用了CDN,某些子域名可能未使用。查询子域名的方法就很多了:subDomainsBrute、Sublist3r、Google hack等。
2. 历史DNS记录
3. 国外主机解析域名:大部分 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的DNS查询,很可能获取到真实IP。
SQL注入:
通过把SQL命令插入到Web表单递交或输入域名又或页面请求的查询字符串中,最终达到欺骗服务器执行恶意的SQL命令。
SQL注射能绕过认证机制,完全控制远程服务器上的数据库。 SQL是结构化查询语言的简称,它是访问数据库的事实标准。
1.按提交方式可以分为
Post型
Get型
Cookie型
HTTP型
2.按注入点分为
数字型
字符串型
搜索型
3.按获取信息的方式分
基于时间的盲注
基于报错
基于布尔的盲注
二次注入
宽字节注入
sql注入的本质上还是对用户输入数据的绝对信任,当我们对用户输入的数据绝对不信任的时候,就可以预防sql注入
1. 输入数据长度的限制
2. 关键字过滤:
3. 对参数携带的特殊字符进行转义和过滤
4. 预编译防注入
1.加入单引号 ’提交,
结果:如果出现错误提示,则该网站可能就存在注入漏洞。
2.数字型判断是否有注入;
语句:and 1=1 ;and 1=2 (经典)、' and '1'=1(字符型)
结果:分别返回不同的页面,说明存在注入漏洞.
分析:and 的意思是“和”如果没有过滤我们的语句,and 1=1就会被代入SQL查询语句进行查询,
如果and前后的两条语句都是真的话就不会出错,但如果前后语句有一个为假的话,程序就会暴错。
也就表明程序有注入漏洞
3.字符型判断是否有注入:
语句:' and '1'=1;' and '1=2(经典)
结果:结果:分别返回不同的页面,说明存在注入漏洞.
分析:加入' and '1'=1返回正确页面,加入' and '1=2返回错误页面,说明有注入漏同。
4.搜索型判断是否有注入:
简单的判断搜索型注入漏洞存在不存在的办法是先搜索',如果出错,说明90%存在这个漏洞。然后搜索%,如果正常返回,说明95%有洞了。
说明:加入如"&;"、"["、"]"、"%"、"$"、"@"等特殊字符,都可以实现,如果出现错误,说明有问题
操作:
搜索一个关键字,比如2006吧,正常返回所有2006相关的信息,再搜索2006%'and 1=1 and '%'='和2006%'and 1=2 and '%'=',存在异同的话,就是100%有洞了。
关键字%' and 1=1 and '%'='%
关键字%' and 1=2 and '%'='%
将and 1=1 换成注入语句就可以了
updatexml():是mysql对xml文档数据进行查询和修改的xpath函数
extractvalue():是mysql对xml文档数据进行查询的xpath函数
floor():mysql中用来取整的函数
exp():此函数返回e(自然对数的底)指数X的幂值
联合查询、报错注入、布尔盲注、延时注入
手法选择:是否有回显 有:联合查询
是否有报错 有:报错注入
是否有布尔类型状态 有:布尔盲注
绝招 延时注入
首先需要有一个可以配置的域名,比如:ceye.io,然后通过代理商设置域名 ceye.io 的 nameserver 为自己的服务器 A,然后再服务器 A 上配置好 DNS Server,这样以来所有 ceye.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了,图示如下。
DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息。简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息。
所谓宽字节指的是类似于GB2312、GBK、BIG5等需要两个字节编码的字节,而宽字节带来的安全问题主要是“吃掉”ASCII字符的现象,即将两个ASCII字符误认为是一个宽字节字符。
以PHP和MYSQL为例,MySQL收到请求时将请求数据从character_set_client转换为character_set_connection;在进行内部操作前,将请求数据从character_set_connection转换为内部操作字符集,使用每个字段的character_set的值将操作结果从内部操作集转换为character_set_results。而宽字节注入发生的位置就是PHP将请求发送到MYSQL时字符集使用character_set_client设置值进行了一次编码。
如果PHP中编码为GBK,函数执行添加的是ASCII编码,MYSQL默认字符集是GBK等宽字节字符集就会发生宽字节注入的现象。
root 权限以及网站的绝对路径
都是一个字符一个字符的判断
5.0 以下没有 information_schema 这个系统表,无法列表名等,只能暴力跑表 名;5.0 以下是多用户单操作,5.0 以上是多用户多操做
文件上传:
上传正常格式文件,通过burpsuite抓包修改文件的后缀为脚本格式
Web 容器解析漏洞
Web容器解析漏洞,就是Web 容器在解析脚本出现的"bug"。
Nginx 空字节漏洞
Nginx 文件名逻辑漏洞(CVE-2013-4745)
常见编辑器上传
编辑器就是网站后台编辑网页的在线编辑器,会自动集成文件上传功能,这些编辑器的某些版本也存在文件上传漏洞。
常见CMS 上传
CMS
又叫网站内容管理系统
(
网站的模板,快速建站,二次开发
)
,市面上很多开源的
CMS
的历史版本中有很多存在文件上传漏洞,但是产生文件上传漏洞的原因不尽相同,情景也不似本章上文中介绍的那样“直白”。类似的
CMS
有很多,比如常见的
dedeCMS
、
PHPcms
等
XSS、CSRF和SSRF:
CSRF 跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性
攻击者盗用用户的身份,以用户的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以用户的名义发送邮件、发消息,盗取用户的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。
CSRF尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
验证 referer
验证 token
加验证码,后台验证验证码
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。
防御:
1.限制请求的端口为 HTTP 常用的端口,比如 80,443,8080,8088 等
2.黑名单内网 IP。
3.禁用不需要的协议,仅仅允许 HTTP 和 HTTPS
希望有大佬告诉下
分类:反射型、存储型、DOM 型
危害: 攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各种内容。
防御:
(一)过滤一些危险字符,以及转义& < > " ' /等危险字符 。
(二)HTTP-only Cookie: 禁止 JavaScript 读取某些敏感 Cookie,攻击者完成 XSS 注入后也无法窃取此 Cookie。
(三)设置 CSP(Content Security Policy)
(四)输入内容长度限制
XSS
是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。
修复方式:对字符实体进行转义、使用 HTTP Only
来禁止 JavaScript
读取 Cookie
值、输入时校验、浏览器与 Web 应用端采用相同的字符编码。
CSRF
是跨站请求伪造攻击,XSS
是实现 CSRF
的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认
修复方式:筛选出需要防范 CSRF
的页面然后嵌入 Token
、再次输入密码、检验 Referer
XXE
是 XML
外部实体注入攻击,XML
中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。
修复方式:XML
解析库在调用时严格禁止对外部实体的解析。
WAF原理与绕过:
WAF工作方式是对接收到的数据包进行正则匹配过滤,如果正则匹配到与现有漏洞知识库的攻击代码相同,则认为这个恶意代码,从而对于进行阻断。所以,对于基于规则匹配的WAF,需要每天都及时更新最新的漏洞库。
1.解析HTTP请求
对接收到数据请求流量时会先判断是否为HTTP/HTTPS请求,之后会查看此URL请求是否在白名单之内,如果该URL请求在白名单列表里,直接交给后端Web服务器进行响应处理,对于不在白名单之内的对数据包解析后进入到规则检测部分。
2.匹配规则
解析后的数据包会进入到检测体系中进行规则匹配,检查该数据请求是否符合规则,识别出恶意攻击行为。
3.防御动作
如果符合规则则交给后端Web服务器进行响应处理,对于不符合规则的请求会执行相关的阻断、记录、告警处理。
不同的WAF产品会自定义不同的拦截警告页面,在日常渗透中我们也可以根据不同的拦截页面来辨别出网站使用了哪款WAF产品,从而有目的性的进行WAF绕过。
字符变异:大小写变换、添加换行符、畸形的boundary头部
顺序颠倒:交换名和文件名的顺序、交换不同边界内容的顺序
数据重复:边界内容重复、文件名重复、数据溢出
参考:干货 |最全的文件上传漏洞之WAF拦截绕过总结 - 云+社区 - 腾讯云 (tencent.com)
1.双写绕过:有些waf会对关键词进行过滤,若只过滤1次,则可以双写绕过
2.等号like绕过:有的waf会对等于号进行拦截和过滤。
3.order by 绕过:当 order by 被过滤时,可以使用 into 变量名进行代替。
4.and/or绕过:主流的 waf 都会对and 、or、xor进行拦截。替代字符:and 等于&&、or 等于 ||、not 等于 !、xor 等于|
5.大小写绕过:对关键词设置为大小写即可
6.ascii编码绕过
参考:sql注入绕WAF的N种姿势 - 安全客,安全资讯平台 (anquanke.com)
参考:WAF绕过-注入上传RCE利用绕过思路 | 我就是告白 (kxsy.work)