pikachu通关教程

小浩 Lv3

pikachu通关目录

Burt Force(暴力破解漏洞)
XSS(跨站脚本漏洞)
CSRF(跨站请求伪造)
SQL-Inject(SQL注入漏洞)
RCE(远程命令/代码执行)
Files Inclusion(文件包含漏洞)
Unsafe file downloads(不安全的文件下载)
Unsafe file uploads(不安全的文件上传)
Over Permisson(越权漏洞)
../../../(目录遍历)
I can see your ABC(敏感信息泄露)
PHP反序列化漏洞
XXE(XML External Entity attack)
不安全的URL重定向
SSRF(Server-Side Request Forgery)

工具安装

①burp suite

Burt Force(暴力破解漏洞)

使用的工具:burp suite(请先安装burp suite)

附:Sniper(狙击手模式):一次只会对一个位置进行攻击
Battering ram(攻城锤模式):同样情况下,攻击次数减半,每次两个位置用同样的密码
Pitchfork(叉子模式):可以多组密码本payload,每个都不同
Cluster bomb(炸弹模式):交叉组合,每一个密码本里的密码都对应于另一密码本所有密码

概述:

①“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。

②理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:

——–1.是否要求用户设置复杂的密码;
——–2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
——–3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);

——–4.是否采用了双因素认证;
…等等。

——–千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!

基于表单的暴力破解:
  1. 打开浏览器代理插件

    pikachu2

  2. 打开burp suite,在Proxy板块中打开Intercept is on

    pikachu1

  3. 打开pikachu网站中的暴力破解模块,随机输入账号密码,点击login

    pikachu3

    pikachu4

  4. 右键->send to instruder

    pikachu5

  5. 选中账号密码的内容

    pikachu6

  6. attack type:Cluster bomb,进入payload,添加字典表,点击Start attack

    pikachu7

  7. 发现长度不同的 Payload1 Payload2,大概率是账号密码

    pikachu8

  8. 测试发现,login success,成功登录!

    pikachu9

验证码绕过(on server):

验证码生成在后端,有时验证码不会刷新,故和前端一样,如果后端验证码刷新则按照以下流程:

验证码错误时会报错,但不会过期,session有效期间vcode仍然有效。
思路:
判断验证码在输入错误时是否显示
判断验证码是否有非空错误
判断验证码刷新后是否还能重复利用

输入信息后先抓包:

pikachu10

发送到repeater后修改验证码,修改验证码后显示(发现burp24.1版本使用不了内置浏览器,更换版本22.6):

pikachu11

pikachu12

删除验证码后显示:

pikachu13

接下来测试验证码是否能重复利用:
刷新页面后重新获取一个验证码:

pikachu14

输入当前正确的验证码多次发送,不显示验证码错误,说明验证码存在不过期,可以重复利用。

开始暴力破解:

pikachu15

pikachu16

pikachu17

pikachu18

由于响应数据的不确定因素,中文在加载字典的时候是乱码,这里为了显示好看,只匹配英文部分,可以使用正则:“LoginId”:”([a-zA-Z0-9_]+)”,“NickName”,最终提取的都是英文字符。

开始爆破:

pikachu19

pikachu20

找到后面不为1的,即大概率是账号密码

pikachu21

成功登录!!!

原文链接:https://blog.csdn.net/weixin_50339832/article/details/111865471

验证码绕过(on client):

验证码生成在前端,验证码不会刷新,故先填写正确的验证码,抓包爆破即可

查看源码JS有无问题
判断验证码错误和为空时情况

先看JS,右键查看网页源代码:

pikachu22

1
2
<label><input type="text" onclick="createCode()" readonly="readonly" id="checkCode" class="unchanged" style="width: 100px" /></label><br />                <label><input class="submit"  name="submit" type="submit" value="Login" /></label>
onclick="createCode()"调用JS生成验证码

查看源码,我们发现验证码的生成是在前端中实现的

token放爆破?

这题难点是token验证,没办法简单实现爆破,而因为token是明文,需要利用bupsuite来获取每次爆破更新的token值

在随意输入用户名和密码后,点击Forward在Intercept中可以发现token,多次尝试可以发现token值是每次都刷新的

pikachu23

送到intruder中来爆破,后清空所有选定变量,设置好username、password和token两个变量,同时方法选择pitchfork。pitchfork (鱼叉模式)不同于sniper,pitchfork简单理解就是你设置了几个变量,他就能用几个payload,我们设置3个,就有3个payload,并且一一对应。
pikachu24

