Pikachu靶场通关笔记

目录


Burte Force(暴力破解)

“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
…等等。
千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!
从来没有哪个时代的黑客像今天一样热衷于猜解密码 —奥斯特洛夫斯基


基于表单的暴力破解

Pikachu靶场通关笔记

  1. 没啥好说的,直接抓包跑
    Pikachu靶场通关笔记

验证码绕过(on server)

Pikachu靶场通关笔记

  1. 抓包重放,发现验证码可重复利用,并没有报错说验证码错误:
    Pikachu靶场通关笔记
    Pikachu靶场通关笔记
  2. 输入正确验证码然后暴破:
    Pikachu靶场通关笔记

验证码绕过(on client)

Pikachu靶场通关笔记

  1. 由于是前端验证,直接抓包重放删除验证码传参,也不会返回验证码不能为空:
    Pikachu靶场通关笔记
  2. 然后就暴破吧:
    Pikachu靶场通关笔记

token防暴破

Pikachu靶场通关笔记

  1. 经测试发现每个数据包加入了token验证机制,尝试使用pitchfork进行爆破:
    Pikachu靶场通关笔记
  2. 设置线程数为1:
    Pikachu靶场通关笔记
  3. 在Grep - Extract 选项添加参数:
    Pikachu靶场通关笔记
  4. 由于涉及到重定向的问题,这里选择always选项:
    Pikachu靶场通关笔记
  5. password变量设置字典:
    Pikachu靶场通关笔记
  6. token变量设置递归搜索:
    Pikachu靶场通关笔记
  7. 开始暴破:
    Pikachu靶场通关笔记

Cross-Site Scripting (XSS)

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
- XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
- XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
- 形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
- 因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;


反射型xss(get)

Pikachu靶场通关笔记

  1. 由于是GET类型传参,在url输入恶意语句:
    Pikachu靶场通关笔记
  2. 成功弹窗:
    Pikachu靶场通关笔记

反射性xss(post)

  1. 与上述一样只不过改成了POST类型,在输入框中输入恶意语句:
    Pikachu靶场通关笔记
  2. 弹窗成功:
    Pikachu靶场通关笔记

存储型xss

  1. 直接在留言板输入:
    Pikachu靶场通关笔记
  2. 弹窗成功:
    Pikachu靶场通关笔记

DOM型xss

  1. 在文本框中输入后,发现js进行拼接创建DOM对象:
    Pikachu靶场通关笔记
  2. 将这里闭合然后使用事件类型:
    Pikachu靶场通关笔记
  3. 点击后成功弹窗:
    Pikachu靶场通关笔记

DOM型XSS-X

  1. 更上述DOM型一致:
    Pikachu靶场通关笔记
  2. 点击后弹窗:
    Pikachu靶场通关笔记

xss盲打

  1. 见框就插:
    Pikachu靶场通关笔记
  2. 提交后点击提示有后台的地址,登陆后触发弹窗,所谓盲打就是这个XSS能否触发我们是不知道的,如果可以触发则管理员中招:
    Pikachu靶场通关笔记

xss之过滤

  1. 一个简单的大小写绕过:
    Pikachu靶场通关笔记
  2. 成功弹窗:
    Pikachu靶场通关笔记

xss之htmlspecialchars

  1. 输入payload发现被转义成实体符号:
    Pikachu靶场通关笔记
  2. 但是这里没有转义 ’ ,构造payload: ’ οnclick='alert(1),第一个单引号闭合href属性的的双引号,第二个单引号闭合href属性闭合的双引号:
    Pikachu靶场通关笔记

xss之href输出

  1. 经测试,单双引号都被过滤,这里使用js伪协议绕过,构造payload:javascript:alert(1):
    Pikachu靶场通关笔记
  2. 点击后成功弹窗:
    Pikachu靶场通关笔记

xss之js输出

  1. 输入XSS payload,查看网页源码,发现在js标签内,这里只需要闭合一下就好了:
    Pikachu靶场通关笔记
  2. 构造payload:’</script><script>alert(1)</script>,提交后成功弹窗:
    Pikachu靶场通关笔记

CSRF-跨站请求伪造

CSRF(跨站请求伪造)概述
– Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也称为"one click"攻击。 很多人搞不清楚CSRF的概念,甚至有时候会将其和XSS混淆,更有甚者会将其和越权问题混为一谈,这都是对原理没搞清楚导致的。
– CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。
– 因此,网站如果要防止CSRF攻击,则需要对敏感信息的操作实施对应的安全措施,防止这些操作出现被伪造的情况,从而导致CSRF。比如:
1. 对敏感信息的操作增加安全的token;
2. 对敏感信息的操作增加安全的验证码;
3. 对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等。


