新手Web渗透教程 第三课:CSRF漏洞 初体验

我们在第二课直接用命令:

sqlmap.py -u http://localhost/book/admin/lyedit.php?ly_id=2 -p ly_id

得到了后台管员的用户名和密码。

 

其实在这里你应当奇怪的,为什么后台“book/admin/lyedit.php?ly_id=2”的链接我们能直接访问到?其实这里就存在了一个后台越权的漏洞了。有很多程序员由于粗心大意,对后台的某些页面限制不严,让普通用户就能访问到,这就是所谓的后台越权漏洞。

 

这节课,我们先来看一个实例,CSRF漏洞。

CSRF概念:

CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。我在这里演示一个实例,直接发送链接后让管理员自动删掉这个留言本的一条留言。

 

我们进入留言本的后台留言管理,右键在删除留言上点击复制链接,会得到如下所示的链接:

http://localhost/book/admin/ly_manage.php?act=del&ly_id=5

我们在留言本主页面留言,在头像哪儿输入:

</td><script>window.location.href='http://localhost/book/admin/ly_manage.php?act=del&ly_id=5</script>

CSRF跨站点请求伪造

我们输入的</td>是为了关闭前边的html标签。

window.location.href='http://localhost/book/admin/ly_manage.php?act=del&ly_id=5

上面 window.location.href 是调用JS让浏览器页面自动转向到删除页面。

 

我们提交后,等到管理员登陆后台查看留言时就会自动删除“ly_id=5”的留言了,起到了一个破坏作用。如果你做了这次测试,发现留言本不好用了,请用root、root登陆“http://localhost/phpmyadmin”,删掉test库中ly表里你提交的恶意数据。删掉test库中ly表里你提交的恶意数据

 

看到现在你就会明白了,黑客不仅要会方法,编程也要会的,我调用的是JS删除了一条留言,你能调用JS改掉管理员密码吗?如果不会,业余时间多多学习JS吧。

另外,如果要学会CSRF,其中HTTP 文件头的概念,像GET、POST、COOKIE、SESSION要了解的,以及如何抓包,我在剩下的篇幅里给初级读者讲一下。

 

一、准备工具burpsuite,并且配置好

我们不需要网上教程那么繁琐,请直接下载pentestbox,网址:pentestbox.org。

下载后安装到某个目录,双击安装目录里的pentestbox.exe就可以了,然后在pentestbox的界面里输入burpsuite就可以。如果在有的win10机器下运行出错,请先在pentestbox的界面先输入cmd,再输入burpsuite就可以了。burpsuite

 

burpsuite

 

burpsuite你默认配置就好了,不需要改动其它,我们只需要改动chrome或Ie浏览器的代理选项就可以了。

我们选择chrom浏览器的设置--更改代理服务器设置,点击局域网设置把本地代理服务器的设置改为127.0.0.1:8080。如果你是IE,找到工具-INTERNET属性来做修改。局域网设置

127.0.0.1:8080

 

为什么burpsuite我们不需要修改了呢?因为burpsuite默认就设置监听的127.0.0.1:8080。

打开burpsuite,一路next,注意下图中我点灰的地方。burpsuite

 

当然,你在这里要顺便学习一下用burpsuite抓http的包。看我以前写的《程序开发“网络投票机”教程》这三篇文章。我下文只是顺便让你复习一下,再强调一下你可能模糊的概念。

 

二、明白HTTP请求里的GET和POST

你按上文的方法配置好burpsuite和浏览器代理后,我们打开“http://localhost/book/admin/admin.php”,输入用户名和密码进行抓包。你会抓到以下数据包。

burpsuite抓包

你可以看到第一行就是POST /book/admin/check_login.php。

 

1、GET:获取一个文档,一个页面,一个图像

像上文中的 http://localhost/book/admin/admin.php 就是一个GET请求。大部分被传输到浏览器的html,images,js,css, … 都是通过GET方法发出请求的。它是获取数据的主要方法。 你在浏览器地址栏直接打开的网址都是GET请求。

 

2、POST:发送数据至服务器

尽管你可以通过GET方法将数据附加到url中传送给服务器,但在很多情况下使用POST发送数据给服务器更加合适。通过GET发送大量数据是不现实的,它有一定的局限性。用POST请求来发送表单数据是普遍的做法。

 

简单总结一句话,你浏览网页一般都是GET请求,你注册论坛呀、注册邮箱、注册头条号之类或是用微信登陆头条号一般都是POST请求,像本文登陆留言板后台也是POST请求。

再是要注意了GET请求可以跨域、POST请求不可以跨域。什么叫跨域呢?通俗地讲,像你提交到百度的数据就不能提交到搜狐去,因为是两个域名。

 

三、什么是COOKIE和SESSION?

 

1、Cookie

有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行跟踪而储存在用户本地终端上的数据。简单来讲,这东西是存贮在你电脑或手机上的,是可以清理掉的。为什么你登陆了今日头条后,不需要再登陆就是它在起作用,我们客户端是可以清理或按网站格式伪造的Cookie。Cookie

 

2、Session

在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

 

简地讲cookie和session的作用是一样的,不过一个在本地你的电脑端贮存,一个在服务器上贮存。cookie你可以随时伪造修改,session如果你没有拿到网站权限时是不可以的。

 

HTTP头里还有很多参数的,这里不再详解。看我以前写的《程序开发“网络投票机”教程 第一课:URL含义及HTTP请求》、《程序开发“网络投票机”教程 第二课:电脑/手机 浏览器抓包》、《程序开发“网络投票机”教程 第三课:HTTP数据包HEAD头解释》这三篇文章,你心里好有个明确的概念。

头像
  • ¥ 59.8元
  • 市场价:99.8元
  • ¥ 0.0元
  • 市场价:99.0元
  • ¥ 999.0元
  • 市场价:1599.0元
  • ¥ 6.8元
  • 市场价:8.8元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: