当前位置:   article > 正文

靶机渗透之DC-9_dc-9 靶机nat 探测不到

dc-9 靶机nat 探测不到

前言

这是DC靶机系列的终章了,所以我决定把我的思路以及走过的弯路详细记录一下。权当抛砖引玉,希望对大家有帮助。

一、信息收集

扫描网段,靶机地址为192.168.145.129。

nmap -sP 192.168.145.*

对端口等信息进一步探测,可以看到开放了80端口,而22端口则显示为filtered(这里借用了别人的截图,懒得再重新装靶机了),端口状态filtered由于报文无法到达指定的端口,nmap不能够决定端口的开放状态。

nmap -sS -A -p1-65535 -T4 192.168.145.129

扫描网站目录,我都逐个访问了一下没啥有用的信息。

dirsearch -u http://192.168.145.129/

收集一下网站中间件等信息,中间件为apache2.4.38,就没有其它啥有用的信息了。

whatweb -v 192.168.145.129

二、getshell

直接访问网站,随便点了一下,没有啥特别的。

有个登录框,然后我就弱口令爆破试了一下,没爆破出来。

我又去网上查了一下apache2.4.38漏洞,说是存在一个ssrf漏洞。我就复制别人的poc来打,但还是失败告终。然后我就sqlmap跑了一下登录的地方,发现没有sql注入。

sqlmap -r 2.txt

此时我就没思路了,抓包胡乱测试了一会,然后突然想到在Search这里也存在参数。

把Search的包抓下来,放到sqlmap跑一下,存在sql注入。

sqlmap -r 1.txt

查看库,一共有三个。

sqlmap -r 1.txt --dbs

我们先看users里面的表,只有一个表,rong这个表是我后面自己创建的不必理会。

sqlmap -r 1.txt -D users --tables

看一下表里面都有啥吧。

sqlmap -r 1.txt -D users -T UserDetails --columns

无需多言,查看username和passwd这个两个字段值,一堆用户名和密码。

  1. sqlmap -r 1.txt -D users -T UserDetails -C username --dump
  2. sqlmap -r 1.txt -D users -T UserDetails -C password --dump

我们把它分别保存到user.txt和passwd.txt中,然后去爆破一下登录框。别看有那么多的绿色的,其实一个都不对,全是登录不上的。

hydra -L user.txt -P passwd.txt -t 6 -vV -e ns 192.168.145.129 http-post-form "/manage.php:username=^USER^&password=^PASS^&submit=login:username or password is nois not exists"

然后我想起前面还有个Staff的库,看看里面有啥玩意。

sqlmap -r 1.txt -D Staff --tables

查看Users表,没想也有Username和Password。

sqlmap -r 1.txt -D Staff -T Users --columns

查看Password和Username,用户为admin,密码为transorbital1

  1. sqlmap -r 1.txt -D Staff -T Users -C Username --dump
  2. sqlmap -r 1.txt -D Staff -T Users -C Password --dump


去登录看看,可以登录上去。

随便点了一下,发现在Add Record可以添加东西。我试了试在Position和Email写入一句话木马,不过没啥用,被过滤了单引号好像。

想起前面有一堆的账号和密码,拿去ssh爆破一下,发现无法连接,提示被拒绝,并且端口是过滤状态。这时候我就没思路了,去看一下别人的思路,说是从File does not exits中猜测可能存在文件包含漏洞。

测试一下,还真的有哩,这里读取了/etc/passwd。

http://192.168.145.129/welcome.php?file=../../../../etc/passwd

其中的/etc/knockd.conf里的配置会导致ssh连接被拒绝,它通过动态的添加iptables规则来隐藏系统开启的服务。使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。举个例子就明白了,下面我们就读取/etc/knockd.con,可以看见它配置了7469,8475,9842三个端口。意思就是我们要按照顺序访问这个三个端口,22端口才会开启。

http://192.168.145.129/welcome.php?file=../../../../etc/knockd.conf

按照顺序访问一下端口咯,最后再扫一下22端口发现变成open了。

  1. nmap -p 7460 192.168.145.129
  2. nmap -p 8475 192.168.145.129
  3. nmap -p 9842 192.168.145.129

接下来还是九头蛇爆破ssh,爆破出来三个账号。

hydra -L user.txt -P passwd.txt  ssh://192.168.145.129

三、提权

三个账号都远程连接上去看看,没发现有啥提示。然后三个账号都查看了一下sudo权限,发现没有。

查看suid权限,去网上搜了一下ssh-keysign提权,搞了一会发现不行。

find / -perm -u=s -type f 2>/dev/null

然后又在网站目录下面找到mysql的配置文件,连接上去想着能不能udf提权,发现mysql不是以root权限运行滴,也就提权不了。

思路又断了,这里我就直接说吧。其实在/home/janitor目录下面是有提示的,只不过是被隐藏了。要数输入ls -la才能发现,而我习惯输入ls来查看文件,所以就没发现(逆天了,老弟)。其他两个用户对应的目录下面没有东西,只有janitor用户才有。

进入到目录里面,发现有个密码文件。

把里面的密码添加到上面的passwd.txt文件中,再去ssh爆破。

ssh爆破出新的账号。

远程连接上去看看,查看是否具有sudo权限啥的,test这个玩意具有sudo权限。

直接去看看这是个啥玩意,cat查看了一下,一堆的乱码,那么估计是一个exe程序啥的。然后我就往上层目录看看,在/opt/devstuff发现有test.py和test.spec文件。

我粗略看了一下,这个test.py是告诉我们那个test程序是干嘛的,而test.spec是生成那个test程序的(因为里面是c代码)。解释一下test.py的代码,就是读取第一个文件的内容且赋值到output变量上,再写入第二个文件里面。

举个例子

./test.py 1.txt 2.txt

代码把1.txt的内容追加到2.txt里面。

既然我们的test是追加内容的程序而且有root权限,那我们直接往/etc/passwd文件写入一个有root权限的账号即可,先生成加密的密码。

openssl passwd -1 -salt 用户名 密码

再在靶机的/tmp目录下创建个文件(这个是存放临时文件的目录,谁都有权限创建文件),并且按照root账号的格式往里面写入一个账号密码。

echo 'test:$1$hack$xR6zsfvpez/t8teGRRSNr.:0:0::/root:/bin/bash' > a

最后运行test程序,把a里面的内容写入/etc/passwd里面。

sudo ./test /tmp/a /etc/passwd

切换test账号即可。

到root目录里面查看flag。

四、总结

这就是DC靶机的最终章了,写的比较详细,基本我走过的弯路都记录下来了,希望对大家有帮助。DC之旅到此结束了,希望大家网安道路越走越远。

最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号