CSRF(get)

  1. 由于没有token验证,这里登录allen账户修改资料:
    Pikachu靶场通关笔记
  2. 抓包然后点击提交,生成CSRF POC:
    Pikachu靶场通关笔记
  3. 然后这里登录kobe账户,这是原有的数据:
    Pikachu靶场通关笔记
  4. 然后让kobe账户打开刚才生成的html文件,返现数据已被修改:
    Pikachu靶场通关笔记

CSRF(post)

  1. 跟上一题基本一样,只不过改成了POST传参,修改提交抓包生成POC:
    Pikachu靶场通关笔记
  2. 用kobe账户访问生的html,数据已被修改:
    Pikachu靶场通关笔记

CSRF(token)

增加了token验证机制,无法绕过


SQL-Inject(SQL注入)

在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
一个严重的SQL注入漏洞,可能会直接导致一家公司破产!
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!


数字型注入(post)

  1. 没啥说的,抓包修改就完了:
    Pikachu靶场通关笔记
  2. 页面看起来更明显一点:
    Pikachu靶场通关笔记

字符型注入(get)

  1. 单引号闭合,构造payload:1’union select username,password from pikachu.users#
    Pikachu靶场通关笔记

搜索型注入:

  1. 跟字符型没什么区别,只是变成了3列字段,构造payload:1’union select username,password,3 from pikachu.users#
    Pikachu靶场通关笔记

XX型注入:

  1. 没明白XX型是什么意思,只是闭合的时候多了个括号而已,构造payload:1’union select username,password,3 from pikachu.users#:
    Pikachu靶场通关笔记

"insert/update"注入:

  1. 很明显注册的时候使用的是insert语句,由于insert没有回显,所以只好使用报错注入:
    Pikachu靶场通关笔记
  2. 抓包修改,注意不能注释后面:
    Pikachu靶场通关笔记
  3. 修改也是一样:
    Pikachu靶场通关笔记
  4. 点击提交然后抓包修改:
    Pikachu靶场通关笔记

"delete"注入

  1. 跟前一关没什么区别,点击删除然后抓包:
    Pikachu靶场通关笔记
  2. 报错注入,由于编码问题这里用+代替空格:
    Pikachu靶场通关笔记

"http header"注入:

  1. header注入就是将http头中的某个值带入了sql语句导致的sql注入:
    Pikachu靶场通关笔记
  2. 经测试将User-Agent中的内容替换为单引号就报错:
    Pikachu靶场通关笔记
  3. 同理报错注入,注意闭合:
    Pikachu靶场通关笔记

布尔盲注(base on boolian)

  1. 由于盲注费时,这里直接sqlmap一把梭:
    Pikachu靶场通关笔记
  2. 跑出来了:
    Pikachu靶场通关笔记

时间盲注(base on time)

与布尔盲注一致,这里不再演示


宽字节注入

  1. 由于魔术引号的存在,将单引号前面填充一个反斜杠转义,但如果是GBK编码的话,在单引号前面加%df吃点反斜杠即可:
    Pikachu靶场通关笔记
  2. 暴出字段内容:
    Pikachu靶场通关笔记

RCE 远程命令执行

RCE(remote command/code execute)概述
RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

远程系统命令执行
一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口
比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 而,如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器

远程代码执行
同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。 不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。
因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。
你可以通过“RCE”对应的测试栏目,来进一步的了解该漏洞。


exec “ping”

  1. 构造payload:ping 127.0.0.1 & whoami:
    Pikachu靶场通关笔记

exec ‘eval’

  1. 代码执行,这里输入phpinfo();作为演示:
    Pikachu靶场通关笔记
  2. 成功执行phpinf()函数:
    Pikachu靶场通关笔记

File Inclusion(文件包含)

File Inclusion(文件包含漏洞)概述
文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了:
include(),include_once()
require(),require_once()
这些文件包含函数,这些函数在代码设计中被经常使用到。
大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。 但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。 根据不同的配置环境,文件包含漏洞分为如下两种情况:

1.本地文件包含漏洞:仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。
2.远程文件包含漏洞:能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况没啥好说的,准备挂彩。
因此,在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数,如果非要这么做,也一定要做严格的白名单策略进行过滤。


File Inclusion(local)

  1. 本地文件包含,这里直接包含文件上传那关上传的图片码,成功打开:
    Pikachu靶场通关笔记

File Inclusion(remote)

  1. 远程文件包含,这里包含www.baidu.com/robots.txt作为演示:
    Pikachu靶场通关笔记

Unsafe Filedownload(不安全的文件下载)

