靶场实战(11):OSCP备考之VulnHub Insanity 1

靶场思路

  1. 主机发现

  2. 端口发现(服务、组件、版本)

  3. 漏洞发现(获取权限)

    1. 21端口/FTP服务

      1. 组件漏洞

      2. 口令漏洞

    2. 22端口/SSH服务

      1. 组件漏洞

      2. 口令漏洞

    3. 80端口/HTTP服务

      1. 组件漏洞

      2. URL漏洞(目录、文件)

  4. 提升权限

    1. elliot用户

      1. sudo

      2. suid

      3. cron

      4. 内核提权

      5. 信息收集

一、主机发现

本次靶场是Insanity: 1[1],指定目标IP,不涉及主机发现过程。

二、端口发现(服务、组件、版本)

使用命令sudo -u root nmap 172.16.33.55 -n -Pn -p- --reason -sV -sC -O,发现主机开放的端口、提供的服务、使用的组件、组件的版本。

c76e7b04b98bdc58cb945cde603cd3e5.png

开放的端口

提供的服务

使用的组件

组件的版本

21/tcp

ftp

vsftpd

3.0.2

22/tcp

ssh

OpenSSH

7.4

80/tcp

http

Apache httpd

2.4.6

-

os

CentOS Linux

三、漏洞发现(获取权限)

21端口/FTP服务

组件漏洞

使用命令searchsploit vsftpd 3.,未发现vsftpd 3.0.2组件的Nday漏洞。

29917d58c50f57a8984f620e592e3712.png

口令漏洞

使用命令ftp 172.16.33.55连接FTP服务,使用匿名账号anonymous空口令登录。使用命令ls -la查看文件情况,没有发现文件,使用命令bye退出FTP服务。

e5785ab308607525f6926ef2c21b99f7.png

使用命令ftp 172.16.33.55连接FTP服务,使用前面nmap发现的ftp账号和空口令登录。使用命令ls -la查看文件情况,没有发现文件,使用命令bye退出FTP服务。

3c03b1902078489ec91879d2bc5dfa6f.png

22端口/SSH服务

组件漏洞

使用命令searchsploit OpenSSH 7.4,发现组件OpenSSH 7.4存在3个用户名枚举的EXP。

bc15ed78faeb3e1d665cfa17e0f38794.png

使用命令searchsploit -m EXP的ID将EXP拷贝到当前目录,发现3个EXP都是同一个漏洞CVE-2018-15473,其中2个EXP还是已经被验证过的。那么策略就是用这2个被验证过的EXP打一下,成就成,不成就算了。

64ea13054093e39deff4e41354bbd3bc.png

使用命令grep print 45233.py | head -n 1发现print语句没有括号,所以45233.py脚本是用Python2编写的。使用命令python2 45233.py获得参数--userList USERLIST hostname,基于参数构造命令python2 45233.py --userList ../SSH/ssh_user.txt 172.16.33.55枚举用户名,发现一堆报错,于是决定放弃。

242e2bc36f39df91e54dde5e61c1d5cf.png

使用命令grep print 45210.py | head -n 1发现print语句没有括号,所以45210.py脚本是用Python2编写的。使用命令python2 45210.py获得参数hostname username,看来不能用字典,只能一个个用户名枚举,或者for循环枚举。基于参数构造命令python2 45210.py 172.16.33.55 root枚举用户名,发现存在root用户。但我敏感的职业嗅觉告诉我小心有诈,通过命令python2 45210.py 172.16.33.55 onemorethink发现存在onemorethink用户,看来EXP有误报。

ee855c18edbbb3e9e1fef19407c449dc.png

口令漏洞

使用命令hydra -C /usr/share/seclists/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt 172.16.33.55 ssh,未发现弱口令。

c29ee255f43b490a392e19dd45c3bac6.png

80端口/HTTP服务

组件漏洞

01、中间件组件:使用命令searchsploit Apache httpd 2.4.,未发现Apache httpd 2.4.6组件的Nday漏洞。

47279038ff8888e50e55e339190454c5.png

02、应用组件:使用浏览器插件Wappalyzer自动识别应用组件,发现Popper和lsotope比较陌生。

5b6f5fc3a3a4e236632164004fe18ef3.png

使用命令searchsloit popper发现Popper组件存在3个EXP,经了解原来是Popper网页邮箱的漏洞,不是这里Popper.js脚本的漏洞。

4257520434228d278ced5e9881babf4a.png

