D0g

我愿乘风破浪,踏遍黄沙海洋

©D0g
Powered by LOFTER
 

一次模拟渗透测试

测试背景:在网上找的一个靶场模拟渗透测试,有些是自己做出来的,也有些是参考攻略做出来的。

任务描述:在本次测试中一共有20关即20个flag分布在不同的地方,分别找出来并提交。

 

第一关题目:http://172.16.1.110 针对入口点 IP 地址进行端口扫描,将其所开放的端口号(仅需扫描小于 1000 的端口)从小到大排列后得到的字符串算其 32 位小写 MD5 哈希得到 Flag01

思路:看到提示端口扫描,我就想到用nmap进行扫描,打开kali进入,终端输入 nmap -vv -Pn -p 1-1000 172.16.1.110 即可扫描出来开放的1000以下端口号,然后按照题目要求即可得到flag01为7d812c5bf9eba265c3d017e9416c12a8





其中-vv参数表示输出详细报告结果,-p指定端口号范围,-Pn为扫描前不进行ping操作,像我们学校的官网就禁止了ping,如果扫描时不加Pn是扫不出开放端口的



 

第二关题目:根据扫描发现的端口信息,寻找sync中可能存在的漏洞。找到flag02

思路:扫描出来的几个端口里我只知道ssh和http,先不管,百度了一下rpcbind和rsync,发现rsync是存在漏洞的,而且还发现一篇肉肉学姐在乌云提交的一个关于rsync的漏洞

http://wooyun.org/bugs/wooyun-2010-061561然后就尝试利用漏洞。