不安全的文件下载概述
文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如…/…/…/etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。
所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。 切记:所有与前端交互的数据都是不安全的,不能掉以轻心!


  1. 随便点击一个图片下载,抓包,修改图片名下载你想下载的文件,这里我在本地上传了一个password.txt作为演示:
    Pikachu靶场通关笔记
  2. 放包,成功下载:
    Pikachu靶场通关笔记

Unsafe Fileupload(文件上传漏洞)

不安全的文件上传漏洞概述
文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。
所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
–验证文件类型、后缀名、大小;
–验证文件的上传方式;
–对文件进行一定复杂的重命名;
–不要暴露文件上传后的路径;


client check 客户端验证

  1. 上传图片码,抓包修改后缀名:
    Pikachu靶场通关笔记
  2. 成功上传:Pikachu靶场通关笔记
  3. 验证,成功解析:
    Pikachu靶场通关笔记

MIMEtype

  1. 和上一关一致,上传图片码抓包修改文件后缀:
    Pikachu靶场通关笔记

  2. 上传成功:
    Pikachu靶场通关笔记


getimagesize

  1. 没什么区别,就是检验了文件是否为图片(可见图片码可以绕过很多拦截方式)
    Pikachu靶场通关笔记
  2. 上传成功:Pikachu靶场通关笔记

Over Permission(越权漏洞)

如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
因此,在在权限管理中应该遵守:
1.使用最小权限原则对用户进行赋权;
2.使用合理(严格)的权限校验规则;
3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;


水平越权

  1. 这里本来登录的是lucy账户:
    Pikachu靶场通关笔记
  2. 在url中修改用户名为lili,成功在未登录的情况下查看到其他人的信息:
    Pikachu靶场通关笔记

垂直越权

  1. 先登录管理员账户,来到添加用户界面,将地址复制下来:
    Pikachu靶场通关笔记
  2. 在使用普通账户登录,可以看到只有查看权限:
    Pikachu靶场通关笔记
  3. 访问上述复制的地址,会自动变成admin账户,可以直接添加用户:
    Pikachu靶场通关笔记

…/…/(目录遍历漏洞)

