dc-3打靶日记
1. nmap扫描
1.1 确定目标IP地址
1 |
|
通过命令去扫描当前C端下存活的ip,以下是没有打开靶机时查看的ip地址;
在打开靶机DC-3进行查询当前网段存活的IP地址:
从而得到靶机的IP地址,并且可知其80端口处于开放状态,并启动的是http服务
192.168.31.31
1.2 端口扫描
- 开放的TCP端口扫描
1 |
|
-sT
:使用tcp三次握手的过程进行探测端口是否开放(相对较慢,但相对准确);
-sS
:默认扫描方式,通过syn标志位进行检测链接是否开放(容易被防火墙挡住);
-oA
:以全格式保存在后续的地址文件中,以三种不同的后缀文件名保存;
-min-rate
:指定默认扫描的速度,在正式的护网中要比10000还慢;
-p
:指定扫描端口, -p-
:指从1到65535端口
开放端口:80
- 扫描开放的UDP端口
1 |
|
开放端口:53, 67, 68, 69, 123, 135, 137, 138, 139, 161, 162, 445, 500, 514, 520, 631, 1434, 1900, 4500, 49152
- 扫描开放的TCP端口的详细信息
1 |
|
-sV
:扫描提供服务的版本
-sC
:用默认的脚本进行扫描
-O
:扫描操作系统的版本
并没有得到什么非常有用的信息
- nmap漏扫
1 |
|
找到可能存在CSRF漏洞的目录
/index.php
/index.php/component/users/?task=remind.remind&Itemid=101
/index.php/component/users/?Itemid=101
/index.php/2-uncategorised/1-welcome
还找到了一个Joomla的sql注入漏洞,Joomla的版本号为3.7.0
一个dos攻击
2. 网页检索
2.1 only one flag
根据刚才nmap扫面到的信息可以知道开启了http服务,通过访问网页能够得到的信息有:
欢迎来到 DC-3。
这一次,只有一个flag,一个入口,没有任何线索。
要获得标志,显然必须获得 root 权限。
如何成为 root 取决于你自己,当然,还有整个系统。
祝你好运,我希望你喜欢这个小小的挑战
这已经很明显得到了这次的所有信息。
2.2 指纹信息
通过工具知道该网页的CMS框架,编程语言、操作系统等等:
CMS:Joomla
编程语言:php
操作系统:ubuntu
2.3 gubuster目录爆破
1 |
|
得到的目录信息有
http://192.168.31.31/templates/
http://192.168.31.31/includes/
http://192.168.31.31/language/
http://192.168.31.31/components/
http://192.168.31.31/libraries/
http://192.168.31.31/administrator/
发现了后台管理系统
http://192.168.31.31/administrator/
2.4 漏洞搜索
searchsploit
1 |
|
搜索到的漏洞相当之多,可以进行的尝试也相当之多
根据上述nmap扫描得到的版本号3.7.0,进行进一步的详细搜索
1 |
|
查看器详细信息并复制到当前目录
根据漏洞记录的信息知道录用方法
1 |
|
在下一小节对其进行尝试
metasploit
1 |
|
通过metasploit搜索到的漏洞也不少,可以进行简单的尝试
由于之前通过nmap扫描扫到一个2017年的sql注入,这里刚好也有一个sql注入,我们就先试这个exploit/unix/webapp/joomla_comfields_sqli_rce
1 |
|
1 |
|
总结:失败!
2.5 sqlmap注入测试
根据上一小节的searchsploit
搜索得到的信息对其进行sqlmap注入测试
1 |
|
1 |
|
1 |
|
这里已经得到了用户的用户名和密码列,我们查看相应内容,观察是否存在相应的用户名和密码
1 |
|
确实得到了乡音的用户名和密码,但是密码经过了hash加密,我们可以尝试通过hash值保存到user_admin_pw.hash中,然后再进行进一步的碰撞破解。、
name: admin
username: admin
password: $2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu
1 |
|
成功爆破出相应的密码,所以我们此时应该是得到了相应的用户名和密码;
username: admin
password: snoopy
好的,成功登录后台管理系统!
2.6 getshell
在后台管理系统中找到了php文件处,有了php文件,可以考虑各种拿shell的方法,包括但不限于一句话木马
两个模板中都有php文件,但经过尝试只有下方的模板文件才能够起到效果
只有index.php
才是可访问的文件,也是我们正常情况下提前考虑的文件
我们通过在index.php
中写入我们的木马进行getshell,当然可以选择一句话木马,然后通过中国菜刀进行了连接等等。各种方式,似乎并没有过滤;
方法一:通过proc_open
反弹shell
输入我们通过proc_open反弹shell的php代码, 点击左上角的保存,然后打开攻击机的监听;再访问相应的php网页,即可获得相应的shell
1 |
|
方法二:通过一句话木马,蚁剑连接
1 |
|
结论:shell拿到了,但不是root权限,接下来就是提权
3. 提权
最详细Linux提权总结(建议收藏) - 随风kali - 博客园 (cnblogs.com)
3.1 查看是否存在相关的提权命令
1 |
|
命令是有的,但是并没有相关的命令存在suid权限,所以相应的命令并不可以用来做提权
3.2 内核漏洞提权
通过以下指令查询使用的操作系统信息和内核相关信息
1 |
|
可以知道相关的操作系统版本和发行号等等
Ubuntu 16.04 LTS
Linux DC-3 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:34:49 UTC 2016 i686 i686 i686 GNU
通过searchsploit
搜索得到以下的内核漏洞搜索结果
1 |
|
搜索出来的漏洞不少,可以对其中的一些进行尝试;一般后缀为txt的漏洞利用都比较容易实现,现场时以下符合条件的漏洞吧。
最后成功的漏洞是39772.txt
,通过下方命令将漏洞文本复制到当前目录
1 |
|
可知器利用方式,通过下载
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
链接的压缩包进行利用,然后进入相应目录,执行./compile.sh
和./doubleput
来到我们getshell的机器中利用wget
下载链接的压缩包
1 |
|
通过命令解压文件
1 |
|
1 |
|
1 |
|
1 |
|
通过指令启动一个交互式界面,
1 |
|
最后,我们确实得到了该机子的root权限,最后的目的就是找到flag即可;
通过以下命令寻找flag文件
1 |
|
最终也是成功的找到了flag并执行,over!
4. 总结
- 拿站后进行提权的方式多样,其中包括
- 可执行的二进制文件具有suid权限,特别是相关命令的提权
- 内核漏洞脏牛提权
- 密码复用提权
- 明文root密码提权
- 第三方服务提权
- sqlmap的使用方法多样,通过多种使用方法可以实现不同的效果
- 拿到网站后台管理系统后,可以寻找发布网页或者网页本身内容的php文件,通过插入一句话木马或者反弹shell实现getshell