Vulnhub SickOs1-2 Writeup
缺乏经验,学习之
0x01 信息搜集
1 |
|
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|1024 66:8c:c0:f2:85:7c:6c:c0:f6:ab:7d:48:04:81:c2:d4 (DSA)
|2048 ba:86:f5:ee:cc:83:df:a6:3f:fd:c1:34:bb:7e:62:ab (RSA)
|_256 a1:6c:fa:18:da:57:1d:33:2c:52:e4:ec:97:e2:9e:af (ECDSA)
80/tcp open http lighttpd 1.4.28
|_http-server-header: lighttpd/1.4.28
|_http-title: Site doesn’t have a title (text/html).
MAC Address: 00:0C:29:CE:AB:B8 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.10 - 4.11, Linux 3.16 - 4.6, Linux 3.2 - 4.9, Linux 4.4
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelTRACEROUTE
HOP RTT ADDRESS
1 0.98 ms 192.168.206.151
两个端口开放80和22
80端口
访问一下80,就一张meme图
查看源码,也没有东西,使用dirb和nikto扫描端口
出现一个test
文件夹,浏览器访问
得知是lighttpd 1.4.28
版本,查看web指纹
没有建设性资料,再于其基础上dirb路径爆破,依然无果,80端口暂放
22端口
hydra进行ssh爆破
1 |
|
均未成功,看来这里存在知识盲区
一番查询后得知,可用curl来服务器探查支持的HTTP方法,就对于仅有的两个页面进行探查
1 |
|
/test/
路径下支持多种方法
0x02 漏洞挖掘与利用
以前只在图解HTTP中听说过,从来没有实际操作过HTTP方法。使用curl直接采用PUT方法,尝试将后门放入服务器
1 |
|
可以看见在test
页面中出现了t.php
用蚁剑连接,连接超时!
一句话中没有中文字符,同时也测试了好几个其他免杀木马,均连接失败,随手传了个phpinfo却能执行
经过验证,后台代码可以执行,但是无法接收,这样也好说,既然传不了那我就直接执行,结果也会失败。
如上图,能看见是服务端错误
- waf拦截
这种一直断连的场景存在waf的可能性很高,于是使用nmap
、wafw00f
、sqlmap
1 |
|
以上的waf探测没有下文
- 点击
test
下的x.php
,使用burpsuite进行拦截,直接在bp中对HTTP报文进行修改,将一句话写入
尝试访问,成了!
我想看看之前为什么会出错,所以继续写入指令cat%20x.php
,然后用bp拦截
上图可见,我们用curl写入的webshell已经不成形了,后续再次写入webshell并cat查看,发现$_GET['pass']
变成了['pass']
,带有$
的部分都被删去了一些,不用说了,看下面的解析。
问题总结
问题的来龙去脉(Kioptrix2014也遇到过)
php一句话的两种写法
"<?php system($_GET['pass']); ?>"
'<?php system($_GET["pass"]); ?>'
第一种:双引号套单引号
$号会被解析,需要转义
第二种:单引号套双引号
$号不会被解析,无需转义
- 好的,我们再次用蚁剑连接能用的webshell,结果继续失败,这里推测进行了拦截,那么还有一条路直接反弹shell
找到kali中的php-reverse-shell.php
文件,调整ip为192.168.206.142
,port为4444
,复制全部代码,粘贴到bp中发送。
kali中nc监听,浏览器中点击reverse-webshell,然而nc中并没有连接
经过查询(这里应该自己慢慢扫描,原因是管理员对iptables or Firewall进行了配置),靶机之开启了443端口进行交互,所以我们将php-reverse-shell
的port设置为443,bp重新发送,nc也监听443端口,点击shell.php
成功拿到反弹shell
0x03 提权&get flag
发现python能用,遂将哑shell升级为交互shell,然后获取一波os信息
1 |
|
用lsb_release -a
查看版本号
wget和gcc靶机上均能使用
kali上searchsploit
查找exp
用bp写入靶机文件,gcc编译后执行,无一有效
遂借鉴walkthrough,etc下存在chkrootkit 0.49,chkrootkit是一款防rootkit的shell脚本,可是其自身也存在漏洞,可以被利用于提权
查看该文件后得到提权思路
把我们提权代码保存在/tmp/update
中,chkrootkit一段时间后便会执行它(通常以root权限)
下面是是exp
1 |
|
等待一段时间后,执行sudo su - root
,拿到root权限,get flag
我们查看一下root下的newRule文件
果然防火墙设置只有22、80、8080、443端口能够进出
0x04 总结
- 深入shell语言
- Linux提权需要总结
- 防火墙阻挡执行端口的流量,这样我们就无法用被阻挡得端口反弹shell
/etc/sudoers
中添加命令的格式:www-data(用户名) ALL=(ALL)NOPASSWORD:ALL
0x0N 参考资料
Walkthrough
获取 SickOS 1.2 Flag (CTF Challenge)
Vulnhub SickOs: 1.2 Walkthrough
cURL
fb 安全工具 | 利用curl 突破服务器限制,进行安全渗透测试
reverse webshell
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!