目录遍历漏洞概述
在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行其对应的文件。 在这个过程中,如果后台没有对前端传进来的值进行严格的安全考虑,则攻击者可能会通过“…/”这样的手段让后台打开或者执行一些其他的文件。 从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞。
看到这里,你可能会觉得目录遍历漏洞和不安全的文件下载,甚至文件包含漏洞有差不多的意思,是的,目录遍历漏洞形成的最主要的原因跟这两者一样,都是在功能设计中将要操作的文件使用变量的 方式传递给了后台,而又没有进行严格的安全考虑而造成的,只是出现的位置所展现的现象不一样,因此,这里还是单独拿出来定义一下。
需要区分一下的是,如果你通过不带参数的url(比如:http://xxxx/doc)列出了doc文件夹里面所有的文件,这种情况,我们成为敏感信息泄露。 而并不归为目录遍历漏洞。


  1. 正常打开,发现文件名在url栏中可以修改:
    Pikachu靶场通关笔记
  2. 修改传参,打开其他文件(感觉更像是文件包含漏洞):
    Pikachu靶场通关笔记

敏感信息泄露

敏感信息泄露概述
由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到。 比如:
—通过访问url下的目录,可以直接列出目录下的文件列表;
—输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息;
—前端的源码(html,css,js)里面包含了敏感信息,比如后台登录地址、内网接口信息、甚至账号密码等;
类似以上这些情况,我们成为敏感信息泄露。敏感信息泄露虽然一直被评为危害比较低的漏洞,但这些敏感信息往往给攻击着实施进一步的攻击提供很大的帮助,甚至“离谱”的敏感信息泄露也会直接造成严重的损失。 因此,在web应用的开发上,除了要进行安全的代码编写,也需要注意对敏感信息的合理处理。


  1. 查看网页源码,发现直接给出了测试账号和密码(。。震惊了)
    Pikachu靶场通关笔记
  2. 用拿到的账户名密码成功登录。。。。:
    Pikachu靶场通关笔记

PHP反序列化

序列化serialize()
序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象:

class S{
        public $test="pikachu";
    }
    $s=new S(); //创建一个对象
    serialize($s); //把这个对象进行序列化
    序列化后得到的结果是这个样子的:O:1:"S":1:{s:4:"test";s:7:"pikachu";}
        O:代表object
        1:代表对象名字长度为一个字符
        S:对象的名称
        1:代表对象里面有一个变量
        s:数据类型
        4:变量名称的长度
        test:变量名称
        s:数据类型
        7:变量值的长度
        pikachu:变量值

反序列化unserialize()
就是把被序列化的字符串还原为对象,然后在接下来的代码中继续使用。

	$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
    echo $u->test; //得到的结果为pikach

序列化和反序列化本身没有问题,但是如果反序列化的内容是用户可以控制的,且后台不正当的使用了PHP中的魔法函数,就会导致安全问题

// 常见的几个魔法函数:
__construct()	// 当一个对象创建时被调用
__destruct()	// 当一个对象销毁时被调用
__toString()	// 当一个对象被当作一个字符串使用
__sleep() 		// 在对象在被序列化之前运行
__wakeup()		// 将在序列化之后立即被调用

// 漏洞举例:
class S{
	var $test = "pikachu";
    function __destruct(){
    	echo $this->test;
    }
}
$s = $_GET['test'];
@$unser = unserialize($a);
// payload:O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}

  1. 输入payload:O:1:“S”:1:{s:4:“test”;s:29:"<script>alert(‘xss’)</script>";}
    Pikachu靶场通关笔记
  2. 提交后成功弹窗:
    Pikachu靶场通关笔记

XXE(外部实体注入)

XXE -“xml external entity injection"既"xml外部实体注入漏洞”。
概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。

什么是XML?

XML 指可扩展标记语言(EXtensible Markup Language)。
XML 是一种很像HTML的标记语言。
XML 的设计宗旨是传输数据,而不是显示数据。
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准。
简而言之它就是个存储数据的
XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。

XML和HTML的区别:

XML 不是 HTML 的替代。
XML 和 HTML 为不同的目的而设计:
XML 被设计用来传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。

XML和DTD的关系:

DTD 的目的是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构
可以理解为类和对象的关系


  1. 首先看XXE的结构:
第一部分:XML声明部分
<?xml version="1.0"?>

第二部分:文档类型定义 DTD
<!DOCTYPE note[ 
<!--定义此文档是note类型的文档-->
<!ENTITY entity-name SYSTEM "URI/URL">
<!--外部实体声明-->
]>

第三部分:文档元素
<note>
<to>Dave</to>
<from>Tom</from>
<head>Reminder</head>
<body>You are a good man</body>
</note>
  1. 构造payload:
<?xml version = "1.0"?>
<!DOCTYPE note [
    <!ENTITY hacker "XXE">
]>
<name>&hacker;</name>
  1. 成功回显:
    Pikachu靶场通关笔记
  2. 接下来使用外部实体,构造payload:
<?xml version="1.0"  encoding="UTF-8"?> 
<!DOCTYPE name [
	<!ENTITY xxe SYSTEM "file:///E:/phpStudy/PHPTutorial/WWW/i/pikachu/password.txt">
]> 
<name>&xxe;</name> 
  1. 成功:
    Pikachu靶场通关笔记

URL重定向(不安全的URL跳转)

不安全的url跳转
不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。
如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话
就可能发生"跳错对象"的问题。

url跳转比较直接的危害是:
–>钓鱼,既攻击者使用漏洞方的域名(比如一个比较出名的公司域名往往会让用户放心的点击)做掩盖,而最终跳转的确实钓鱼网站


  1. 在url中加入url传参,值为要跳转的地址,则可造成URL重定向
    Pikachu靶场通关笔记
  2. 访问后成功跳转到百度页面:
    Pikachu靶场通关笔记

SSRF(服务器请求伪造)

SRF(Server-Side Request Forgery:服务器端请求伪造)
其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制
导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
数据流:攻击者----->服务器---->目标地址

根据后台使用的函数的不同,对应的影响和利用方法又有不一样

// PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()        

如果一定要通过后台服务器远程去对用户指定(“或者预埋在前端的请求”)的地址进行资源请求,则请做好目标地址的过滤。


SSRF(curl)

  1. 直接将原url的值修改为百度:
    Pikachu靶场通关笔记
  2. 返回的页面是由服务器发送curl请求返回的页面:
    Pikachu靶场通关笔记

SSRF(file_get_content)

  1. 可以直接输入你要读取的文件:
    Pikachu靶场通关笔记
  2. 也可以使用php伪协议读取网页源代码,是经过base64加密过的:
    Pikachu靶场通关笔记
  3. 解码后得到网页源码:
    Pikachu靶场通关笔记

参考链接:
https://wileysec.com/archives/4/(pikachu靶场通关)
https://blog.csdn.net/u014029795/article/details/103143203(pikachu-XXE)

上一篇:CSRF where Refere validation depends on header being present


下一篇:XSS和CSRF双重攻击!让你欲罢不能