1.站长之家获取域名的 whois 信息,获取注册者邮箱姓名电话等。
网站(中间件、版本)
2.通过站长之家、k8 等查询服务器旁站以及子域名站点,因为主站一般比较难,
所以先看看旁站有没有通用性的 cms 或者其他漏洞。
3、通过 DNS 域传送漏洞、备份号查询、SSl 证书、APP、微信公众号、暴力破解、DNS历史记录、K8 C 段查询、60 或华为威胁情报、证书序列号获取企业域名与 ip。
获取真实IP,看开放哪些端口
4、通过 Nmap、御剑等查看服务器操作系统版本,web 中间件,看看是否存在已知的漏洞,比如 IIS,APACHE,NGINX 的解析漏洞
5.通过 7KB、破壳扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏,比如php 探针、管理员备份文件。
6.google hack 进一步探测网站的信息,后台,敏感文件
7.敏感信息收集,如 github 源码、用 7kb、破壳扫源代码泄露(.hg、.git、cvs、svn、.DS_store源代码泄露)、google hack、接口信息泄露、社工信息泄露、邮箱地址信息收集、网盘搜索、钟馗之眼、天眼查、威胁情报、微步在线等。
8.通过 Wappalyzer、御剑工具对网站指纹识别(包括,cms,cdn,证书等),dns 记录,网站操作系统版本号,以前是不是有漏洞。
常见的端口
如果实在想不起来了就这样说:平时不特意去记这些,干活遇到常见的就慢慢熟悉了,没记住的随时遇到了就干活时候随时百度一下
21 服务:ftp文件传输协议(入侵方式: 爆破,嗅探,溢出,后门)
主要是为了在两台计算机之间实现文件的上传与下载,一台计算机作为FTP客户端,另一台计算机作为FTP服务器
22 服务:ssh远程连接(入侵方式:爆破,openssh漏洞)
安全外壳bai(SSH)用来加密网du管会话,该加密基zhi于RSA,基于TCP端口号22
23 服务:telnet远程连接(入侵方式:爆破,嗅探,弱口令)
远程登录(Telnet)用来远程网络管理基于TCP端口号23
3389 服务:Windows 2000(2003) Server远程桌面的服务端口
可以通过这个端口,用"远程桌面"等连接工具来连接到远程的服务器,如果连接上了,输入系统管理员的用户名和密码后,将变得可以像操作本机一样操作远程的电脑
1433 服务:mssql(入侵方式:爆破,注入,sa弱口令)
SQL Server默认的端口,SQL Server服务使用两个端口:TCP-1433、UDP-1434。其中1433用于供SQL Server对外提供服务,1434用于向请求者返回SQL Server使用了哪个TCP/IP端口。
3306 服务:mysql(入侵方式:爆破,注入)
MySQL的默认端口,可以远程连接MySQL
1521 服务:oracle(入侵方式:爆破,注入,反弹shell)
1521是ORACAL使用的默认端口
7001 服务:weblogic(入侵方式:Java反序列化,控制台弱口令)
weblogic的默认端口是7001,在config.xml文件中的添加
139 服务:samba服务(入侵方式:爆破,未授权访问,远程命令执行)
143 服务:imap协议(入侵方式:爆破)
445 服务:smb(入侵方式:ms-17010,永恒之蓝二代,端口溢出)
6379 服务:redis数据库(入侵方式:未授权访问,爆破)
Cookie和session区别
Session是服务器制造的,用户登录的时候,服务器下发,返回给浏览器,浏览器会自动存储,浏览器存的就是cookie。
(1)储存位置(cookie客户浏览器、session服务器)
(2)储存容量(cookie保存数据<=4kb,一个站点最多20个。Session无限制)
(3)储存方式(只能保存ascii字符串,session能保存任何类型)
(4)隐私策略(cookie对用户可见,session存储在服务器,对用户不可见)
(5)有限期(长期;session依赖于名为JSESSIONID的cookie,而cookie JSESSIONID的过期时间默认为-1,只需关闭窗口该session就会失效,因而session不能达到长期有效的效果)
(6)服务器压力
(7)浏览器支持
(8)跨域(cookie 支持;session 不支持)
Ddos
Smsniff.exe工具可以通过网络适配器获取tcp和ip数据包并查看捕获客户端和服务器。
通过态势感知平台看不同产品的日志,确定是否有攻击行为然后进行处置研判 就行了,比如挖矿木马:
一、发现企业服务器存在勒索病毒外连现象或发现服务器存在持续CPU资源占用过高现象;
二、联系企业询问服务器目前状况,是否服务器上运行了高占用资源程序;
三、若企业服务器确认此现象为异常现象,则说明服务器存在挖矿木马;
四、安全人员使用相关病毒木马查杀工具对挖矿木马文件进行查杀;
五、持续跟踪此服务器挖矿木马外连行为,查看是否依然存在挖矿木马外连行为,若不存在,则查理完毕。
详细的还需要抓包分析
XXS和csrf区别
XSS(跨站脚本攻击)
万能构造:'"><script>alert(123)</script>代表插入任意代码
可以加一个弹窗
能弹出来就是XSS漏洞
定义:
主要获取用户的cookie信息
跨站脚本攻击:注意管理员也是用户,攻击者利用管理员身份作为跳板。对文件数据进行操作,可以在提交数据的时候进行操作,窃取用户信息。
产生原因:输入没限制,输出没实体编码(h5没加密就是明文)
用途:
1)挂马
2)钓鱼
钓鱼页面弹出一个弹窗出来 让用户输入账号名和密码,做一个和登录页面一样的
3)劫持用户cookie:构造语句里插入木马
4)键盘记录
漏洞分类:
1)反射:(一次性不存储在浏览器里)
放在网站的根目录下,也可以发邮件让别人去触发
2)存储:(永久存储在数据库高危)
3)Dom:(浏览器标签)不与后台服务器产生交互。
如何利用基于DOM的XSS漏洞
在了解了相关知识后我们再来看看如何利用基于DOM的XSS漏洞。
以下是靶场首页:
输入随机参数进行查询后通过查看源码看看使用了那些接收器:
接着查看输入的随机参数所在的位置:
可以看到输入的参数出现在了img src中并且没有进行转码等处理。
接着写入以下脚本:
"><svg onload=alert(1)>
成功出现弹窗,表明写入的XSS成功执行:
到这一步就可以确定该处存在基于DOM的XSS漏洞。接下来就可以通过此漏洞构造虚假的URL诱使受害用户点击以获得cookie,与之前的反射型或存储型XSS基本一致。还可以利用window.location.assign(URL)将受害用户重定向到钓鱼网站。
写入以下脚本:
"><svg οnlοad=window.location.assign("http://www.baidu.com")>
执行结果将会将受害用户重定向到百度首页。
XSS漏洞存在地方:
1)html
2)context(上下文,浏览器响应式拼接好的内容)、
3)URL context(对浏览器来说是页面路径上的参数 对服务端来说是请求时携带的参数 请求头等)
4)spript(代码里的变量数据)
测试方法:
工具:APPscan、Awvs
手工:burpsuite,主要考虑哪里有输入、输出在什么地方
(1)在目标站点上找到输入点,比如查询接口,留言板等;
(2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;
(3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在XSS漏洞。
怎么绕过:
1)前端限制
2)大小写混合
3)编码绕过
4)注释干扰后台
5)alert(弹窗) confirm(确认) prompt(弹出一个让用户在浏览器里面输入东西的框)
Document.location 获取本地的cookie信息
防御:
1)输入过滤(对用户输入的内容进行过滤,比如输入账号密码 没有过滤直接输入个payload 程序直接payload执行)
2)输出实体编码(账号密码 回车登录 执行的结果)
3)使用HTTP only禁止js读取cookie。
Csrf(客户端一般与xss结合使用)
定义:
客户端发起的跨站伪造请求,攻击者可以构造自己的URL欺骗目标用户点击
(比如银行交易转账,当登录后一段时间不交易,过段时间再去转账,正常情况下站点会提醒你:您的身份已过期,请重新登陆或者会话结束等消息。
这时你的某个QQ好友(攻击者)发来一条消息(URL) 攻击者精心构造的转账业务代码与你所登录的网站是同一个银行,你可能认为这个网站是安全的,并不是什么钓鱼网站之类的,然后打开了这条URL,你的账户的钱可能就在你的这一次小小点击上全部丢失。
主要是因为你的浏览器正处于与此网站的会话之中,那么一些操作都是合法的,而入侵者构造的这段代码只不过是正常的转账操作代码而已)
产生原因:
程序员开发的时候没有对页面进行token和referer判断。
用途:
1)拖库
2)修改密码
DVWA打开一个网址(http://192.168.1.55:8080/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change)
不关闭此浏览器选项卡的情况下,打开新窗口页面(保持cookie 可用),就可以完成密码修改。
漏洞分类:
1)站内:由于程序员滥用$_REQUEST(请求)类变量造成的(比如:本来要求用户从表单提交发起POST请求传递参数给程序,但是由于使用了$_REQUEST等变量,程序除支持接收POST请求传递的参数外也支持接收GET请求传递的参数,这样就会为攻击者使用CSRF攻击创造条件)
2)站外:就是传统意义上的外部提交数据问题(用户在会话状态下点击链接访问站外Web页面)
存在地方:
1)修改密码地方
2)添加用户的地方
3)数据库备份
4)数据交易、支付
测试方法:
Burp抓包(抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞)
防御:
1)校验referer字段
2)添加token值
3)白名单过滤
4)验证码登录
SSRF(服务器端请求伪造)
定义:
目标是内部系统,因为是从服务器端发起的,攻击外网无法访问的内部系统,把目标网站当做中间人。
产生原因:
大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。
用途:
用http,file,php协议来进行内网探测,文件读取。
1)可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;
2)攻击运行在内网或本地的应用程序(比如溢出);
3)对内网web应用进行指纹识别,通过访问默认文件实现;
4)攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);
5)利用file协议读取本地文件等。
存在地方:
所有调外部资源的参数都有可能存在ssrf漏洞
1)分享:通过URL地址分享网页内容
2)转码服务
3)在线翻译
4)图片加载与下载:通过URL地址加载或下载图片
5)图片、文章收藏功能
6)未公开的api实现以及其他调用URL的功能
7)从URL关键字中寻找share、wap、url、link、src、source
测试方法:
怎么绕过:
1)改ip地址写法
2)转码:8进制、16进制、10进制
防御:
黑名单过滤:
1)过滤10.0.0.1/8 172.16.0.0/12 192.168.0.0/16
2)过滤file:///、dict://、gopher://、ftp:// 危险schema
3)对返回的内容进行识别。
最佳方法:
1)使用地址白名单
2)对返回内容进行识别
3)需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:首先禁用 CURLOPT_FOLLOWLOCATION;然后通过域名获取目标ip,并过滤内部ip;最后识别返回的内容是否与假定内容一致。
XXE(外部实体注入攻击)
产生原因:
运维人员使用低版本PHP,libxml低于2.9.1,就会造成程序员或者XXE设置了libxml_disable_encity_loader(FALSE) 这个意思是禁用加载外部实体
用途:
XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。
存在地方:
1)抓包看accept头是否接受xml;
2)抓包修改数据类型,把json改成xml来传输。
测试方法:
1)有回显:(代码)
2)无回显:建立.dtd(代码) xml调用(代码)
防御
1)升级php版本
2)程序员修改代码
3)过滤关键词(doctype、entity、system、public)
文件上传(upload-labs)
定义和产生原因:
大多数网站都有文件上传的接口,但如果在后台开发时并没有对上传的文件进行安全考虑或采用了有缺陷的措施,导致攻击者可以通过一些手段绕过安全措施从而上传一些恶意文件,从而通过该恶意文件的访问来控制整个后台。
用途:
绕过安全措施从而上传一些恶意文件,从而通过该恶意文件的访问来控制整个后台。
绕过方法(文件上传的方法):
一、客户端检测绕过,前端改后缀名
前端将checkFileExt函数删除,就能上传一个一个非图片文件。
试验方法:把以.php结尾的小马改为以.jpg|.png|.gif结尾,用burpsuite抓包,在把.jpg|.png|.gif改回.php即可上传成功
首先观察到提示只允许上传图片文件,那么前端的查看代码,当页面发生改变时,会调用这个checkFileExt函数来检查上传的是不是图片,我们只需要在前端将checkFileExt函数删除,就能上传一个一个非图片文件。
二、服务端验证绕过(MIME 类型检测) (content-type:image/png)
(MIME类型是:设定某种扩展名的文件用一种程序的方式类型,当改扩展名文件被访问的时候,浏览器会指定应用程序来打开,多用于指定客户端自定义的文件名以及媒体打开方式)
试验方法:截断上传数据包,修改Content-Type为image/gif,然后放行数据包
三、代码注入绕过--getimagesize()函数读取头几个字符串是不是符合图片的要求的
图片格式GIF,JPG,PNG
getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息,如果用这个涵数来获取类型,从而判断是否是图片的话,会存在问题。
四、路径/扩展名绕过
**白名单
0x00截断或test.asp%00.jpg(在文件路径后面加123.php%00.jpg)
00截断原理:php版本小于5.4.1
MIME绕过
**黑名单(.asp‘,‘.aspx‘,‘.php‘,‘.jsp‘)
试验方法:黑名单验证(‘.asp‘,‘.aspx‘,‘.php‘,‘.jsp‘),我们可上传php3,php5...等这样可以被服务器解析的后缀名
1)上传特殊可解析后缀
2)上传.htaccess 必须是网站根路径 让png解析为php
在Apache中有一种特殊的文件,.htaccess文件或者称为分布式配置文件,提供了针对每个目录设置不同的配置的方法。也就是说在每个目录下都可以有一个.htaccess文件,这个文件中可以设置一些Apache配置指令,这些指令对于本目录及本目录的子目录生效
3)后缀大小写绕过(把1.php改为1.phP...来上传)
4)点绕过(文件名最后增加空格和点,写成1.php .)
5)空格绕过(文件名最后增加空格和点,写成1.php .)
6)数据流::$DATA绕过(php::$DATA , 上传成功后保存的文件名其实是1.php)
7)双后缀名绕过(只对文件后缀名进行一次过滤,这样的话,双写文件名绕过,文件名改成1.pphphp)
8)文件夹带扩展名(1.php%00.jpg经过url转码后会变为1.php�00.jpg),最后保存下来的文件就是1.php
9)二次渲染通常图片马配合%00或者0x00截断上传,或者配合解析漏洞
10)时间竞争这关利用的是竞争条件,服务器先允许你上传文件,然后检测是否合法,不合法再删除,我们要利用的就是在服务器删除前,访问到我们上传的php。
五、中间件解析漏洞绕过
1)IIS解析漏洞
IIS6.0文件夹目录解析 /xx.asp/xx.jpg "xx.asp"是文件夹名,这样只要在 xx.asp 目录下面的任意文件都会当脚本解析。x.asp;.jpg 通过上传功能传到网站目录,直接会当作 asp 脚本执行。
IIS7.0 、IIS7.5默认 Fast-CGI 开启,直接在 url 中图片地址后面输入/1.php,会把正常图片当成 php 解析。
2)Apache解析漏洞
上传的文件命名为:test.php.x1.x2.x3,Apache 是从右往左判断后缀。
3).htaccess文件解析(.haccess是数据库一个配置文件,里面放着http配置,可以设置将jpg后缀的文件当做php执行)
允许覆盖的意思:允许一个文件覆盖另一个文件配置文件LoadModule rewrite_module modules/mod_rewrite.so前的注释去掉,寻找关键词:AllowOverride,并把后面的参数从None全部改成All。
4)Nginx解析漏洞
版本小于等于 0.8.37,利用方法和 IIS 7.0/7.5 一样,Fast-CGI 关闭情况下也可利用。空字节代码 xxx.jpg.php
5)本地文件包含解析
www.xxx.com/xx.asp;.jpg 服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。
防御:
1、将文件上传目录直接设置为不可执行,对于Linux而言,撤销其目录的'x'权限;实际中很多大型网站的上传应用都会放置在独立的存储上作为静态文件处理,一是方便使用缓存加速降低能耗,二是杜绝了脚本执行的可能性;(最有效的)
2、文件类型检查:强烈推荐白名单方式,结合MIME Type、后缀检查等方式(即只允许允许的文件类型进行上传);此外对于图片的处理可以使用压缩函数或resize函数,处理图片的同时破坏其包含的HTML代码;
3、使用随机数改写文件名和文件路径,使得用户不能轻易访问自己上传的文件;
4、单独设置文件服务器的域名。
文件下载
定义:
一些网站由于业务需求,往往需要提供文件查看或文件下载功能,但若对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件,这就是文件查看与下载漏洞。
产生原因:
对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意敏感文件。
用途:
下载任意敏感文件
存在地方:
1)一般链接形式:
download.php?path=
down.php?file=
data.php?file=
2)包含参数:
&Src=
&Inputfile=
&Filepath=
&Path=
&Data=
利用思路
(1)下载常规的配置文件,例如: ssh, weblogic, ftp, mysql等相关配置
常见的 /etc/my.cnf //mysql配置文件
/root/.ssh/authorized_keys
/var/lib/mlocate/mlocate.db //全文件路径
(2)下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方
(3)下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。
尝试读取/root/.bash_history看自己是否具有root权限。(历史命令配置文件)如果没有的话。我们只能按部就班的利用../来回跳转读取一些.ssh下的配置信息文件。
防御:
(1)过滤".",使用户在 url 中不能回溯上级目录;
(2)正则严格判断用户输入参数的格式;
(3)php.ini 配置 open_basedir 限定文件访问范围。
文件包含
原理:
程序员开发时未对包含的文件进行严格过滤,攻击者构造图片木马文件当PHP执行。
分类:
本地包含:找上传点把木马上传对方服务器,通过本地包含漏洞包含木马脚本就可以运行webshell。
远程包含:需要对方开启allow_url_include=on功能,并关闭魔术符号。
存在地方:
直接源代码找函数,include include_once require require_once。
用途:
1)获取webshell 敏感信息泄露;
2)读文件(有特殊字符需要base64位编码);
3)写文件/命令执行 allow_url_include=on功能打开 php.ini打开。
怎么绕过:
1)不同协议绕过:http、https、file协议、PHP协议、ssh2。
2)截断包含(%00)这种方法只适用于magic_quotes_gpc=off的时候,PHP老版本中也存在其他漏洞;
3)包含日志文件:log.access.log。
防御:
1)白名单:代码进行文件包含时,如果文件名可以确定,可以设置白名单对传入参数进行比较
2)过滤危险字符:include require 可以对PHP 、wrapper形式的地址包含执行(需要配置php.ini)在Linux系统中可以通过../../形式进行目录绕过,所以需要判断文件名是不是php文件
3)设置文件目录:PHP配置文件 open_basedir选项可以设置用户需要自行的文件目录,设置PHP仅在该目录内搜索文件
4)关闭危险配置:allow_url_include打开 PHP通过对require和include进行远程文件包含 禁止打开(默认是关闭的)
Sql注入
原理:
未经处理的相关参数输入到数据库,从而进行一系列操作。
检测方法:
and1=1和and1=2 单引号
分类:
数字、字符、搜索、特殊
Get、post、cookie提交方式
注入攻击类型:
1)union 一般和order by配合使用;
2)information_schema(这个表是MySQL数据库自带的表,存着MySQL服务器维护的所有数据库信息);
3)函数报错注入:insert、updata、delete ---updatexml();
4)http header注入 把http header直接带入数据库;
5)cookie注入(伪静态) 参数直接带入cookie里;
6)盲注(盲注,即在SQL注入过程中,SQL语句执行选择后,选择的数据不能回显到前端,我们需要使用一些特殊的方法进行判断或尝试,这个过程称为盲注);
布尔型:跟ascii码值有关,select ascii(sustr(database(),1,1))>xx;
时间型:用sleep语句 设置几秒 观察网页转圈 如果是设置的时间跳转的说明没有注入 如果不是,就是有注入 vince and sleep(x)#
报错型:就是上面的函数报错;
报错注入常用的3个函数
- extractvalue:传参格式:ExtractValue(xml_frag, xpath_expr);
- ExtractValue()采用两个字符串参数,一个 XML 标记片段 xml_frag和一个 XPath 表达式 xpath_expr(也称为定位器);它返回CDATA第一个文本节点的文本 ( ),该文本节点是与 XPath 表达式匹配的一个或多个元素的子元素。
-
?id=1' and extractvalue(1,concat(0x7e,(select user()),0x7e))--+
- 这里同样不需要懂得它的每个参数的具体含义,只需要知道它需要传入两个参数即可。
- updatexml:根据Mysql官网的介绍,UpdateXML和ExtractValue这两个都是XML函数;updatexml 返回替换的 XML 片段,extractvalue 使用 XPath 表示法从 XML 字符串中提取值。
-
?id=1%27 and updatexml(1,concat(0x7e,(select user()),0x7e),1) --+
- floor:主要的利用语句是 select count(),(floor(rand(0)*2))x from table group by x,导致数据库报错,通过 concat 函数,连接注入语句与 floor(rand(0)*2)函数,实现将注入结果与报错信息回显的注入方式。
-
select count(),(floor(rand(0)*2))x from table group by x
floor(向上取整)
rand() 可以产生一个在0和1之间的随机数
7)宽字节注入:跟GBK有关,GBK是个编码,采用双字节表示,一个字符占两个字节,利用这个闭合前面的单引号
updatexml():函数是MYSQL对XML文档数据进行查询和修改的XPATH函数.
extractvalue() :函数也是MYSQL对XML文档数据进行查询的XPATH函数.
k' and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)
在PHP中,通过iconv()进行编码转换时,也可能出现宽字节注入(%df)。
如加冒号,括号,破坏原有的sql语句
怎么找注入
1)与数据库交互的地方
http://www.xxxx.com/xxx.asp?id=xx(asp注入)
http://www.xxxx.com/xxx.php?id=xx(php注入)
http://www.xxxx.com/xxx.jsp?id=xx(jsp注入)
2)登录、更新、注册、留言板
3)可能出现注入的地方:http头、cookie、referer、user agent头、post提交数据包的地方等
Mysql4和5的区别
4:存在字符转义、不支持字句查询,只能使用猜解的方法爆数据库(order by、union select、acsii(substr())等)
5:存在information_shema库,可使用load_file(查看敏感信息 )、dumpfile、outfile(导出webshell)
outfile函数可以导出多行,而dumpfile只能导出一行数据
outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式
测试方法:Sqlmap、 burp suite
Sqlmap常用参数:
-os-shell 上传一句话木马到网站配置文件,用菜刀连接,拿webshell
-u(get)
-r(post) 还能扫文件地址(扫文件地址的时候记得加上—level3参数)
--level(测试等级,默认1,>=2会检查cookie,>=3会检查user agent和referer)
-p 后面接参数,针对单个参数注入
burp suite常用功能:
常用的就是代理(抓包)重发器(改包发包)测试器(暴力破解)漏洞扫描(扫描网站,爬到哪些数据包)编码器,仪表盘,插件扩展,用户选项,项目选项等。
防御:
1)函数过滤(比如is numeric函数,判断变量id是否为数字)
2)下载防注入文件,通过include包含放在网站配置文件中
3)PDO预处理:采用sql语句预编译和绑定变量,是防御sql注入的最佳方法
4)白名单规范化输入,SQL语句预编译、严格检查参数的数据类型
序列化与反序列化
含义:
就是为了方便传输和节约资源,把一个对象转化成为可以传输的字符串,
序列化:对象转化成字符串
反序列化:字符串转化为对象
反序列化基本都是围绕serialize()和unserialize()这两个函数
注:serialize() 方法通过序列化表单值创建 URL 编码文本字符串。
您可以选择一个或多个表单元素(如输入和/或文本区),或表单元素本身。
序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中。
原理:
Serialize()unserialize()在PHP内部实现上本来是没有漏洞的,之所以产生漏洞的原因是:应用程序在处理对象、魔术函数以及序列化相关问题时导致的,当传给unserialize可挖的参数时,就可以注入payload进行反序列化,触发对象中的一些魔术方法。
实验:
PHP反序列化、Java反序列化、weblogic弱口令(账号密码都是weblogic)
Java反序列化操作漏洞(cve2018-2016)任意文件上传(cve-2018-2894)
Java反序列化原理:
(1)Java 序列化指 Java 对象转换为字节序列的过程
(2)Java 反序列化指字节序列恢复为 Java 对象的过程
(3) Commons-collections 爆出第一个漏洞开始,Java 反序列化漏洞的
事件就层出不穷。
(4)在 Java 中,利用 ObjectInputStream 的 readObject 方法进行对象读取
(5)可以深入了解 ysoserial 有哪些 gadgets
工具:序列化反序列化转码
在线反序列化工具:https://www.w3cschool.cn/tools/index?name=unserialize
防御:
1)安全配置好PHP相关参数,通过php.ini文件里disable_functions=配置 禁止某些php执行的命令函数
2)升级中间件
严格控制传入变量,严禁使用魔法函数。
原文始发于微信公众号(安全君呀):漏洞总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论