靶场介绍
这是一个vulnhub里的一个初级的渗透靶场,主要是为了熟悉一下各个信息搜集工具的使用,以及跟着红队笔记的视频来学习一下渗透思路打一下基础。
这里的环境就一台靶机,直接打开vmx即可进行测试。
信息搜集
主机存活探测
渗透第一步需要做的就是信息搜集,我们先要确定主机的存活,确认我们要攻击的主机。
这里用几种方式来进行探测主机存活
namp
namp -sn 192.168.20.0/24 # -sn 采用四种不同类型的数据包探测目标主机是否在线,只进行主机探测不进行端口扫描
|
arp-scan
经过上面两种探测之后可以知道我们的目标靶机就是192.168.20.129,接下来就是对端口进行扫描搜集一下有哪些服务
端口扫描探测
nmap -sT 192.168.20.129 # -sT 使用TCP进行端口扫描 #还可以用这个命令扫描制定其他要求 nmap -sT --min-rate 10000 -p- 192.168.20.129 -oA nmap/ports# --min-rate,设置最低发包速率,这里为每秒一万次;-p- 是扫描1-65535端口的简化写法;-oA 将结果的所有格式都导出来,如果端口多的话可以方便我们查看保存下来
|
发现这里开启了ftp、ssh、http、mysql服务
红队笔记这里还有一个很好的习惯,就是把端口提取出来,如果端口太多的话这样就会会很方便,现在我们从文件中将这四个端口提取出来,然后我们将其赋值给一个变量就可以直接用就会方便很多
grep open ports.nmap grep open ports.nmap| awk -F '/' '{print $1}' #就是以斜杠为分隔符,然后打印第一个字段 grep open ports.nmap| awk -F '/' '{print $1}' | paste -sd ',' #将字符合并到一行并以逗号为分隔符 # 这里 awk 默认会将每一行作为一个记录来处理
|
这样就可以赋值给一个变量,然后-p参数就能直接探测该变量中的端口了
接下来确认端口之后就对这些端口的具体服务信息进行扫描
ports=$(grep open ports.nmap| awk -F '/' '{print $1}' | paste -sd ',') nmap -sT -sV -sC -O -p $ports -oA nmap/details # -sV 探测服务版本;-sC 使用默认脚本扫描 -O 探测操作系统版本
|
这样我们就搜集到了相关的信息就可以开始选择性开始对具体端口进行渗透
还可以使用fscan直接一条命令扫出来
./fscan_amd64 -h 192.168.20.129
|
开始渗透
ftp服务
从上面可以看是一个ftp匿名服务器,我们就可以直接登陆看看有什么东西
ftp 192.168.20.129 #匿名ftp用户名都是anonymous
|
这里列一下ftp常用命令:
查看指定后缀文件 dir .jpg
删除单个文件 delete 文件名
删除多个文件 # 格式:mdelete remote-files [ ...] mdelete 文件名
重命名文件 # 格式:rename filename newfilename rename test atest
上传文件 # 格式:put local-file [remote-file] put /home/a.txt /mydata/b.txt
下载单个文件 # 格式:get [remote-file] [local-file] get /mydata/a.txt /apps/b.txt
下载多个文件 # 格式:mget filename [filename ....] mget *.*
输入?可以查看所有指令
|
登陆之后看看都有什么
我们可以输入binary切换成二进制传输模式,防止有些可执行文件损坏
然后我们进去这些目录把文件都下载下来,我们可以使用prompt命令关掉交互模式,这样下载文件就不需要我们确认更加方便
然后去查看一下文件内容看有没有什么提示
给了一串md5和base64的字符串,去解码看一下有什么用
md5解密出来为
base64解密出来
然后就是一些员工名单:
Naomi.W - Manager Hector.A - IT Dept Joseph.G - Web Design Albert.O - Web Design Gina.L - Inventory Rico.D - Human Resources
|
然后就是下面的翻转文字,这里截图旋转一下
似乎就是提示从这里入手不太行
然后还发现了一个有意思的,这些文字logo网上可以找到ascii转logo的网站,这里是一个网站:https://patorjk.com/software/taag/#p=testall&f=Isometric2&t=helloworld%0A
80端口
这里不太行就开始看一些他的http页面吧
进去之后是一个apache的页面
找不到什么能用的东西就直接开始端口扫描
dirsearch -u "http://192.168.20.129/"
|
这里还学到一个新的目录扫描工具gobuster,他的扫描命令如下:
gobuster dir -u "http://192.168.20.129/" --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt # 其他的字典可以去该目录下查看
|
gobuster的三种模式
dir:传统的目录爆破模式;
dns:DNS子域名爆破模式;
vhost:虚拟主机爆破模式;
现在去相关端口看看有什么东西
前面两个都访问不了,最后一个有东西,似乎是一个cms的安装界面
http://192.168.20.129/administrator/installation/
|
这里吓得我不敢继续了,要是覆盖了这咋整正常人谁把这玩意放上来啊(
然后随便填了东西试了一下
root用户是无法创建的
emmm然后有点无从入手了,因为也不知道是什么cms,这是我把鼠标移到问号上在底下突然有了提示,是Cuppa CMS
这样就好办了,可以去搜一下这个CMS有没有漏洞,难绷搜了一下都是直接指向这个靶场的wp。。
那这里就学习红队笔记里的搜索方法,用到了searchsploit工具
searchsploit
是一个用于Exploit-DB
的命令行搜索工具,可以帮助我们查找渗透模块。
Exploit-DB是一个漏洞库,Kali Linux中保存了一个该漏洞库的拷贝,利用上面提到的命令就可以查找需要的渗透模块,它将搜索所有的漏洞和shellcode而且该漏洞库是保存在本地的,在没有网络的情况下也可以使用。
这里copy一下别人翻译的选项,参考文章:https://juejin.cn/post/7026899204446355486
Usage: searchsploit [options] term1 [term2] ... [termN] ========== Examples ========== searchsploit afd windows local searchsploit -t oracle windows searchsploit -p 39446 searchsploit linux kernel 3.2 --exclude="(PoC)|/dos/" For more examples, see the manual: https://www.exploit-db.com/searchsploit/ ========= Options ========= -c, --case [Term] 区分大小写(默认不区分大小写) -e, --exact [Term] 对exploit标题进行EXACT匹配 (默认为 AND) [Implies "-t"]. -h, --help 显示帮助 -j, --json [Term] 以JSON格式显示结果 -m, --mirror [EDB-ID] 把一个exp拷贝到当前工作目录,参数后加目标id -o, --overflow [Term] Exploit标题被允许溢出其列 -p, --path [EDB-ID] 显示漏洞利用的完整路径(如果可能,还将路径复制到剪贴板),后面跟漏洞ID号 -t, --title [Term] 仅仅搜索漏洞标题(默认是标题和文件的路径) -u, --update 检查并安装任何exploitdb软件包更新(deb或git) -w, --www [Term] 显示Exploit-DB.com的URL而不是本地路径(在线搜索) -x, --examine [EDB-ID] 使用$ PAGER检查(副本)Exp --colour 搜索结果不高亮显示关键词 --id 显示EDB-ID --nmap [file.xml] 使用服务版本检查Nmap XML输出中的所有结果(例如:nmap -sV -oX file.xml) 使用“-v”(详细)来尝试更多的组合 --exclude="term" 从结果中删除值。通过使用“|”分隔多个值 例如--exclude=“term1 | term2 | term3”。 ======= Notes ======= * 你可以使用任意数量的搜索词。 * Search terms are not case-sensitive (by default), and ordering is irrelevant. * 搜索术语不区分大小写(默认情况下),而排序则无关紧要。 * 如果你想用精确的匹配来过滤结果,请使用用 -e 参数 * 使用' - t '将文件的路径排除,以过滤搜索结果 * 删除误报(特别是在搜索使用数字时 - i.e. 版本). * 当更新或显示帮助时,搜索项将被忽略。
|
那我们就直接搜索cuppa cms相关的漏洞
发现有一条exp我们可以把他下载下来看一下利用方式
searchsploit cuppa cms -m 25971 cat 25971.txt
|
我们看到了关键的利用路径和方式,是一个本地/远程文件包含漏洞,外加一个目录穿越,那现在我们就去测试一下
但是直接使用cuppa的路径是无效的
联想到我们刚刚的安装页面是administrator/installation,猜测cuppa被替换成administrator
发现能够访问,但是没有东西读回来,我们burp抓包看一下
发现还是没什么东西,换个请求方式看看
发现能读了,我们去读一下/etc/shadow
发现密码都出来了,我们可以用john去爆破一下,把shadow的内容都copy下来保存成文件
看到两个用户的密码被爆出来了,www-data一般是低权限的用户,我们就去试一下w1r3s这个用户,前面扫出来22的ssh服务,那我们就可以用ssh去连接看看
ssh连接
拿到账户密码之后去ssh连接
成功登陆!
id #打印真实以及有效的用户和所在组的信息 sudo -l #查看有哪些系统权限,列出目前用户可执行与无法执行的指令
|
发现拥有所有sudo权限,那我们就可以直接切换root用户了!
最后查看root目录下的flag.txt
成功拿下这台主机!
hydra
这里还可以用hydra来爆破ssh,来学习一下
Hydra是一款非常强大的暴力破解工具,它是由著名的黑客组织THC开发的一款开源暴力破解工具。
参考文章:https://zhuanlan.zhihu.com/p/397779150
这里贴一下基本使用语法和参数
参数: -l login 小写,指定用户名进行破解 -L file 大写,指定用户的用户名字典 -p pass 小写,用于指定密码破解,很少使用,一般采用密码字典。 -P file 大写,用于指定密码字典。 -e ns 额外的选项,n:空密码试探,s:使用指定账户和密码试探 -M file 指定目标ip列表文件,批量破解。 -o file 指定结果输出文件 -f 找到第一对登录名或者密码的时候中止破解。 -t tasks 同时运行的线程数,默认是16 -w time 设置最大超时时间,单位 -v / -V 显示详细过程 -R 恢复爆破(如果破解中断了,下次执行 hydra -R /path/to/hydra.restore 就可以继续任务。) -x 自定义密码。
|
service:指定服务名,支持的服务跟协议有:telnet,ftp,pop3等等。 注意: 1.自己创建字典,然后放在当前的目录下或者指定目录。 2.参数可以统一放在最后,格式比如hydra ip 服务 参数。 3.如果能确定用户名一项时候,比如web登录破解,直接用 -l就可以,然后剩余时间破解密码。 4.缺点,如果目标网站登录时候需要验证码就无法破解。 5.man hydra最万能。 6.或者hydra -U http-form等查看具体帮助。
|
可以先构造一个用户字典用于爆破:
hydra -L user.list -P /usr/share/wordlists/rockyou.txt -t 4 ssh://192.168.20.129
|
难绷没跑出来,这我也不知道为什么了,这字典明明很大
搜了一下发现也是有computer密码的
然后我把w1r3s放到第一个,跑了好一会终于有了
mysql服务
这里可能会存在没有设置密码直接登陆的情况,可以试一下,不过基本都是不可能的,所以一开始就没想着先试它
mysql 192.168.20.129 -u root -p
|