Payload1和Payload2输入字典

Payload3:

选择options找到Grep-Extract栏目,打勾并add,然后选择fetchresponse,在下方代码找到token的值并选中,后选择OK:
pikachu25

将最下方的redirections(重定向)选择为always:

pikachu26

pikachu27

原文链接:https://blog.csdn.net/weixin_43780092/article/details/120235906

Payload3选择recursive grep(递归查找)复制刚才的token值到first request:

pikachu28

筛选一下:

pikachu29

开始攻击!
pikachu30

报错:Error:recursive grep payloads cannot be used with multiple request threads

pikachu31

原因:

递归grep有效负载不能用于多个请求线程

解决:在Resource Pool中重新创建一个新的Resource Pool并把Max concurrent requests改为1即可,如图所示

pikachu32

重新开始攻击:

pikachu33

发现1条长度不一样,同时login success不为1没关系,咱们测试一下:

pikachu34

成功!!!

经过测试,匹配login success不成功,但是匹配login成功,似乎tocken防爆破检测不出success。

XSS(跨站脚本漏洞)

概述:

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写”CSS”冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;

XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

pikachu35

三种基本 的XSS:

  • 反射型XSS:**<非持久化>** 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一次性,所见即所得,一般容易出现在搜索页面。
  • 存储型XSS:**<持久化>** 代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
  • DOM型XSS:基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。

XSS漏洞形成的基本原因:

  1. 未过滤用户输入:最常见的原因之一是未正确过滤和验证用户输入。如果应用程序接受用户输入但未对其进行适当的过滤和验证,恶意用户可以在输入中插入恶意脚本代码。

  2. 未正确编码输出:另一个常见原因是应用程序在将用户输入输出到网页上时未正确编码。如果应用程序未对用户输入进行适当的编码,恶意脚本可能会被执行,从而导致XSS攻击。

  3. 信任不安全来源的内容:有时应用程序会从不安全的来源(如URL参数、表单输入等)获取内容并将其直接输出到网页上,这可能会导致XSS漏洞。

  4. 缺乏安全策略:应用程序缺乏有效的安全策略和机制来防止XSS攻击,如内容安全策略(Content Security Policy)等。

  5. 浏览器特性:一些浏览器特性也可能导致XSS漏洞,如JavaScript中的eval()函数、innerHTML属性等,如果不谨慎使用这些特性,可能会导致XSS漏洞的产生。

测试流程:

  1. 在目标站点找到输入点,比如查询接口,留言板等。

  2. 输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理。

  3. 通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造 闭合)。

  4. 提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果执行成功则说明存在XSS漏洞。

技巧:

  1. 查询接口一般容易出现反射型XSS,留言板容易出现存储型XSS。

  2. 由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效,或者是环境限制了执行(浏览器)。

  3. 尝试变化不同的script,尝试绕过后台的过滤机制。

  4. script测试代码:

    1
    <script>alert('ssss')</script>
  5. script-得到admin的cookie

    1
    <script>alert(document.cookie)</script>

反射型xss(get)

  1. 随便输入特殊字符,发现没有过滤。

    pikachu36

  2. 输入警告框alert测试代码<script>alert(‘ssss’)</script>发现放不下

  3. 查看网站源代码,右键检查代码,修改maxlength为50

    pikachu37

    pikachu38

  4. 输入提交,弹出警告框,说明有xss漏洞

    pikachu39

  5. 仔细观察一下网络源码就可以知道,他是将我们提交的信息重新发送给我们,后台没有对我们提交的信息做任何的漏洞。GET型的XSS更容易被利用,一般的利用方式是利用跨站脚本的URL进行伪装之后发送给目标。

    pikachu40

反射型xss(post)

​ POST型的漏洞一般是使用表单方式进行提交,无法直接使用URL进行攻击。

​ POST型XSS基本原理。

pikachu41

​ 具体操作:

  1. 在目标站点上找到输入点,比如查询接口,留言板等;

    image-20240415105943512

    image-20240415110107741

  2. 输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理

    image-20240415110240984

  3. 通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合)

  4. 可见我们输入的字符串直接嵌入到了p标签中,已知我们是可以在p标签里写js代码的,所以我们可以尝试写入一段特制的js代码。

    image-20240415143407567

  5. 输入测试<script>alert(‘ssss’)</script>,发现并没有将代码转换为URL

  6. image-20240415110502002

