COOKIE注入

Posted by Tattoo on 2019-01-22
Estimated Reading Time 3 Minutes
Words 919 In Total
Viewed Times

cookie介绍

cookie是存储在本地客户端上的数据,浏览器通过HTTP协议和服务器端进行cookie交互,服务器可以通过cookie识别到你。

cookie由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将cookie的值保存到某个目录下的文本文件内,下次 请求同一网站时就发送该cookie给服务器。

目前cookie最广泛的是记录用户登录信息,这样下次访问时可以不输入自己的用户名、密码。当然了这种方便也存在用户信息泄密的问题。

cookie注入介绍

cookie注入其原理也和平时的注入一样,只不过说我们是将提交的参数以cookie方式提交,而一般的注入我们是使用get或者post方式提交,get方式提交就是直接在URL后面加上需要注入的语句,post则是通过表单的方式。

相对post和get方式注入来说,cookie注入就要稍微繁琐一些了,要进行cookie注入,我们首先就要修改cookie,这里就需要使用到Javascript语言。

cookie注入原理

php中,使用超全局变量 $_GET,$_POST来接受参数。 asp中,使用 Request.QueryString (GET)或 Request.Form (POST)来接收页面提交的参数值。 有些程序员直接这么写:$id = $_REQUEST[‘id’];这时候PHP不知道,应该从get 还是post方式上接收参数 ,它就会一个一个去试,它是先取GET中的数据,没有再取POST中的数据,还会去取cookies中的数据,如果没有做好防护措施就容易导致存在cookie注入。

cookie注入方法

cookie注入应用场景:

1.程序对get和post方式提交的数据进行了过滤,但未对cookie提交的数据进行过滤。
2.在条件1的基础上还需要程序对提交数据获取方式是直接request的方式,未指明使用request对象的具体方法进行获取,也就是说用request这个方法的时候获取的参数可以是是在URL后面的参数也可以是cookie里面的参数这里没有做筛选。

cookie注入过程:

  1.寻找形如“.asp?id=xx”类的带参数的URL

  2.去掉“id=xx”查看页面显示是否正常,如果不正常,说明参数在数据传递中是直接起作用的

  3.清空浏览器地址栏,输入“javascript:alert(document.cookie=”id=”+escape(“xx”));”,按Enter键后将弹出一个对话框,内容是“id=xx”,然后用原来的URL刷新页面,如果显示正常,说明应用是用Request(“id”)这种方式获取数据的

  4.重复上面的步骤,将常规SQL注入中的判断语句带入上面的URL:

1
2
3
“javascript:alert(document.cookie="id="+escape("xx and 1=1"));”

“javascript:alert(document.cookie="id="+escape("xx and 1=2"));”

和常规SQL注入一样,如果分别返回正常和不正常页面,则说明该应用存在注入漏洞,并可以进行cookie注入

  5.使用常规注入语句进行注入即可

利用工具实现自动化注入:

默认情况下SQLmap只支持GET/POST参数的注入测试,但是当使用–level 参数且数值>=2的时候也会检查cookie时面的参数,当>=3的时候将检查User-agent和Referer。

1
sqlmap -u "127.0.0.1/xx.asp?id=xx" --cookie "id=xx" --level 2

总结

cookie注入与正常注入相当,只不过显示的位置不同,除了使用sqlmap注入,还可以通过抓包的方法手工注入


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !