Vulnhub Sick0s1.1 Writeup

Talk is cheap, show me writeup

用到的工具和知识

nmap、dirb、nikto、google、searchsploit、shellshock、

靶机下载

0x01 信息搜集

nmap探索

开放22/ssh,3128/http-proxy,关闭8080/http-proxy

Google Squid

Squid Cache是HTTP代理服务器软件。Squid用途广泛,可以作为缓存服务器,可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。Squid程序在Unix一类系统运行。

Squid 是支持 HTTP,HTTPS,FTP 等的 Web 的缓存代理。它通过缓存和重用频繁请求的网页来减少带宽并缩短响应时间。Squid 拥有广泛的访问控制,是一个出色的服务器加速器。它运行在大多数可用的操作系统上,包括 Windows,并根据 GNU GPL 许可。

Squid 由于是开源软件,有网站修改 Squid 的源代码,编译为原生 Windows 版;用户也可在 Windows 里安装 Cygwin,然后在 Cygwin 里编译 Squid。

  • 简单地来说,Squid就是一个缓存or代理服务器

我用浏览器直接访问靶机web站点

访问不通,那么根据上面搜集的信息,就说明这个站点需要用自己的代理服务器区访问。

于是我在浏览器用SwitchyOmega设置代理,同时使用dirb,nikto设置代理扫描靶机

找到robots.txt文件,发现/wolfcms,成功进入cms页面,可以看到由用户administrator发表的两篇博客

0x02 漏洞挖掘与利用

进一步侦查,使用dirb爆破/wolfcms下目录

查看所有扫到的目录,发现/wolfcms/doc下的update.txt,显示该wolfcms详细版本是0.8.2

在kali中使用searchsploit搜索wolfcms 0.8.2,无果,搜wolfcms 0.8

查看两个poc,后发现后台登录地址为/wolfcms/?/admin/login

下面的思路是sql注入、爆破

先尝试sql注入,手注三次

到这里思维有些停滞,可能有什么信息丢掉了,回头看了看扫描结果,发现nikto中显示存在一些漏洞

如下:

1
2
3
4
5
6
7
8
9
10
11
+ OSVDB-112004: /cgi-bin/status: Site appears vulnerable to the 'shellshock' vulnerability (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6271).

+ OSVDB-112004: /cgi-bin/status: Site appears vulnerable to the 'shellshock' vulnerability (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6278).


+ Web Server returns a valid response with junk HTTP methods, this may cause false positives.
# 以下会暴露PHP版本,见参考资源[3]
+ OSVDB-12184: /?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY string
+ OSVDB-12184: /?=PHPE9568F36-D428-11d2-A769-00AA001ACF42: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY string
+ OSVDB-12184: /?=PHPE9568F34-D428-11d2-A769-00AA001ACF42: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY string
+ OSVDB-12184: /?=PHPE9568F35-D428-11d2-A769-00AA001ACF42: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY string

看到shellshock,中文译为破壳漏洞,自然要学习一番~

使用shellshock并不能直接进行登入后台,但是可以直接连接服务器

那我先放放ε=ε=ε=┏(゜ロ゜;)┛

只好上网借鉴walkthrough,什么???也是猜的!admin/admin,那我的思路可能进了兔子洞,上来就把用户名定为administrator,后面就麻烦很多

登上管理员,四处看看后台,发现一个文件上传点,上传一句话成功,修改权限为777

蚁剑连接,进入虚拟终端,查看系统基本信息

0x03 提权&GetFlag

查看系统基本信息

四处查看系统及应用配置文件,找到/var/www/wolfcms下的config.php,存在密码和账户

查看用户

发现账户root和sickos

那么我们先要获取一个真实的shell,虚拟终端中不支持某些高级操作

老办法,kali用nc监听端口,靶机上用蚁剑放个reverse-shell.php,设置好ip和port,php -f reverse.php执行,成功连接!

将fake shell升级到交互shell,python -c "import pty;pty.spawn('/bin/bash');"

执行sujohn@123并非root密码,试试sickos,成功

直接用ls -l /root没有权限,之后用sudo ls /root,发现flag文件

再用sudo cat /root/a0216ea4d51874464078c618298b1367.txt,直接查看

搞到flag

0x04 后续学习

part1 提权

上面虽然得到了flag,可是有投机成分,没有提权成功,下面是通过学习前人walkthrough得到的提权方法:

先使用id查看该用户所属组,使用sudo -l查看该用户在sudo下可以执行的命令,命令详解见参考资源[4] [5]

  • sudo -i
  • sudo -s输入密码john@123
  • sudo su输入密码john@123
  • 直接采用/var/www下拥有root执行权限的connect.py提权,参考资源[6]

可以看到sickos用户的id很有意思

它在sudoers内,所以使用sudo可以执行高级命令,之前这一步还是漏掉了,connect.py的执行权限亦然

part2 破壳漏洞

这个放到我的另一篇blog中讲解学习

0x05 总结

  • 需要更深入了解Linux相关知识
  • 不要麻痹,每获得一个新权限或到达某个新场景中,都要重复获取信息

0x06 参考资源

[1]squid配置

[2]squid配置blog

[3]关闭PHP Credits和隐藏的GUID图片Logo彩蛋的显示

[4]sudo wiki

[5]sudo -i & sudo -s

[6]write-up sick-os 使用connect.py,很有趣,不过使用了msfvenom

[7]VulnHub ‘SickOS: 1.1’ 破壳讲的不错


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!