使用命令searchsploit lsotope以及网上搜索,未发现lsotope组件的Nday漏洞。

3b5171fc97d2b82c0c81b7ec1e8b779c.png

通过浏览器浏览的方式,发现网站是基于Colorlib主题搭建的,搜索相关漏洞只发现XSS漏洞,需要有人点击触发,这种靶机没人给你点。

d6d05e685ce551751ae2b3d4e40b4124.png

URL漏洞(目录、文件)

01、直接访问:浏览器打开http://172.16.33.55/,发现相关按钮都是href="#"的伪连接,是个静态网站,没有漏洞点。

e4f776a1a37d3fc6c2d38346cc1bf0dc.png

02、目录扫描:使用命令dirsearch -u http://172.16.33.55/ -x 403扫描网站的目录和文件,有不少收获。逐个打开浏览一遍,发现/monitoring/login.php文件、/news文件、/phpmyadmin 文件、/phpinfo.php文件、/webmail文件等还挺有意思。

f794ab9b6384f60c5242bfe65baf524e.png

02-01、SquirrelMail:打开全部文件,其中/webmail文件打开后会跳转到/webmail/src/login.php,映入眼帘的SquirrelMail version 1.4.22直接击中灵魂。

f39b99c5f650d064fac08223a121da56.png

02-01-01、使用命令searchsploit SquirrelMail 1.4.22,发现SquirrelMail 1.4.22组件存在远程代码执行漏洞。使用命令searchsploit -m 41918将EXP拷贝到当前目录,发现EXP没被验证过。使用命令vim 41910.sh进行代码审计,未发现脚本中存在恶意代码,同时获得了脚本参数,但也发现脚本需要网站的账号密码才能执行。构造参数执行命令./41910.sh http://172.16.33.55/webmail/src/redirect.php,果然需要网站的账号密码才能执行。

25628255ed7a8acbf339cab12f2f2b7e.png

8c997d7d327e00b0ba1e0703743ea157.png

因为SquirrelMail是个邮件系统嘛,猜测账号可能是邮箱,所以打开http://172.16.33.55/news/的时候,映入演练的邮箱hello@insanityhosting.vm再次击中灵魂。

使用BurpSuite的Intruder爆破该邮箱的密码,结果是全都响应Unknown user or password incorrect.,真是有心栽花花不开啊。

49489530f8b25b2896f06ac7f05d95db.png

94cd9c1562858a5c2362e24069ca83e8.png

02-01-02、转战到http://172.16.33.55/monitoring/login.php,又是登录框,这次爆破个啥呢?

刚才被http://172.16.33.55/news/击中灵魂的时候,心情大好,读了下news,发现姓名Otis,试下爆破他吧。

使用BurpSuite的Intruder功能,和字典/usr/share/seclists/Passwords/Common-Credentials/best110.txt,爆破出Monitoring的账号Otis和密码123456,并成功登录Monitoring网站。

05b55416d1d738940d633bcd11645df8.png

ae5d8f3c3b3b327199c8af07d2607222.png

6051f41df0e0ff8715812d0ccf5e5e4f.png

c0572203d520604be996f03129536953.png

人逢喜事精神爽,竟然爽到想试一下SquirrelMail的账号会不会也是Otis。继续用BurpSuite的Intruder功能,和字典/usr/share/seclists/Passwords/Common-Credentials/best110.txt,爆破出SquirrelMail的账号Otis和密码123456,并成功登录SquirrelMail网站,真是无心插柳柳成荫呀。

666ed4f0a10c56143fbfff713419974c.png

1e6ce11c4b83b8256e63c9b495811a74.png

再次使用命令./41910.sh http://172.16.33.55/webmail/src/redirect.php执行远程代码执行漏洞的EXP,提示Failed to upload the sendmail file.

使用命令vim 41910.sh进行代码审计,发现EXP/tmp/smcnf-exp有成功下载,只是上传失败。查阅SquirrelMail远程代码执行漏洞[2],可能是SquirrelMail的MTA没有设置成Sendmail,或者edit_identity没有设置成true。

翻找整个SquirrelMail也没找到配置项,应该是要后台配置。翻找SquirrelMail里的邮件,是空的,看来不仅RCE不行,信息泄露也不行,难道SquirrelMail这条路是断了?

715edbc9cd48bbdfb7bd46aa8a4669ec.png

75b22bda04f2b2d4eadf62f09619ebc0.png

