DC9-靶机

前言:

2020年一言难尽,我的博客也断了俩月,反思了一下,主要还是懈怠了,每个月最后一天才混一篇博客,宁愿躺着发呆也不想学习。。。这不是个好兆头,所以这次把DC9这个靶机补完,也顺便立下个flag,一个月产出一篇博客是最低要求(没有任何理由),争取2020后半年越来来好~

 

下载地址

配置的环境:

kali:192.168.25.131         DC9-靶机 和 kali 在同一C段

渗透

nmap扫描网段,发现存活主机

nmap -sP 192.168.25.0/24

发现主机 192.168.25.132,判定为DC9-靶机,继续使用nmap获取详细信息

nmap -A -p 1-65535 192.168.25.132

很常规,开了个ssh和http,访问站点 http://192.168.25.132/

随便点点,发现访问display.php,会得到所有的用户信息,记录一下,猜测后期爆破可用~

访问search.php,有个搜索框,测试一下是否有注入点,输入单引号,发现url中不传递参数,是post,启动 bp测试

发现注入点,直接sqlmap一把梭

因为是post注入,可以联合bp实现注入,也可以使用sqlmap的 一些参数直接注入

如 --forms参数 ,会自动搜索表单的方式运行,这个参数是没有成功

第二种,指定参数 --data 方法 ,可以看到sqlmap已经识别出来注入点了

最后就是可以联合bp了,首先我们需要把bp中的request请求包复制出来,保存成一个txt文件。使用sqlmap的 -r 参数 调用该文本

介绍完sqlmap post注入的一些方法,现在直接开搞,注入~,

sqlmap -r 11111.txt --dbs
sqlmap -r 11111.txt -D users --tables
sqlmap -r 11111.txt -D users -T UserDetails --columns
sqlmap -r 11111.txt -D users -T UserDetails --dump
sqlmap -r 11111.txt -D Staff --tables
sqlmap -r 11111.txt -D Staff -T Users --columns
sqlmap -r 11111.txt -D Staff -T Users -C Password,UserID,Username –dump

856f5de590ef37314e7c3bdf6f8a66dc

解密为 transorbital1

登录查看,发现 File does not exist ,让人不禁想到了DC5的时候的LFI

测试一下,

成功读取到文件

现在我们已经有了账号和数据库中的一些密码,结合 /etc/passwd 文件,构造一个username.txt 和 passwd.txt

使用hydra开始爆破

hydra -L username.txt -P passwd.txt  192.168.25.132 ssh 

发现无法连接ssh,提示被拒绝

这里就不卖关子了,具体原因是靶机使用了Knockd进行防护

这个knockd.conf是一种端口试探服务器工具。
它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。
telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中,
也可以直接用nc敲击端口。

简单来说就是用来隐藏ssh登陆端口。(也就是我们之前扫描端口时发现22端口阻塞)只有我们按照设定的顺序敲击端口,防火墙才会打开登陆端口。再按照同样的方式可以使防火墙关闭ssh登陆端口,如果别人不知道我们设定的端口敲击顺序,是无法登陆ssh的。我们可以下载knock来开启远程端口

通过我们刚才的LFI漏洞可以读取该配置文件(需要一个强大的字典探测)

查看该文件,我们需要依次敲击 7469 8475 9842 端口实现敲门操作

然后再次爆破,成功得到两组

login: chandlerb   password: UrAG0D!      
login: janitor   password: Ilovepeepee

因为是复现,我就不登录chandlerb  账户,上面没有什么敏感信息和可执行程序,登录janitor用户发现一些密码

BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts

我们放到passwd.txt中继续爆破尝试,发现多了两个用户,我们登录 fredf 

 login: joeyt   password: Passw0rd
 login: janitor   password: Ilovepeepee
 login: chandlerb   password: UrAG0D!
 login: fredf   password: B4-Tru3-001

嘿嘿,发现fredf可以NO Passwd执行root权限的文件,老样子,开始提权

运行看看,提示使用  python test.py 加参数 运行!

ok,使用find命令找到该文件,查看源代码

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

脚本很简单,运行脚本时,第一个参数为要读取内容,第二个参数将读取的内容写到指定文件

ok,思路如下,我们知道,linux指定用户是否为root,我们可以通过修改/etc/passwd/文件来实现

所以,我们构造一个root权限的用户文件,写入到/etc/passwd文件中,即可成功拿下!

shadow文件:

shadow文件中第二列的格式,它是加密后的密码,它有些玄机,不同的特殊字符表示特殊的意义:

1. 该列留空,即"::",表示该用户没有密码。
2. 该列为"!",即":!:",表示该用户被锁,被锁将无法登陆,
   但是可能其他的登录方式是不受限制的,如ssh公钥认证的方式,su的方式。
3. 该列为"",即"::",也表示该用户被锁,和"!“效果是一样的。
4. 该列以”!“或”!!“开头,则也表示该用户被锁。
5. 该列为”!!",即":!!:",表示该用户从来没设置过密码。
6. 如果格式为"$id$salt$hashed",则表示该用户密码正常。其中​$id$的id表示密码的加密算法,
   $1$表示使用MD5算法,$2a$表示使用Blowfish算法,
   "$2y$“是另一算法长度的Blowfish,”$5$“表示SHA-256算法,而”$6$"表示SHA-512算法,
    
  目前基本上都使用sha-512算法的,但无论是md5还是sha-256都仍然支持。
  $salt$是加密时使用的salt,hashed才是真正的密码部分。

passwd文件每一行的格式如下:

用户名:密码hash:uid:gid:说明:家目录:登陆后使用的shell

我们造一个符合该格式的用户,一般tmp目录可写,写到该目录下

openssl passwd -1 -salt au 123456

echo 'au:$1$au$yiTIEVOOBr5S6eBjHZluV/:0:0:root:/bin/bash' >> /tmp/au
sudo ./test /tmp/au /etc/passwd

然后运行test脚本,切换到au用户,成功得到root权限

这里填个坑,我运行的时候一直用 sudo test /tmp/au /etc/passwd命令执行,

一直给我报下图问题,太坑了,我现在就是处于这个工作目录,

而我这个命令一直以fredf的权限写入/etc/passwd,所以一直不行,我一直以为是我秘钥有问题的原因,所以细节还是很重要的,太浪费时间了!!!

最后看一下flag文件,收官~

发布了67 篇原创文章 · 获赞 50 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Auuuuuuuu/article/details/104592327
今日推荐