rsync 172.16.1.110::    /*rsync连接

rsync 172.16.1.110::www/   /*列出这个目录下的文件

rsync 172.16.1.110::www/flag02  /*把flag02下载保存到本地root目录

然后我也顺便把wwwbackup.zip一起下载下来了,估计就是网站的备份源码,然后cat flag02读出flag02并提交



 

第三关题目:对之前得到的www.backup压缩文件进行解密,拿到最终Flag03

思路: 感觉这关有点坑,那个下载下来的压缩文件有密码,但是没有对密码做任何提示。。。看攻略结果密码为纯小写四位字母test。。。。

过程如图,用的是kali下的fcrackzip:



其中 -b参数指定暴力枚举,-v参数显示破解信息,-u参数进行解压测试以排除错误密码,-c指定字符集,-c a指定字符集为纯小写字母,-l指定密码长度

 

第四关题目:寻找数据库链接信息,拿到最终 Flag04

思路:解压文件后,到config里找到config_ucenter.php这个文件,打开就看到flag04了







 

第五关题目:提取uckey,进行菜刀连接,拿到webshell,寻找flag05

思路:uckey在第四关的时候就获得了,就在flag04的下面,



打开目标网站看看,是个discuz的网站



百度了一下,发现
Discuz X1.5 X2.5 X3用uc_key来get webshell,

网上找了个python脚本来利用,过程如图



菜刀连接成功,



但是在default目录下没找到flag05,权限低只能浏览default目录下的文件,而且无法执行命令



于是传了个大马上去,但也无法直接跳转到default的上级目录,于是执行命令ls  /home/wwwroot  找到了flag05





 

第六关题目:通过信息收集的过程查看操作系统版本得到 Flag06

思路:在大马里面执行uname -a 看系统信息,也没发现什么,



在执行一下cat etc/issue ,发现了flag06



/etc/issue文件实际上就是当系统启动是显示的内容,可以在里面自己添加内容。

 

第七关题目:进行数据库连接,拿到最终 Flag07

思路:因为已经有了webshell,直接到数据库配置文件里找数据库的帐号和密码,如图,



然后直接用菜刀连接数据库



连接成功后即可在dztest数据库pre_flag!!!表里找到flag,如图



 

第八关题目:查看所有临时目录,拿到最终 Flag08

思路:因为网站服务器为linux系统,临时目录有/tmp 和/var/tmp,然后在/tmp下没发现什么,最后在/var/tmp里发现了一个lcx.py文件,打开就看到flag08了



 

第九关题目:找到内网主机,进行端口转发,寻找内网主机web上的Flag09

思路:进行端口转发的工具已经有了,就是在上一关得到的lcx.py,然后就是扫描内网了,先看下内网的ip地址,执行ifconfig发现有个eth1网卡对应的ip为10.0.0.1,



然后上传一个扫描脚本hostscan.php进行扫描,扫描得到的结果如图

发现了一个内网主机10.0.0.2开放了21、80和3306



 

然后执行python /var/tmp/lcx.py -l 0.0.0.0 -p 20021 -r 10.0.0.2 -P 21

python  /var/tmp/lcx.py -l 0.0.0.0 -p 20080 -r 10.0.0.2 -P 80

分别把内网主机的21、80端口转发到172.16.1.110的20021和20080端口,题目要求在内网主机的web上找flag,于是访问http://172.16.1.110:20080就是内网的web服务了,即可只看到flag09



 

第十关题目:刺探发现的FTP服务版本,拿到最终 Flag10

思路:因为已经转发了内网主机的21端口,于是直接在浏览器上访问,但是除了要你输入帐号和密码外什么都没有,



于是用命令行连接看看,已连接ftp就发现了flag10



 

第十一关题目:对FTP服务进行暴力枚举,拿到最终 Flag11

思路:其实我直接就猜到了弱口令是admin和admin,但本着学习的态度,还是学了下利用hydra暴力破解ftp,如图



然后尝试进行登录,但是却无法列出文件,究其原因是因为我们是转发内网出来的端口,但是ftp下载文件是需要其它端口的,而我又没有转发端口。于是准备到webshell上curl一下ftp

执行命令curl ftp://admin:admin@10.0.0.2

成功访问内网ftp,然后就发现了flag11和下一关的hint





 

第十二关题目:根据之前得到的信息,对发现的编码进行解码,拿到最终 Flag12

思路:查看上一关发现的hint,发现是一堆编码,



以前在了解jsfuck编码的时候,就了解了另外一种编码jjencode也就是这一关hint的编码方式,还有另外一种aaencode编码,这三种编码都是同一个日本人发明出来的,具体介绍看这个人的网站http://utf-8.jp/,

但是他网站上没有提供对jjencode的解码方法,网上找了下,在github上找到了解密的脚本

https://github.com/jacobsoo/Decoder-JJEncode/blob/master/decoder.html

复制下来保存为html,输入密文即可解密



解密后又是一段eval加密,继续解密eval即可得到flag和下一关的提示



 

第十三关题目:文件包含,根据之前得到的信息,对目录进行暴力枚举,猜到目录后,拿到最终 Flag13

思路:题目提示文件包含,在根据上关得到的消息,访问http://172.16.1.110:20080/includefile/ 结果如图



那文件包含应该是像这样的 /?page=

察看源码发现提示,也就是要找到flag文件,



通过一个报错信息可以发现内网主机是windows系统



文件包含可以利用windows的一个安全漏洞,比如当输入i<<的时候可以包含index.php,有这个i开头的问件就会返回正确,

如果输入k<<报错,就说明没有k开头的文件,



利用这个就可以暴力枚举目录

先用burp跑一下第一个字符有哪些存在,



发现只有h和i有反应,i可能就是index,,于是利用一个大神写的python脚本修改了,把第一个爆破的字母改为h,很快就枚举出了flag文件





访问http://172.16.1.110:20080/includefile/?page=h4cKtHepl4nET/ 是正确的但是没有flag,于是直接访问

http://172.16.1.110:20080/includefile/h4cKtHepl4nET/



就有了flag和下一关的提示

 

第十四关题目:根据之前得到的信息,发现短路径漏洞,拿到最终Flag14

思路:以前看暗月教程的时候了解过短路径漏洞,就是因为在windows下文件名过长,只显示前6位+~1+后缀名,可以用来猜目录、文件,经过测试,当访问http://172.16.1.110:20080/hellon~1/时就行了



 

第十五关题目:数据库目录,根据之前得到的信息,下载网站源码,分析漏洞,拿到最终 Flag15

思路:访问http://172.16.1.110:20080/exploitweb/,发现网站显示效果不好,因为这是通过转发内网的端口。



于是设置下socks5代理,上传一个socks5代理的python脚本并运行,再在浏览器里设置好socks5代理,再来访问就好了







访问发现是稻草人cms,根据提示下载一个网站源码,发现数据库目录为data,于是直接发问data就找到flag和网站漏洞提示



 

第十六关题目:根据之前得到的信息,下载数据库,拿到最终的flag16

思路:用扫描器扫了一下,没扫到数据库,然后本地搭建环境安装网站时得到了数据库地址,默认为sqlite数据库,如图



然后把数据库下载下来



接着用kali下的hexorbase里的sqlite直接打开这个数据库,在dcr_qy_admin表里发现了flag



 

第十七关题目:根据之前得到的信息,猜想可以插入我们的恶意代码得到一句话后门。通过菜刀连接,找到flag17

思路:因为有了后台帐号密码,就想登录后台看看,可是找不到后台,

于是只有按题目说的去插如恶意代码,根据在十五关得到的提示,在结合本地安装程序的代码可以看出,他应该是修改了代码,把安全过滤的删除了





然后就在测试网站上面找到了一个提交在线订单的地方



全部写一句话,然后菜刀连接数据库地址,就得到了webshell



然后就找flag文件,懒得一个一个目录去翻,就在虚拟终端执行命令,先CD到C盘根目录,然后dir     /s  flag* >  c:\1.txt  ,查找当前目录下所有包含flag的文件名



可以发现不仅把flag17找出来了,还顺便把flag18也找出来了,分别打开对应文件就是flag了



 

第十八关题目:垃圾筒,通过获取到的 Web Shell,读取到 Flag17 与关于 Final Flag 的提示,找到flag18

思路:上一关就找到了,也没啥可说的了,直接打开



 

第十九关题目:通过一番发掘,得到 C:$Recyle.Bin 目录下的 Flag18与同目录的 shadow.bak,联想 Flag17 给出的提示找到flag19

思路:在flag18的同目录下有个shadow.bak,已看就知道是linux的帐号密码文件,先确认下,



根据17关那里得到的要求是FinalFlag格式为md5(user:password),

要先对密码哈希进行破解,用john很快就破解出来了



然后对其进行md5加密就得到了flag



 

第二十关题目:(没有题目,自己找答案)

思路:最终在C:/user/boss目录下发现一张图片,下载下来对其进行各种隐写分析无果,最后在偶然发现,其实答案就在图片右上角摆着呢,只是不太容易看见,考眼力



 

 

总结:涨姿势了...........