9ee1f543091bc930037254693c20b5b3.png

02-02、Monitoring:回到Monitoring,发现是个网络拨测网站,如果网络不通就会发送告警邮件。既然我们在Monitoring和SquirrelMail都拿到了用户Otis的账号密码,那么我们在Monitoring拨测的地址,如果网络不通是否就会给SquirrelMail发送告警邮件?前台没有配置页面,看不到是否配置了Otis作为告警邮件接收邮箱,可能要在后台或配置文件配置,我们实际测试一下,发现猜想正确。

633520621a1d8be070a1df73d8a43a68.png

eb07958f33c271278a44769b959ea096.png

f8a04ffd20e546a472513e38a74ab32a.png

如果是用ping来拨测的,那最常见的漏洞不就是命令注入嘛。既然是网络不通才会发送告警邮件,那就构造payload169.254.1.1;id看看是否存在命令注入漏洞,结果告警邮件还是一样,没有带出命令执行结果,难道不存在命令注入漏洞。

77192c2d5cc02614e5e724ebed9893c5.png

那么告警邮件中的HostOneMoreThink,应该是Monitoring在发送告警邮件时,去数据库查出来并写到邮件正文的吧?那最常见的漏洞不就是SQLi和XSS嘛。先试一下价值比较大的SQLi漏洞,构造单引号闭合的payloadOneMoreThink',结果告警邮件没啥异常。

ef09f15e4900796e0496e48d200d539d.png

1581db44c8e266d6a1dbd7ce1b6d7248.png

构造双引号闭合的payloadOneMoreThink",结果告警邮件发不出来了,Monitoring是每分钟发送一封告警邮件的,但现在已经12:32了,告警邮件还停留在12:26。应该是Monitoring在发送告警邮件时,去数据库查询Host Name时报错了所以查询失败,导致整个发送告警邮件的任务都失败了。太好了,发现SQLi漏洞。

8f837e829246330abf68aad627e2e3f5.png

92b8902c40bf3283cb60104fc166815d.png

那就拖数据吧,先看看是啥数据库,前面发现的页面/phpinfo.php可算派上用场了,查看PDO发现用了MySQL和SQLite数据库,那就先试试MySQL的information_schema吧。

需要注意的是,在Monitoring中点击Modify会返回Error,BurpSuite抓包查看发现Host Name OneMoreThink"的双引号被去掉了,在BurpSuite的Repeater中补上双引号,然后在浏览器中打开修改后的请求或响应,就能成功进入拨测任务编辑页面啦。

de4c9cc62ae940ee9e13d84fed41ccc1.png

8b59409ea1ee88ccb9d96bbc60d00721.png

02-02-01、SQLi第一步,确定查询语句的字段数量。使用payload" order by 2#时告警邮件还能正常发出,看来至少有2个字段。

f68f8d05080c4ff700ee1b5867cbb695.png

22a75c7a224114601c646e32c43ebb4f.png

继续往上尝试,看来至少有3个字段。

ed5fd25c26a346a7c719674b59a8df55.png

503de43540d00d61adb7b3cec73b76e2.png

继续往上尝试,到5的时候终于发不出告警邮件了,Monitoring的告警时间已经是13:24了,但是SquirrelMail的告警邮件还停留在13:21,看来查询语句的字段数量是4。

5403cf8061aeaeccafcc18b7288b6d28.png

3169ea5454e2127423b2366dc2f00b5d.png

1a9826b1f5bf7c25d9b0130653bb09fc.png

02-02-02、SQLi第二步,确定查询语句各个字段的数据类型、以及哪些字段会有回显。好家伙,4个字段全部都是字符串类型、而且全部都有回显。

因为告警邮件中Date Time加了双引号,所以不会是日期和时间类型,只能是字符串类型了。而ID和Status倒有可能是数值类型,所以这里4个字段全部都是字符串类型,还真是情理之中意料之外啊。

值得一提的是,经验丰富的人应该能够直接猜到:查询语句至少查询了4个字段,并且至少4个字段会有回显。因为告警邮件中的ID, Host, Date Time, Status就是4个字段。

d40d701acd7aeb52c5de78233766ebf9.png

15b5131c5e2fb804e2513c95a971dab0.png

02-02-03、02-02-04、SQLi第三第四步,爆库爆表。使用payload" union select 1,2,table_name,table_schema from information_schema.tables#,成功从information_schema库的tables表中读出数据库的所有库名和表名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值