漏洞利用:将XSS后台相关设置配置好,如受害者ip,攻击者对应ip。

image-20240415144648128

未完待续。。。。。。

在输入框<script>alert(document.cookie)</script>调用admin的cookie

存储型XSS

原理:存储型XSS同样是利用输入接口进行攻击,但是由于输入的js代码被存储到了数据库中,那么就具有了持久性。 每次用户访问这个页面都会触发恶意代码。

  1. 在目标站点上找到输入点,比如查询端口,留言板等

    pikachu42

  2. 输入一组“特殊字符+唯一识别字符”

    pikachu43

  3. 通过搜索定位,查看语法是否可以构造执行js的条件

    pikachu44

  4. 构造脚本代码,看是否可以成功执行,如果成功执行,说明有xss代码

    pikachu45

    pikachu46

    pikachu47

  5. 因为是储存型XSS,每次刷新都会弹窗

漏洞利用—-未完待续。。。。。。

DOM型XSS

概念:

简单来说DOM文档就是一份XML文档,当有了DOM标准之后,DOM便将前端html代码化为一个树状结构,方便程序和脚本能够轻松的动态访问和更新这个树状结构的内容、结构以及样式,且不需要经过服务端,所以DOM型xss在js前端自己就可以完成数据的输入输出,不与服务器产生交互,这样来说DOM型xss也可以理解为反射性xss。
下面看一个DOM将html转换为树状结构体,深入的理解DOM结构标准:

111

所以说DOM型xss可以在前端通过js渲染来完成数据的交互,达到插入数据造成xss脚本攻击,且不经过服务器,所以即使抓包无无法抓取到这里的流量,而反射性与存储型xss需要与服务器交互,这便是三者的区别。

复现流程:

  1. 首先输入普通的参数,查看前端源码,输入为’’’ <>111,输出为111’<>,发现并没有对特殊字符进行过滤,查看源代码

    image-20240416112622661

    image-20240416112856436

  2. 利用已知条件构建payload效果为弹窗,弹窗内容为111

    1
    <a href='#' onclick="alert(111)">'>what do you see?</a>
  3. 则payload

    1
    #' onclick="alert(111)">
  4. 执行

    image-20240416113108811

    image-20240416113151676

DOM型xss-x

  1. 在目标站点上找到输入点,比如查询接口,留言板等
  2. 输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理
  3. 通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合)

xss之盲打

xss之过滤

1
<ScRiPT>alert("111")</ScRIPT>

xss之htmlspecialchars

1
1'onclick='alert(123)'

xss之href输出

1
javascript:alert(123)

xss之js输出

1
x'</script><script>alert('123')</script>

CSRF(跨站请求伪造)

概述

CSRF(get)

直接发给用户一个网站从而修改其用户信息

CSRF(post)

关于post请求就相对麻烦一下,因为不能直接发给用户一个网站从而修改其用户信息,必须要通过表单提交的信息才行。

所以这里采取一种另外的方法,设计一个钓鱼网站。欺骗用户点击其中的form提交,当然,form中的内容是我们预先设定好的,然后点击之后,我们的黑客网站就会讲我们设定好的黑客信息以post方式请求存在csrf漏洞的网站,从而修改用户信息。
原文链接:https://blog.csdn.net/mastergu2/article/details/107914741

CSRF Token

SQL-Inject(SQL注入漏洞)

概述

数字型注入(post)

将用户表所有人的信息查询出来,在后面加上 or 1=1,这样判断条件变成了永真,返回所有查询结果

  1. 找列数 payload: id=1 order by n#&submit=%E6%9F%A5%E8%AF%A2
  2. 爆库 payload:id=1 union select database(),2#&submit=%E6%9F%A5%E8%AF%A2
  3. 爆表 payload:id=1 union select group_concat(table_name),2 from information_schema.tables where table_schema=database()#&submit=%E6%9F%A5%E8%AF%A2
  4. 爆列 payload:id=1 union select group_concat(column_name),2 from information_schema.columns where table_name=’users’#&submit=%E6%9F%A5%E8%AF%A2
  5. 爆数据 payload:*id=1 union select username,password from users#*&submit=%E6%9F%A5%E8%AF%A2
  6. 读文件 payload:id=1 union select load_file(‘C:/Windows/win.ini’),1 from users#&submit=%E6%9F%A5%E8%AF%A2
  7. 写马 payload:id=1 union select 1,’‘ into outfile ‘C:/phpstudy_pro/WWW/pikachu/vul/sqli/1.php’#&submit=%E6%9F%A5%E8%AF%A2

