pikachu靶场通关攻略
Pikachu靶场是一个专门为网络安全爱好者和学习者设计的Web安全靶场,旨在帮助用户学习和实践常见的Web安全漏洞和攻击手法。它通过模拟真实的Web应用程序环境,提供了一系列漏洞和安全挑战,让用户可以在安全的环境中进行学习和测试
目录
一.安装pikachu靶场
1.从浏览器下载https://codeload.github.com/zhuifengshaonianhanlu/pikachu/zip/refs/heads/master解压包,然后解压在phpstudy_pro/WWW文件夹中。
2.启动phpstudy_pro,在数据库中创建数据库,用户名和密码均为pikachu的数据库
3.在浏览器中打开本机网络ipv4地址/pikachu/install.php网站并开始安装
点击图上的安装/初始化即可安装
二.暴力破解
1.介绍:
暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
...等等。
2.基于表单的暴力破解:
我们打开burp suite,随便输入账号和密码并进行抓包,可以看到post的Raw最下面有username和password我们把它发送到intruder如图
然后在username和password等号后面分别添加payload位置,攻击类型选择第四个clusterbomb
打开payload,payload类型选择简单类型即可,然后分别对payload集1和2添加常见弱密码
最后开始攻击进行破解,我们可以看到长度与其他项不一样的就是破解的结果
最后我们返回浏览器输入admin和123456显示如图就是破解成功
3.验证码绕过(on server)
尝试不发送请求验证码看看是否会刷新
首先我们输入错误的账号和密码以及正确的验证码使用burp进行抓包并发送到Repeater,然后发送数据包到repeater进行查看,在搜索框里输入</form进行匹配可以看到显示验证码为空此时我们可以在Raw的vcode里输入此刻浏览器里的验证码再次点击发送然后输入</form进行匹配此时我们看到显示username or password is not exists
选择我们无论发送几次错误的账号和密码都不会刷新验证码了就可以使用如上基于表单的暴力破解中发送到intruder中进行同样的操作进行破解同样得到长度不同的破解结果
4.验证码绕过(on client)
我们输入错误的账号密码以及验证码发现验证码刷新并且burp中没有响应,说明验证码校验不在后端而在前端,然后我们输入错误的账号密码以及正确的验证码进行抓包并发送至repeater,搜索</form
我们可以得出绕过前端后无论输入什么验证码发送都不会刷新验证码,后续参考上面发送到intruder进行破解即可
三.Cross-Site Scripting
1.xxs介绍:
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
2.反射型xxs(get/post)
(1)get
我们输入abcd尝试一下发现显示who is abcd,i don't care!
再次输入<script>alert(emo了);</script>会发现长度受到了限制,这个限制是没有作用的,我们可以打开Hackbar,在Hackba里面发送<script>alert(1);</script>,我们按F12打开开发工具点击Hackbar,点击load并且修改abcd为<script>alert(1);</script>最后点击Execute可以看到弹出一个框
(2)post
我们用admin和123456登录之后输入123然后提交发现显示who is 123,i don't care!,既然是post我们尝试抓个包,开启拦截,把123修改为<script>alert(1);</script>
最后点击放行就会弹出弹框
3.存储型xss
我们关闭拦截输入你好可以发现显示友好
它与前面的区别就在与你输入的东西会永久储存在这里,任意访问到这个界面的人都会看到,我们可以输入恶意代码<script>alert(1);</script>,可以看到弹出了框,这也导致了任意一个人去访问这个界面的时候也会受到这串代码的影响弹出框
4.Dom型xss
我们输入domxss?尝试抓包,发现并没有传到后端,接着按F12打开选择查看器查看内容发送到了如图
可以发现全都是由前端完成了,并没有经过后端。我们按CTRL+u查看源码可以看到字符串拼接到了a里面我们用'>代替”+str+“就可以闭合掉了,然后我们再在浏览器输入' onclick="alert(1)”>点击click me 再点击what do you see?就可以弹出框了
5.xss
(1)盲打
我们输入你好 席先生,发现并没有返回到前端。
xss盲打并不是xss漏洞的一种类型,而是xss漏洞的一个应用场景,主要是针对网站的后台管理员。打开pukachu的xss盲打在输入框累随意输入一些字符点击提交,我们可以发现输入的结果并没有显示在前端,而是直接提交到后端管理员页面,然后我们点提示登录后台地址,输入账号和密码登录我们就可以看到我们输入的内容在后台中,前端不反馈
我们可以输入弹框代码<script>alert(1);</script>直接注入后台,当管理员再次登录后台时就会受到弹框攻击
那时因为我们提交的表单数据他会被存储到目标服务器里面,然后管理员查看的时候就会被加载执行,从而达到我们的目的,
我们会发现弹出了弹窗,说明我们盲打成功;xss盲打其实是一种尝试性的攻击行为,因为攻击者并不知道后台有没有输出或者是过滤;
xss盲打本质还是存储型xss漏洞的利用只不是后台输出端由用户变成了网站管理员,但是危害性就更大了。
(2)过滤
我们输入<script>alert(1);</script>尝试弹框,但是没有弹框且被过滤掉了,接着我们查看页面源码
可以看到我们输入的标签都被去掉了,说明后台有对<script>标签进行过滤,然后我们大小写混合输入<SCrIpt>alert(1);</ScrIPt>
成功弹框,可以得出它并没有对大小写过滤。
四.CSRF
1.CSRF(概述)
Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击。 很多人搞不清楚CSRF的概念,甚至有时候会将其和XSS混淆,更有甚者会将其和越权问题混为一谈,这都是对原理没搞清楚导致的。我们这里以百度为例,当我们在一个浏览器中登录了百度的网站想要发送请求给服务器修改密码,但是却点击了恶意链接或假网站,假网站也对服务器发送请求,因为也是对百度服务器发送请求,所以浏览器也会带上相应cookie,因此你的密码信息就被窃取了。
2.CSRF(get)
我们先打开代理和bp,然后输入提示里的账号和密码来到个人会员中心
然后点击修改个人信息,随便填完后点击提交,去bp中查看修改信息的请求,我们可以看到我们修改信息的请求都在url参数里,我们可以尝试在另一台恶意服务器上创建一个恶意网站去窃取个人的信息,我们先去copy HTLM
然后点击copy htlm,在另一台服务器上开启pypstudy 在根目录里创建evil.htlm文件并把刚刚复制的htlm用记事本粘贴进去。然后用终端查看ip,在浏览器中访问evil.htlm网站当用户点击这个之后信息就会被窃取更改。
3.CSRF(post)
我们依旧是用bp抓包,可以发现与get不同的是修改修改信息不在url参数里,而在下面
我们依旧使用如上get创建恶意网站的方法即可估计到用户信息。
五.File Inclusion(文件包含漏洞)
1.File Inclusion(文件包含漏洞)概述
文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了:
include(),include_once()
require(),require_once()
这些文件包含函数,这些函数在代码设计中被经常使用到。
大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。 但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。
2.File Inclusion(local)
我们选择kobe提交查询,然后观察网址发现filename=file1.php,然后多尝试几次,可以看到file1.php就是每次查询的变量,
我们使用pycharm打开网站源码查看,包含了一个get的变量参数和传入的一个参数以及左边包含的六张图片
然后我们返回浏览器使用Hackbar加载一下当前的url做下分割并使用etc/passwd去读取服务器上的文件
3.File Inclusion(remote)
我们看到页面有提示
我们按照提示去php.ini文件中把allow -url-include中的Off改为On提示,然后重启一下apache提示就会消失了。剩下的如上的操作就能读取到服务器上的文件。
六.Unsafe file upload
1.介绍:
文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。
所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
--验证文件类型、后缀名、大小;
--验证文件的上传方式;
--对文件进行一定复杂的重命名;
--不要暴露文件上传后的路径;
--等等...
2.client check
我们新建一个文档并输入一串木马
在浏览器里选择这个文件会显示不符合要求
这就说明了这个校验是在浏览器的,服务器不会发送校验,这个时候我们只需要绕过浏览器这个校验就可以发送给服务器。这里我们先选取一张符合要求的图片用bp抓个包,然后把这个包发送到重放模块,我们修改参数点击发送,然后查看页面渲染可以看到已经成功发送给服务器
然后我们回到浏览器访问http://10.33.19.82/pikachu/vul/unsafeupload/uploads/1.php这个地址,会发现是空白网页,我们打开hackbar加载并输入post date:1=phpinfo() ;
点击执行,webshell是可以正常使用的
3.MYMETYPE
我们依旧是上传1.php恶意文件
去到bp里发送到重放模块,把文件名改为2.php,和文档格式改为image/png在渲染里可以看到以及保存成功了,接下来依旧是在浏览器访问保存的路径并打开hackbar如上输入1.phpinfo();并执行即可
七.Over permission(越权操作)
1.介绍
如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。
一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
因此,在在权限管理中应该遵守:
1.使用最小权限原则对用户进行赋权;
2.使用合理(严格)的权限校验规则;
3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;
你可以通过“Over permission”对应的测试栏目,来进一步的了解该漏洞。
2.水平越权
我们点击提示,把提示里的账户信息在记事本里记录下来,然后随便登录一个账户,我们可以的点击查看个人信息,我们打开hackbar可以发现账户密码是在参数里的
我们可以通过改变参数来查看其他账号的信息
3.垂直越权
我们点开提示,发现有两个用户,一个普通一个超级,同样的我们先在记事本里保存这个账号信息,我们先登录piakchu用户,可以看到后台管理中心,没有查看权限。
然后我们登录管理员账号此时我们就要了查看和管理的权限
此时我们点击添加用户并保存这个地址http://10.33.19.82/pikachu/vul/overpermission/op2/op2_admin_edit.php
尝试用普通用户去访问这个地址,我们登录piakachu用户,然后访问这个地址可以发现我们可以有添加用户这个权限了
我们用普通用户实现了管理员用户的权限,这就是垂直越权
八.XXE
1.概述
XXE -"xml external entity injection"
既"xml外部实体注入漏洞"。设计宗旨是传输数据,而不是显示数据,是被用来结构化,存储以及传输信息
概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。基本的格式如下
2.XXE漏洞
我们把<?xml version = "1.0"?>
<!DOCTYPE name
[ <!ENTITY hacker "test"> ]>
<name>&hacker;</name>直接传入,提交后结果如下
可以得知有可能存在XXE漏洞
我们使用直接外部实体注入,就是通过协议直接执行恶意命令,我们为以file协议来读取c:/windows/win.ini配置文件的内容
成功读取
更多推荐
所有评论(0)