关于我
【2022-3-30】我叫Ba1_Ma0,每天都会在hackthebox平台上打机子来学习新东西,掌握C语言,C++,C#,bash,java,python,PHP,汇编语言编写能力,基本都有写的小项目,ctf方向web,misc,pwn,密码学,逆向,取证,经常单人参加全世界ctf比赛并获得排名,最好的一次是参加国外的picoCTF,在全世界7000个队伍中排名第31,还爱好二进制安全和无线安全,有实战经验,考过安全相关的证书。
关于本文章
本文章也只是写我这4年多的渗透测试经验,每一步操作都会拿实战的例子来演示,帮助学习网络安全的新手小白快速的建立一个渗透测试框架,会解释每个工具的参数和它的作用,用简单易懂的话语来入门,为以后的渗透测试打下基础,如果各位有什么问题或者意见,可以联系我的邮箱:baimao3389@gmail.com,我每天都会定时查看邮箱,有什么问题或者意见,我都会当天回复,我的技术也很菜,勿喷。
一.侦察&枚举
这一步是做渗透测试的第一步,也是最重要的一步,通过收集到的服务器版本信息,正在运行的服务版本信息,开放的端口等等,来进一步的了解目标,你扫描获取的信息决定了你之后能尝试的方向,多花点时间进行信息搜集总是好的。
1.枚举tcp上运行的服务及其版本信息
Nmap (“Network Mapper(网络映射器)”)网络探测和安全审核的工具,它的设计目标是快速地扫描大型网络,发现网络上有哪些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息),它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能
我写了一个简易的脚本,能缩短几分钟时间,来方便我对服务器做枚举,后续完善后会在github上发布。 在扫描时,我使用以下命令:
nmap -Pn -sS --stats-every 3m --max-scan-delay 20 --defeat-rst-ratelimit -T4 -p1-65535 目标ip
命令解释:
-Pn : 不进行ping扫描
-sS:指定使用 TCP SYN的方式来对目标主机进行隐蔽扫描
--stats-every 3m:每3秒输出一次
--max-scan-delay:防止Nmap在同一时间向主机发送多个探测报文
--defeat-rst-ratelimit:通过发送RST包来限制扫描速率
-T4:T4速度模式
-p:扫描的端口
实例演示
通过我上面的命令扫描发现,服务器只开放了80端口,且80端口运行的apache服务的版本也没什么可以利用的漏洞。我们试试枚举udp会不会有所收获,
2.枚举udp上运行的服务及其版本信息
在扫描时,我使用以下命令:
nmap -sC -sV -sU 目标ip --min-rate 7500 -F
命令解释:
-sC:等于 --script=default,默认脚本扫描
-sV: 探测打开的端口以确定服务/版本信息
-sU:UDP扫描
--min-rate: 每秒发包数量不小于多少,用来提高扫描效率,缩短扫描时间
-F:快速扫描
如果不使用–min-rate和快速扫描,那么nmap的udp扫描要扫好几年才能出结果
实例演示
服务器在623端口上开放了一个叫做asf-rmcp的服务,我不知道是什么,于是我就去网上搜索找个服务信息 我阅读完这篇文章可以发现,这个服务是通过建立一个网站为台式机和服务器提供带外监控,如果是2.0版本的话,可以用特殊的工具通过这个服务漏洞来获得网站的账号和密码的哈希值,后来通过测试证明,我拿到了网站的管理员账号和密码,具体的操作我后面会写,这里我只想说明枚举的重要性 综上所述,渗透测试的第一步应该先扫描tcp与udp上开放的端口,然后将端口上正在运行的服务版本在网上搜索,看有没有公开的漏洞,我个人推荐Google,语法如下
服务 服务的版本 exploit
或者使用kali上的工具,searchsploit,它提供了在本地保存的存储库中执行详细的离线搜索的能力
searchsploit 服务 服务版本
之后我会讲该如何利用找到的漏洞。
3.枚举网站根目录与子域名
当我们在tcp和udp上无法找到能利用的信息时,我们就只能将目光放在网站上了 枚举网站根目录和子域名时,我们需要一个字典来爆破,这里我推荐在github上的SecLists项目,地址为:
https://github.com/danielmiessler/SecLists
他有着最全面的爆破字典,我一直都在用,直接下载即可,或者在终端运行
apt install seclists
安装的字典位置本机上的
/usr/share/seclists
到时候直接用想用的字典即可
枚举网站根目录,这里我推荐用ffuf,使用方法如下:
ffuf是一款高效的对网站做模糊测试的工具,如枚举网站根目录,可选择在 URL 中的任何位置进行模糊测试
用法如下:
ffuf -w /usr/share/seclists/Discovery/Web-Content/raft-small-directories.txt -t 100 -mc 200,302,301 -u http://ip/FUZZ
命令解释:
-w ##要使用的字典
-t ##线程数
-mc ##输出什么响应状态的网站目录
-u ##指定的网站url
FUZZ ##模糊测试的位置
实战演示:
然后我继续扫描images目录下的文件 发现泄露了很多linux上的系统文件,我们可以通过读取这些文件信息来进一步枚举网站,通过慢慢的读取文件信息,我找到了网站的账号和密码,成功的进入了网站 扫描网站根目录可以发现很多泄露的文件,挖文件泄露的洞的话,也是这样慢慢扫网站根目录的
枚举服务器子域名: 当我们扫描网站根目录也没扫描到什么有用的信息时,我们应该枚举一下服务器的子域名
什么是子域名:https://zh.wikipedia.org/wiki/%E5%AD%90%E5%9F%9F%E5%90%8D
枚举子域名,这里我用的是wfuzz,这个工具和fuzz差不多,都是做模糊测试的,使用方法如下:
wfuzz -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt --sc 200 -u http://url/ -c -H "Host:FUZZ.url" --hw 26
命令解释:
-w ##指定的字典
-sc ##输出什么响应状态的网站
-u ##指定的网站url
-c ##带颜色显示
-H ##参数来指定HTTP请求的请求头
实战演示:
这里我们扫描到了三个子域名,我们去访问试试 一个登录页面,后来根据网站框架的漏洞,也成功的进入了后台
4.网站框架枚举
根据网站的框架,我们有很多针对的工具来使用,这里推荐Nuclei这款工具,它是一个快速漏洞扫描器,下载地址:
https://github.com/projectdiscovery/nuclei
或者本地安装:
apt install nuclei
使用方法:
nuclei -u http://url
实战演示
这个工具扫描出了网站存在CVE-2017-5487,CVE-2016-10924这两个漏洞,根据这两个漏洞,后来也成功的进入了后台
地球上近30%的网站使用WordPress,针对这个框架,也有专门扫描的工具,这里我推荐wpscan,wpscan 是一个扫描 WordPress 漏洞的黑盒子扫描器,安装方法如下:
apt install wpscan
使用方法:
https://www.cnblogs.com/Xy--1/p/12236684.html
总结
枚举是重中之重的,你扫描获取的信息决定了你之后能尝试的方向,找到服务版本就去google搜索有没有公开的漏洞,多在网上搜索信息,搜集的信息越多越好,关注我,之后将发布更详细的枚举教程和各种反弹shell操作与进入服务器后的各种提权方式。
|