字符型注入(get)

搜索型注入

xx型注入

“insert/update”注入

“delete”注入

“http header”注入

盲注(base on boolian)

盲注(base on time)

宽字节注入

RCE(远程命令/代码执行

概述

exec “ping”

exec “evel”

Files Inclusion(文件包含漏洞)

概述

File inclusion(local)

File inclusion(remote)

Unsafe file downloads(不安全的文件下载)

概述

Unsafe Filedownload

Unsafe file uploads(不安全的文件上传)

概述

client check

MIME type

gerimagesize

Over Permisson(越权漏洞)

概述

水平越权

垂直越权

../../

概述

目录遍历

I can see your ABC(敏感信息泄露)

概述

icanseeyourABC

PHP反序列化漏洞

概述

PHP反序列化漏洞

XXE(XML External Entity attack)

概述

XXE漏洞

不安全的URL重定向

概述

不安全的URL跳转

SSRF(Server-Side Request Forgery)

概述

SSRF(curl)

SSRF(file_get_content)

工具安装

1.burp suite

介绍:

Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手
工地能更好的完成对web应用的渗透测试和攻击。

下载jdk

Java Downloads | Oracle

jdk-21

在下载页面中根据自己的系统选择对应的版本。

②配置环境变量:
  1. 安装完成之后,右击“我的电脑”,点击“属性,选择“高级系统设置”

  2. 选择“高级”选项卡,点击“环境变量”

  3. 在“系统变量”中设置3项属性,JAVA_HOME、PATH、CLASSPATH(注意:如果没有,则新建,如果使用1.5以上版本的JDK,不用设置CLASSPATH环境变量,也可以正常编译和运行Java)

  4. 变量名:JAVA_HOME

    变量值:C:\Progrm Files (x86)\Java\jdk1.8.0_91

    变量名:CLASSPATH

    变量值:**.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;**

    变量名:Path

    变量值:**%JAVA_HOME%\bin; %JAVA_HOME%\jre\bin;**

  5. 测试JDK是否安装成功

    ① 键入win+r,输入cmd,回车,键入命令java -version、java、javac命令查看版本

下载burp suite文件

burp suite下载

burp22.6可以使用内置浏览器

启动burp suite(破解)
  1. 双击解压后的文件中的ENBurp(无CMD窗口),第一次必须用ENBurp打开,第二次可以使用CNBurp
  2. 打开BurpSuite目录中的BurpsuiteLoader
  3. 将BurpsuiteLoader中Lincense中的内容复制到打开的burp suite框中,点击Next,点击Manual activation,将第二个框中的内容复制到BurpsuiteLoader第二个框中,并将BurpsuiteLoader中的第三个框中的内容复制到burp suite第三个框中,点击Next,显示Success,成功!!!
④Burp Suite代理和chrome浏览器设置

chrome安装包

falconproxy插件

  1. 打开chrome浏览器-设置-管理扩展程序-右上角打开开发者模式-将calconproxy插件拖进去

  2. 打开插件,点击Click here创建一个代理,代理地址127.0.0.1 代理端口8080,点击创建,创建成功,浏览器环境配置成功!

  3. 打开burp suite,在proxy板块-Proxy settings中查看代理地址是否为,127.0.0.1:8080

⑤证书设置
  1. 下载cacert.der

    启动burpsuite,burpsuite保持默认即可,开启浏览器代理,浏览器地址栏访问 /burp 或者loalhost:8080,点击CA Certificate下载证书。

    burp1

  2. 中间证书颁发机构导入 -> 下载

    chrome浏览器设置,搜索”证书“,进入,在中级证书颁发机构导入刚刚下载的cacert.der,导入成功后,中级证书颁发机构多了一列PostSwigger CA,这就是刚刚导入的。选中、点击导出。也是一路下一步,保存为PostSwigger.cer。

    burp2

  3. 受信任的根证书颁发机构在受信任的根证书颁发机构导入刚刚导出的PostSwigger.cer。

  • Title: pikachu通关教程
  • Author: 小浩
  • Created at : 2024-04-06 13:43:59
  • Updated at : 2024-06-08 13:52:13
  • Link: https://blog.xh8.shop/2024/04/06/pikachu通关教程/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments